교육 (Today I Learned)/SeSAC

SeSAC 3일차 / SQL 기본(SQL 문-2)

Bay Im 2023. 7. 20. 00:22
SeSAC 3일차(2023-07-19)
SQL 기본(SQL 문-2)

 

- 오라클 연결

Run SQL Command Line 실행 후 conn hr/hr 입력

 

 

데이터 제한
WHERE 절

 

- 비교 연산자

=, <>, >, >=, <, <=

 

BETWEEN n AND m: 경계 값 포함한 두 값 사이

 

IN(set): 값 리스트 중 일치하는 값 검색 (반대는 NOT IN)

ex) IN(100, 101, 201)

 

IS NULL: null 값인지 여부 (반대는 IS NOT NULL)

 

NOT 연산자: NOT IN 같이 앞에 NOT 붙여서 사용 가능

 

LIKE 연산자: 일치하는 문자 패턴 검색, 문자열 값의 와일드카드 검색

% 0개 이상의 문자, _는 하나의 문자를 나타낸다.

ex) LIKE ‘S%’

=> S로 시작하는 문자 출력

 

ESCAPE 식별자로 %, _ 문자 검색 가능

ex) WHERE job_id LIKE ‘%SA\_%’ ESCAPE ‘\’;

=> SA_AAA 형태로 검색

 

AND, OR 연산자: WHERE 절 밑에 작성

 

 

 

데이터 정렬
ORDER BY 절

 

- ORDER BY

행을 정렬한다. SELECT 문의 마지막에 작성

ASC는 오름차순(기본값), DESC는 내림차순

 

 

치환변수: & && 치환을 사용하여 값을 임시로 저장

변수 앞에 &를 붙이면 유저가 값을 입력하도록 할 수 있다.

유저가 매번 값을 입력할 필요 없이 변수 값 재사용 경우는 &&를 사용

 

 

DEFINE 명령어: 변수를 생성하고 값을 할당, UNDEFINE 명령을 사용하여 변수 제거

ex) DEFINE column_name = 200 입력 시 &column_name 변수 사용 가능

 

 

VERIFY 명령어: 치환 변수를 값으로 바꾸기 전후에 치환 변수의 표시를 토글한다.

Ex) SET VERIFY ON

 

 

 

 

 

단일 행 함수를 사용하여 결과물 변경

 

- 대소문자 변환 함수

LOWER(): 소문자로 변환

 

UPPER(): 대문자로 변환

 

INITCAP(): 첫번째 문자는 대문자, 나머지는 모두 소문자

 

 

- 문자 조작 함수

CONCAT(): 문자열 합치기

 

SUBSTR(문자열, 시작위치, 잘라낼 개수): 문자열 잘라내기

 

LENGTH(문자열): 문자열 길이 출력

 

INSTR(문자열, 찾는 문자): 문자 위치 찾기

 

 

- 숫자 함수

ROUND(): 숫자 반올림

 

TRUNC(숫자, 절삭 위치): 숫자 절삭

 

MOD(숫자, 나눌 숫자): 나머지 구하기

 

 

- 날짜 작업

SYSDATE: 현재 날짜 및 시간 반환

ex)

SELECT SYSDATE

FROM dual;

 

 

날짜 연산: +, -, / 등 연산 사용 가능

ex) 날짜 + 숫자 / 24

=> 날짜에 시간 수를 더한다.

 

 

- 날짜 조작

MONTHS_BETWEEN(날짜1, 날짜2): 두 날짜 간의 월 수

 

ADD_MONTHS(날짜, 추가할 월의 수): 날짜에 월 추가

 

NEXT_DAY(날짜, 요일): 지정된 날짜의 다음 날

ex) NEXT_DAY(day_column_name, ‘금요일’)

 

LAST_DAY(날짜): 월의 마지막 날

 

ROUND, TRUNC(날짜, 반올림할 기준): 날짜 반올림, 절삭

ex) ROUND(SYSDATE, ‘MONTH’), ROUND(SYSDATE, ‘YEAR’)

 

 

 

 

 

변환 함수 및 조건부 표현식 사용

 

TO_CHAR(날짜, ‘형식’): 날짜를 문자열로 변환

형식 요소는 YYYY, YEAR, MM, MONTH, MON 등등 존재

ex) TO_CHAR(date, ‘MM/YY’)

 

TO_CHAR(숫자, ‘형식’): 숫자를 문자열로 변환

ex) TO_CHAR(salary, ‘$99,999.00’)

여기서 9는 숫자 위치, 9의 개수로 표시 너비 결정

 

TO_NUMBER(숫자[, ‘형식’]): 문자열을 숫자 형식으로 변환

 

TO_DATE(문자[, ‘형식’]): 문자열을 날짜 형식으로 변환

 

 

- 일반함수

NVL(expr1, expr2): expr1 열이 null이면 expr2 값 반환

 

NVL2(expr1, expr2, expr3): expr1 열이 null이 아니면 expr2 값 반환, null이면 expr3 값 반환

 

NULLIF(expr1, expr2): expr1 expr2가 같으면 null 반환, 다르면 expr1 반환

 

COALESCE(expr1, expr2, … exprn): expr1 null이 아니면 expr1 반환, expr1 null이고 expr2 null이 아니면 expr2 반환, 앞의 표현식들이 모두 null인 경우 exprn 반환

 

 

- 조건부 표현식

SQL 문에서 IF-THEN-ELSE 논리 사용

CASE 식과 DECODE 함수 사용

 

CASE :

CASE expr WHEN comparison_expr1 THEN return_expr1

                  [WHEN comparison_expr2 THEN return_expr2

                   WHEN comparison_exprn THEN return_exprn

                   ELSE else_expr]

END

 

ex)

SELECT column_name

               CASE job_id WHEN ‘IT_PROG’ THEN 1.10*salary

                                    WHEN ‘ST_CLERK’ THEN 1.15*salary

                                    WHEN ‘SA_REP’ THEN 1.20*salary

                 ELSE        salary END   별칭

FROM table_name;

 

 

DECODE 함수:

ex)

SELECT column_name

               DECODE(job_id, ‘IT_PROG’, 1.10*salary,

                                           ‘ST_CLERK’, 1.15*salary,

                                           ‘SA_REP’, 1.20*salary,

                               Salary)

              별칭

FROM table_name;

728x90