SQLD 핵심 요약1

Mina Park·2023년 2월 26일

SQLD

목록 보기
1/2

1. SQL 명령문 개괄

1) 연산순서

  • from - where - group by - having - select - order by

2) 종류

  • DML: select, insert, delete, update
  • DDL: alter, create, drop, truncate, modify
  • TCL: rollback, commit
  • DCL: grant, revoke
  • 📌다음 중 DML이 아닌 것은?

2. select

1) distinct: 집약 기능
2) ⭐alias

  • select절: as 생략가능, 컬럼명에 띄어쓰기 있는 경우(ex. "직원 번호")
  • from절: as 사용불가

3) concat

    • : SQL server
  • ||: oracle
  • 인수는 반드시 2개 ex.concat(A, B)


3. 논리연산자

1) 종류

  • and, or, not

2) ⭐연산순위

  • not => and => or
  • ex) not 조건1 and 조건2 and not 조건3 or 조건4
    => 조건1-1 and 조건2 and 조건3-1 or 조건4
    => 조건new or 조건4


4. SQL 연산자

1) 논리 변환

  • A between 1 and 2 : 1 <= A <= 2
  • A in (1,2,3) : A=1 or A=2 or A=3

2)LIKE 🚩🚩🚩

  • 와일드카드의 의미
    • _ : 미지의 한 글자
    • % : 0이상 글자
  • ex) _L% : 이름 두번째에 L이 들어가는 항목

3) escape

  • 와일드카드인 _, %를 문자로 취급해주는 함수
  • LIKE '%[문자][실제문자로인식시킬문자]%' ESCAPE '[문자]'
  • ex) ename like '%@%' escape '@(아무 문자 가능)' => @ 다음에 오는 문자()를 문자로 취급

4) Rownum(oracle), Top(SQL server)

  • Rownum의 특징: where절에서 rownum = 1 을 포함
  • Top의 특징: select Top(n) 컬럼명 => 해당 컬럼의 상위 n개만 추출
  • ex)
    select empNo, sal
    from emp
    where rownum <= 3
    order by sal desc
    => ⭐ order by가 가장 마지막에 실행됨( rownum에 의한 조건절이 실행되므로 먼저 결과값을 얻은 후 정렬)

5. NULL 🚩🚩🚩

1) 정의: 부재, 모르는 값
2) 산술연산

  • null + 2 = null
  • null - 4 = null
  • null X null = null
    3) 비교연산
  • null = null
  • null = 2
  • 전부 알수없음(unknown)
  • where절에 들어갈 경우 false와 같이 동작함
    4) 정렬상 의미
  • oracle: 무한대(null이 마지막에 나옴)
  • SQL server: -무한대(null이 맨 처음에 나옴)
    5) ⭐관련 연산
  • NVL(값1, 값2): 값1이 null이면 값2, 아니면 값1
  • NVL2(값1, 값2, 값3): 값1이 null이면 값3, 아니면 값2
  • ISNULL(값1, 값2): 값1이 null이면 값2, 아니면 값1
  • NULLIF(값1, 값2): 두 값이 같으면 null, 다르면 값1
  • COALESCE(값1, 값2, 값3...): null이 아닌 첫번째 값

6. 정렬

1) ⭐정렬의 특성

  • 가장 마지막에 실행
  • 쿼리 성능이 느려질 수 있음
  • null값과의 관계

2) 컬럼번호로 정렬

  • 출력되는 컬럼의 수보다 큰 값은 불허(오류 발생)

3) 인수 2개의 정렬

  • ex) sal desc, ename asc

4) 출력되지 않은 컬럼명으로 정렬 가능

  • ex) select ename from emp order by sal (O)

7. 숫자 함수

  • Round(숫자값, 반올림할 자릿수)
  • ex) ROUND(1234.56789 ,1)
    2) Ceil(oracle), Ceiling(SQL server)

8. 문자열 함수

1) upper, lower
2) LPad, Rpad
3) LTrim, RTrim
4) substr, nstr

