본문 바로가기

Database/이론

[DB] Read

다음은 CRUD 중 Read입니다.

조회하는 작업인데요.

Select를 사용해서 진행할 수 있습니다.

 

select [distinct] [컬럼명], [컬럼명 as 별칭 || 컬럼명 별칭],

[연산자 사용], [통계함수],...

from [테이블명]

where [조건식]

group by [그룹대상]

having [함수 포함 조건]

order by [정렬대상 ASC : DESC (오름차순 | 내림차순)];

-- 기본값은 오름차순

 

from을 제외하고는

모두 선택부분입니다.

생략이 가능합니다.

여기서 주의할 점은 select 절의 

순서는 섞이면 안됩니다.

Select문을 순서대로 살펴보겠습니다.

 

select * from dec26_snack;

 

테이블을 전체 조회하려면

*을 사용하는데

이것은 테이블 내의 모든 컬럼을 가져온다는 의미입니다.

 

select distinct snack_company from dec26_snack;

 

dstinct를 사용하면 해당 컬럼의 중복값을 제거하고

한 번 씩만 조회하게 됩니다.

 

select snack_price / 100 from DEC26_SNACK;

 

별칭같은 경우에는 select문 안에서 사칙연산 계산이 가능합니다.

이때 컬럼명 자체가 snack_price / 100으로 나오기 때문에

실제 프로그래밍 언어와 연동하다 보면 컬럼명을 이용해서

값을 불러오는 경우가 있는데,

별칭이라는 것을 써서 헷갈림을 방지하는 용도로 사용합니다.

 

select snack_price / 100 as snack_price from dec26_snack;

 

as를 사용해서 별칭을 지정할 수 있고

 

select snack_price / 100 snack_price from dec26_snack;

 

띄어쓰기를 사용해서 바로 별칭을 사용할 수도 있습니다.

 

다음은 연산자인데요.

산술연산자를 먼저 알아보겠습니다.

산술연산자를 사용하려면

먼저 Dual테이블을 알아야하는데

Dual 테이블은 아래와 같습니다.

1. 오라클 자체에서 제공해주는 더미테이블

2. 간단하게 함수를 이용해서 계산 결과값을 확인할 때 사용하는 테이블

 

select 1 + '3' from dual;

 

위 코드를 실행하면 산술 연산을 하게되는데어떤 결과가 나올까요?답은 '4'입니다.다른 언어라면 '13'이 출력될텐데오라클에서는 숫자 우선 연산이기 때문에4가 출력되게 됩니다.오라클에서는 문자를 이어주기 위한 연산자가 따로 있는데바로 '||' (shift + \) 파이프입니다.

 

다음은 통계함수를 살펴보겠습니다.

Oracle에는 쓸만한 내장 함수가 몇 개 있습니다.

먼저 숫자함수가있는데요.

ABS(숫자)는 절댓값을 계산할 때 사용합니다.    => ABS(-4.5)

ROUND(숫자, m) : 숫자 반올림, m은 반올림 기준 자릿수입니다.   =>   ROUND(5.36, 1)

POWER(숫자, n) : 숫자의 N제곱 값을 계산해줍니다.   =>   POWER(2, 3)

TRUNC(숫자, m) : 숫자의 m번째 자리까지 남기고 값을 버립니다.     =>    TRUNC(123.456, 2)

                                                                                                             TRUNC(123.456, -1)

MOD(m, n) : 숫자 m을 n으로 나눈 나머지입니다.    =>    MOD(12, 10)

SQRT(숫자) : 숫자의 제곱근 값을 계산합니다. (숫자는 양수여야함)     =>     SQRT(9.0)

 

이번엔 문자 함수를 살펴보겠습니다.

CONCAT(S1, S2) : 두 문자열을 연결     =>    CONCAT('ABCD, 'EFT)

SUBSTR(S1, N, K) : 문자열의 N번째부터 K만큼의 길이를 반환    =>     SUBSTR('ABCDEFT', 3, 4)

INSTR(S1, S2, N, K ) : S1의 N번째부터 시작해서 찾고자하는

S2가 K번째 나타내는 문자열의 위치를 반환     =>    INSTR('HELLO', 'L', 1, 2)

LPAD(S, N, C) : 문자열 S의 왼쪽부터 지정한 자릿수 N까지

지정한 문자 C로 채워줍니다.    =>    LPAD('ABC', 5, '*')

RPAD(S, N, C) : 문자열 S의 왼쪽부터 지정한 자릿수 N까지

지정한 문자 C로 채워줍니다.    =>    RPAD('ABC', 5, '*')

LTRIM(S1, S2) : 문자열 S1 기준으로 왼쪽에 있는

지정한 문자 S2 제거    => LTRIM('*ABC', '*')

RTRIM(S1, S2) : 문자열 S1 기준으로 오른쪽에 있는

지정한 문자 S2 제거    => RTRIM ('*ABC', '*')

REPLACE(S1, S2, S3) : S1의 지정한 문자 S2를 문자 S3로 변경    =>    REPLACE('JACK AND JUE' , 'J', 'BL')

LENGTH(S1) : 글자수를 세어주는 함수    =>    LENGTH('ㅋㅋㅋ')

LENGTHB(S1) : 글자의 용량(바이트)을 세어주는 함수    =>    LENGTHB('ㅋㅋㅋ')     

 

나머지 연산자는 다음 포스트에서 다뤄보겠습니다!

'Database > 이론' 카테고리의 다른 글

[DB] 집계 / 분석/ NULL 함수  (0) 2024.12.27
[DB] 날짜 함수  (1) 2024.12.27
[DB] DML  (0) 2024.12.26
[DB] Alter  (1) 2024.12.26
[DB] Primary Key  (0) 2024.12.26