SQLD 최종 정리 강의 [김강민SQLP]

 

해당 내용은 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