개발여행의 블로그
[SQLD] 요약 정리 본문
이 글은 SQLD 최종 정리강의 1편 - SELECT문장 ~ 트랜잭션 관리 언어(TCL). 깡마SQLD 강의를 보며 정리한 글입니다.
모든 저작권은 깡마SQLD에 있습니다.
[ 숫자 함수 ]
ROUND - 지정한 자리에서 반올림하는 함수
ROUND(숫자, 반올림할 자리수)
두번째 인수에서 0은 소수점 첫째 자리이다.
예) 두번째 인수 0일 때 : 소수점 첫째 자리에서 반올림
예) 두번째 인수 -1일 때 : 정수 첫째 자리에서 반올림
예) 두번째 인수 1일 때 : 소수점 둘째 자리에서 반올림
ceil (oracle), ceiling (sql server) - 올림값을 반환하는 함수
문자열 함수
uppper
lower
LPAD
RPAD
LTRIM
RTRIM
substr
instr
날짜 함수
TO_CHAR : 형변환 함수
TO_DATE : 형변환 함수
sysdate (oracle) / getdate(sql server)
날짜데이터 + 100 = 날짜데이터 + 100일(day로 인식)
DECODE / CASE
case에서 else가 없는 경우, 다른 when을 만족하는 조건이 없을 때 null을 반환
집계 함수
★null과의 관계 중요
A | B | C |
null | null | 1 |
3 | 2 | 2 |
null | 2 | 3 |
· SUM(A) = 3
· SUM(B) = 4
· COUNT(A) = 1
· COUNT(*) = 3
· SUM(A+B+C) = 7
☞ SUM(A+B+C) 와 SUM(A) + SUM(B) + SUM(C)의 차이 알아두기
A | B | C | A+B+C |
null | null | 1 | null |
3 | 2 | 2 | 7 |
null | 2 | 3 | null |
GROUP BY
· 집약 기능이 있다.
· where 다음에 실행된다.
· 그룹 수준 정보로 바꾼다.
JOIN
① natural join / using
=> 중복된 컬럼이 사라진다.(하나로만 출력)
=> 중복된 컬럼이 가장 앞에 나온다.
② left outer join
-- 같은 결과 리턴
SELECT * FROM A LEFT OUTER JOIN B
ON A.col1=B.col1
SELECT * FROM A, B
WHERE A.col1=B.col1(+)
③ join 순서
SELECT * FROM A, B, C
A와 B를 먼저 조인하고, A와 B를 조인한 테이블과 C를 조인한다.
1) A + B ( A+B를 AB라고 정의 )
2) AB + C
Subquery
① ★subquery가 들어갈 수 있는지 파악
1) select : 단일행 서브쿼리 중 하나인 스칼라 서브쿼리
2) from : inline view(메인 쿼리의 컬럼 사용 가능)
3) where : 거의 모든 서브쿼리(중첩 서브 쿼리)
4) group by : X
5) having : 거의 모든 서브쿼리(중첩 서브 쿼리)
6) order by : 스칼라 서브쿼리
· IN
· ANY / SOME
· ALL
· EXIST : 존재 하면 TRUE, 0 rows일 경우 FALSE
집합 연산자
union → 중복 테이터 X, 정렬 작업 O, 느림
union all → 중복 테이터 O, 정렬 작업 X, 빠름
intersect → 정렬 작업 O, 느림
minus (oracle) / except (sql server) → 정렬 작업 O, 느림
DDL
① TRUNCATE VS DROP
→ TRUNCATE : 입주민 철거의 의미. 따라서 구조가 남아있다.
→ DROP : 건물 철거의 의미. 구조도 삭제된다.
② TRUNCATE VS DELETE (DDL 과 DML)
→ DDL 과 DML은 항상 rollback, commit과 연관해서 나온다.
DML
TCL rollback, commit과 항상 연관지어 나온다.
INSERT
UPDATE
DELETE
MERGE : 기출문제 37회 참고
제약 조건
★ 기억해야할 사항
PK : unique + not null
UNIQUE
NOT NULL
DCL
grant, revoke의 정의, 문법 (onto)
with admin, with grant option
role의 특징
role은 object 중 하나
VIEW
이점
① 독립성 : 기존 테이블의 구조가 변경되어도 view를 따로 업데이트 할 필요는 없다. (실제 테이블과 항상 동기화)
② 편리성
③ 보안성 : 원하는 정보만 줄 수 있고, 나머지 정보는 숨겨서 줄 수 있다.
그룹 함수
★ 기억해야할 사항
roll up
cube
groupingsets
grouping
roll up | roll up(A,B) | 같은 결과 X |
roll up(B,A) | ||
cube | cube(A,B) | 같은 결과 O |
cube(B,A) |
표를 제시한 후에 빈칸을 두고 들어갈 것이 roll up인지 cube인지 판단
1) null 다 찾기
2) 총합행 있는지 찾기
→ X : groupingsets
→ O : roll up과 cube 중 하나.
roll up - 한쪽만 결과가 나와 계층으로 나옴, 행의 수가 적어보일 때
cube - 양쪽으로 결과 나옴, 행의 수가 많아보일 때
TCL
commit과 rollback
auto commit off
and
Begin transaction
=> DDL의 commit 기능을 없앤 것