9. 날짜 함수

1) To_char, To_date

  • 📌 다음 중 데이터의 형변환을 일으키는 함수는?

2) 현재시간 출력

  • Sysdate(oracle), Getdate()(SQL server)

3) 날짜 데이터 + 숫자

  • ex) 날짜 + 100 => 100일 이후: 숫자는 기본적으로 day로 인식

10. DECODE, CASE

  • case 함수 사용법
    • case when 조건1 then 출력1 when 조건2 then 출력 2 end as xxx
  • ⭐ else가 없을 경우: 조건1, 조건2를 만족하지 않는다면 null이 출력됨

11. 집계함수 🚩🚩🚩

  • null과의 관계
ABCA+B+C
nullnull1null
3227
null23null

sum(A) = 3
sum(B) = 4
count(A) = 1
count(*) = 3
sum(A+B+C) = 7 => 새로운 컬럼을 생성한 뒤 더해줘야 함

  • ⭐sum(A)+sum(B)+sum(C) vs sum(A+B+C)

12. GROUP BY 🚩🚩🚩

  • 집약 가능
  • 그룹수준의 정보를 바꿈
  • having: group by의 조건식

13. JOIN

1) natural join, using

  • 중복된 컬럼이 사라지고 1개만 출력됨
  • ⭐중복된 컬럼이 제일 앞에 등장함
  • ⭐using의 경우 alias 사용 불가, natural join은 사용 가능
    2) left outer join
  • ⭐A left join B : Acoll = Bcoll(+)
    3) 조인순서
  • from A, B, C => A,B를 먼저 조인하고나서 C를 합침

14. 서브쿼리

1) ⭐위치에 따른 서브쿼리 사용법

  • select절 => scalar
  • from절 => inline view라고 함 메인쿼리의 컬럼 사용가능
  • where절 => 거의 모든 서브쿼리(중첩 서브쿼리)
  • group by절 => 사용불가
  • having절 => 거의 모든 서브쿼리(중첩 서브쿼리)
  • order by절 => scalar

2) 서브쿼리 동작방식
3) in, any/some, all, exist의 의미


15. 집합연산자

  • union: 합집합(중복데이터 x)
  • intersect: 교집합
  • minus(Except): 차집합
  • union all: 중복데이터 O, 정렬작업 X, 속도가 빠름
  • union vs union all => union all이 더 빠름

16. DDL

1) ⭐TCL과의 연관성

  • truncate(구조는 남아있음) vs drop(구조도 삭제)
  • truncate(DDL) vs delete(DML)

17. DML

  • insert, update, delete: TCL(commit, rollback)과의 연관성
  • merge
    📌 오류 상황은? ex) insert into A (1, 2, 3) values (1, 2)

18. ⭐제약조건

  • PK: unique + not null
  • unique
  • not null

19. DCL

  • grant
  • revoke
  • role의 특징(사람에게 부여, 권한이 필요...): 명령어는 아니고 object의 하나
  • on, to

20. VIEW

  • 독립성: 기존 테이블의 구조가 변경되어도 뷰를 따로 업데이트할 필요 없음
  • 편리성
  • 보안성
  • SQL 명령문을 저장하므로 기존 테이블보다는 저장용량이 적음

21. 그룹함수 🚩🚩🚩

1) 종류

  • roll up
  • cube
  • groupsets
  • grouping(최근 출제빈도 낮음)
    📌 다음 결과값을 도출하기 위해 사용한 그룹함수는?

2) 3개 함수의 비교
ex) rollup (A,B) != rollup (B,A)
ex) cube (A,B) == cube (B,A)

  • null 다 찾기
  • 총합행의 유무 찾기
    • 없음: groupingsets
    • 있음: roll up(한쪽 계층만 나옴), cube(양쪽 결과가 다 있음)

22. TCL

  • commit, rollback
  • auto commit off
  • begin transaction
  • DDL의 커밋기능은 없음

0개의 댓글