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;
'교육 (Today I Learned) > SeSAC' 카테고리의 다른 글
SeSAC 6일차 / SQL 기본(SQL 문-5) (0) | 2023.07.25 |
---|---|
SeSAC 5일차 / SQL 기본(SQL 문-4) (0) | 2023.07.22 |
SeSAC 4일차 / SQL 기본(SQL 문-3) (0) | 2023.07.21 |
SeSAC 2일차 / SQL 기본(커맨드 명령, SQL 문-1) (0) | 2023.07.19 |
SeSAC 1일차 / 데이터베이스 개론 (0) | 2023.07.18 |