해당 내용은 SQLD 최종 정리 강의 [김강민SQLP]을 기반으로 작성되었습니다.
1. 순서 정렬 ( from - where - group by - having - select - order by )
2. SQL 문법
DML ( select, insert, delete, update )
DDL ( alter, create, modify, drop )
TCL ( rollback, commit )
DCL ( grant, revoke)
3. DML - select문
distict (집약) : 중복된 값이 존재할 때 중복 없애주어 집약해 주는 것
10 10 10 30 20 20 30 40 50 -> 10 20 30 40 50 |
alias : as 생략가능, 칼럼명에 띄어쓰기 있는 경우 " " 사용
concat : + (SQL server), || (Oracle)
concat( ), ( ) 함수 사용 시 인수가 꼭 2개
4. 논리 연산자
A and B - 둘 다 yes
A or B - 둘 중 하나
not A B - 놉
5. 연산자 계산 순위
Not 조건 (not 인 조건을 not이 아닌 상태로 먼저 전환)
And 조건 (and 조건끼리 계산)
Or 조건 (마지막)
6. SQL 연산자
A Between 1 and 2 : 1 <= A <= 2
A in (1,2,3) : A = 1 or 2 or 3
LIKE "_라면" : 라면 앞에 글자 1개만 있는 라면 출력 [진라면]
LIKE "라면%" : "라면 + 아무 글자" 시작이 라면인 데이터 출력 [라면 큰 컵]
LIKE "_ _라면%" : "_ _라면 + 아무 글자" [짜장라면 큰 컵]
LIKE '라면' : 글자 라. 면. 만 있는 데이터 출력 [라면]
LIKE "% 라면% 컵%" : 어느 위치에 있는지 모르지만 문장 중에 '라면'과 '컵'이 있는 데이터 출력 [00라면 작은 컵]
WHERE col2 LIKE 'A_A' escape : 'A@_A'
7. ROWNUM (오라클) / TOP (SQL server)
- 순서
SELECT EMPLOYEE, SALARY
FROM EMP
WHERE ROWNUM <= 3
ORDER BY SALARY [가장 마지막에 적용]
8. NULL의 정의
1. 부재, 모르는 값
2. 산술연산, 비교연산
3. 정렬상 의미
- 오라클 : ∞
- SQL server : - ∞
4. 널뛰기, 같이 놀자, 널 아닌 첫 번째 값
널뛰기 - nvl(값1, 값2) - isnull(값1, 값2) - nvl2(값1, 값2 , 값3) |
값1 isnull -> 값2 아닐 경우 -> 값1 값1 is null 값3 is not null 값2 |
같이 놀자 - nullif(값1, 값2) |
같으면 null 다르면 값1 |
널 아닌 첫번째 값 - coalesce(값1, 값2, ....) |
맨 처음 값 (null이 있으면 null 제외 처음 값) |
9. 정렬
1. 정렬의 특성
- 가장 마지막에 실행
- 성능이 느려질 가능성
- null값과의 관계 (오라클에서는 무한대로 취급될 수 있다)
2. 칼럼 번호 정렬
- 출력되는 칼럼의 수보다 큰 값 불허
3. 인수 2개 정렬
- orderby slary desc, ename acs (sell이 같으면 ename 오름차순)
4. 출력되지 않은 칼럼 기준으로 정렬 가능
- select ename orderby salary
10. 숫자 함수
1. Round 자릿수
- Round(136.94) x : x에 들어갈 인수가 뭔지
2. ceil (오라클) / ceiling (sql server)
11. 문자열 함수
1. upper / lower : 대소문자 바꾸는 함수
2. LPad / RPad / LTrim / RTrim : 실습해 보기**
3. substr / instr : 실습해 보기**
4. replace 함수
12. 날짜 함수
1. to_char : 실습해 보기**
2. to_date : 실습해 보기**
3. sysdate(오라클) // getdate(sql)
4. 날짜 데이터 + 100 = 날짜부터 100일 이후
자주 나오는 문제 : 다음 중 데이터의 형변화를 일으키는 함수
13. decode / case ** : 실습해 보기
when then <- 조건 1
when then <- 조건 2
else
end
만약 else가 없는 경우(둘 다 만족 안 한 경우), null값 반환
14. 집계함수
1. null과의 관계
A | B | C | sum(A+B+C) = 7 | |
null 3 null |
null 2 2 |
1 2 3 |
null 7 null |
|
sum(x) | sum(A) = 3 | sum(B) = 4 | ||
count(x) | count(*) = 1 | count(*) = 3 |
- 차이점 ****
sum(A+B+C) | sum(A) + sum(B) + sum(C) |
15. GROUP BY
- 집약기능
- 순서: 맨 마지막 적용
- 그룹수준의 정보로 바꾼다.
16. JOIN
1. natural join & using
- 중복된 컬럼 "하나만"
- 중복된 칼럼이 제일 앞에 나타남
- join 할 때 alias 사용 안함
2. left outer join
A left outer join B
3. join 유의점
- join 하면 할 수 록 뚱뚱해짐 ( = 칼럼이 늘어남)
4. 테이블 3개 join 순서
FROM A,B,C 일 때
1. join [A] & [B]
2. join [A,B] & [C]
17. 서브 쿼리 ** 실습해보기
SELECT -> scalar 서브쿼리만 가능
FROM -> inline view -> 메인쿼리의 칼럼 사용 가능
WHERE -> 중첩서브 쿼리 (거의 모든 서브 쿼리 가능)
GROUP BY -> X
HAVING -> 중첩서브 쿼리 (거의 모든 서브 쿼리 가능)
ORDER BY-> scalar 서브쿼리만 가능
예시
select
from A
where (
select
from B
A. col1
)
in
any / some
all
exist '1' / 'x' / 'a' -> True
0 rows -> False
18. 집합연산자
union all | union | intersect | minus(Except) |
A B 합치는데 가운데 중복 ㅇ | A B 합치는 데 가운데 중복 x | A B 겹치는거 | A - B 에서 남는 A |
중복데이터 o , 정렬 작업 x, 빠르다 | 정렬 작업 o, 느리다 |
19. DDL -> TCL
truncate | drop |
입주민 퇴거 (건물 구조 남아있음) | 건물 철거 (건물 구조 삭제) |
truncate | delete |
DDL | DML |
rollback, commit 연관되서 나옴 |
20. DML
insert
update
delete
-------------
merge
21. 제약조건
P.K = unique + not + null
unique
notnull
22. DCL
grant
revoke
role 특징 : 명령어 x , 객체 (object)임
문법 onto
23. view [독편보]
독립성 : 기존 테이블의 구조가 변경되어도 뷰의 구조도 같이 변경된다.
편리성 : 테이블 계속 조작할 필요없다. 쓸땜마다 나온다.
보안성 : 원하는 정보만 다루고 필요없는 건 숨길 수 있다.
24. 그룹함수
roll up : 인수가 2개인 경우 (A,B) 와 (B,A)가 같은가 => 다른 결과!
cube : (A,B) 와 (B,A)가 같은가 => 같다!
grouping sets :
grouping (1년동안 안나옴)
표를 주고 그룹함수중에 무엇인지 찾기
1. null 다 찾기
2. 총합행이 있냐
o -> roll up / cube
양 쪽으로 결과가 둘 다 나오면 : cube
( + 행의 수가 많아 보이면)
한 쪽만 결과가 나오고 계층으로 나오면 : roll up
( + 행의 수가 적어 보이면)
x -> groupingsets
25. TCL
commit
rollback
auto commit off and begin transaction : DDL의 commit 기능 없애는 것
26. 윈도우 함수** 무조건 문제 풀기
rows vs range : 차이점
range : 범위기 떄문에 같은 값있을 수 있음
rank : 중복 건너뛴다 (1, 1, 3, 4)
dense.rank : 건너뛰기 x (1, 1, 2, 3)
-- 의미 잘 보기 --
patition by
order by
27. 계층형 질의
1. [프자부] prior 자식데이터 = 부모데이터
= ( 부모데이터 = prior 자식데이터 )
2. [부자순] 부모 데이터에서 자식으로 가는 겨웅 : 순방향
3. Prior은 현재 값의 윗 레벨이다? ??
28. 절차형 PL / SQL
1. Exception -> 생략가능
2. Procedure vs Trigger vs User Defined Function
Procedure | Trigger | User Defined Function |
반드시 값 안나옴 | commit roolback (x) dml 많이 사용함 |
반드시 값 나옴 |
29. 데이터 모델링
1. 데이터 구조화 : 업무에만 집중해서 정보 시스템을 만드는 것
절차도에 따라 프로그래밍이 된다 책 판다 -> 돈 받는다 -> 매출 오른다
2. 데이터 "자체", "관계" : 유기체적으로 업무 연결 -> 관계형 데이터베이스
서점 -> 광고업무
-> 배송업무
3. 객체지향 : 객체로 묶어서 분류 [잘 안씀]
30. 엔터티
- 관리하고자 하는 대상 -> 엔터티가 된다.
- 특징 :
1) 인스턴스가 2개 이상이어야한다.
2) 관계 하나 이상
3) 업무에 사용되고 업무 프로세스에 이용되어야 한다.
- 분류 :
1) [유개사] 유형 개념 사건
2) [기중행] 기본 중심 행위
- 속성 : 엔터티 내에서 instance의 특성
- 분류 : [기설파] 기본 설계 파생 속성
31. 도메인
- 데이터 유형, 크기, 제약조건 : check, primary key, 값의 범위
32. 관계
- IE 표기법 vs Barker 표기법
33. 식별자
1. 식별자 / 비식별자 관계 ERD
----- 비식별자
___ 식별자
2. 주 식별자 특징 [유최불종]
유일성 : instanace를 유일하게 구분할 수 있는 속성
최소성 : 여러가지 속성을 묶어서 식별자가 가능한데 그게 최소여야 함
불변성 : 한 번 만들어 놓으면 바뀌면 안된다.
존재성 : null이 허용되지 않는다.
[유최불종]을 다 만족하면 후보키가 될수있고 그중 메인인 것이 기본키 /대체키가 될 수 있다.
34. 식별
식별 | 비식별 | |
강한관계 | 약한관계 | |
단점 | PK 속성 수 증가하므로 SQL 구문 복잡 |
불필요한 JOIN이 많아져서 느려짐 |
ERD 표기법 | ________ (실선) | ------------ (점선) |
35. ERD 서술 규칙
- 시선 : 좌상 -> 우상
- 관계명 : 반드시 표기 안해도 됨
- UML : 객체지향에서만 사용됨
36. 성능 데이터 모델링
1. 아키텍쳐 모델링 [건축] : 데이터베이스 구조를 계속 바꿈
- 성능 개선을 위해 테이블 자르거나, 분활하거나, 파티션 나누거나 등등
2. SQL 명령문
- 조인 수행 원리 ***
- optimizer
- 실행계획**
37. 정규화***** 예제,방법 공부해보기
1. 방법
1차 원자성
2차 부분함수 종속 제거
3차 이행함수 종속 제거
bcnf 복합키가 2개 있을 때 뭘 뜯어낸다?
2. 이상현상
삽입이상
삭제이상
3. 성능
- 조인 때문에 느려질수있다.
- INSERT, UPDATE 늘어날 수 있음
38. 반정규화
1. 데이터 무결성 해칠 수 있다.
대상분석 | - 대량 범위 | -> | - 응용시스템 변경 | -> | - 테이블 반정규화 | - 병합 | - 1:1 - 1:N - 슈퍼 / 서브타입병홥 |
- 분할 | - 부분 테이블 - 통계 테이블 - 중복 테이블 |
||||||
- 범위 처리 | - 클러스터링 / 인덱스 | - 속성 반정규화 | - 파생 칼럼 - 오류 칼럼 - 이력 칼럼 - PK -> 속성 - 중복속성 |
정의랑 뭐가 있는지 암기! | |||
- 통계 처리 | 뷰 테이블 처리 | - 관계 반정규화 | - 중복 관계 추가 |
39. 슈퍼 / 서브타입
- 용량
1. 적은 경우 - one to one : ㅁ-ㅁ-ㅁ (개별로 하나하나)
2. 큰 경우 - 트랜잭션 유형으로 분류가 된다.
- 트랜잭션
1. 공통 / 차이점 : plus 타입
2. 전체 통합 : 싱글 타임
- 다음중 그림을 보고 언제 사용하는 타입인가
40. 분산 데이터베이스
- 데이터 무결성 해침
- 투명성
41. 조인 수행 원리****** 진짜 중요!!
1. NL
- 랜덤 액세스
- 대용량 소트 작업 유리
2. Sort merge
- 조인키 정렬
- 등가 / 비등가
3. Hash
- 등가 JOIN ONLY!!
- 선행테이블 조그만함
- hash 처리 별도 공간 필요! -> 데이터를 은근 잡아먹음
42. 옵티마이저 (별로 안나옴)
- CBO : "경로"
- RBO : "규칙"
43. 인덱스
- 언제 사용하는지 (부정형, LIKE함수, 묵시적 형변한)
- 인덱스 사용 시 느려지는 것 ( 성능이 저하되는 것) : insert, updae, delete
44. 실행계획
- 시행 순서 **
1 ┘ 2 ┘ 3 ┘ 4 ┘ 5 ┘ |
실행순서 3-2-5-4-1 |
45. 정규화
- PIVOT
- UNPIVOT
- MERGE
'자격증 > SQLD' 카테고리의 다른 글
SQLD 노랭이 문제풀이 1~10 [어쩌다DBA] (0) | 2024.05.24 |
---|