본문 바로가기

SQL

[ SQLD ] 빈출 개념 정리 #1

1. SQL 연산순서

  • FROM
  • WHERE
  • Group by
  • Having
  • Select
  • Order by
  • DML : Select, insert, update, delete (데이터 조작어)
  • DDL : Alter, create, modify, drop (데이터 정의어)
  • TCL : Rollback, commit (데이터 제어어)
  • DCL : Grant, revoke (트랜잭션 제어어)

 

2. Distinct

어떤 컬럼값들의 중복을 제거한 결과를 출력한다.

Select distinct col from table;

Select distinct col1,col2 from table; 의 경우엔 col1과 col2의 값이 모두 같지 않은 것만 출력함 (주의)

 

3. Alias

Select 절에서 사용가능, where 절에서는 사용불가!!

Select col as name from table ; = select col name from table;

 

4. concat

Select col1 + col2 + col3 from table; (SQL Server)

Select col1 || col2 || col3 from table; (oracle)

Select concat(col1, col2) from table; *연산자가 2개!! 기억!!

 

5. 논리연산자

NOT : ~가 아니다

AND : A 그리고 B (둘다 만족)

OR : A 또는 B (둘 중 하나만 만족해도 OK!!)

 

6. SQL 연산자

A between B and C : B <= A <= CA in (1,2,3) : A=1 or A=2 or A=3A like '_ble*' : A의 값 중 2,3,4 번째 값이 ble인 모든 데이터 출력

 

7. escape

and email like '@_%' escape '@'* : 아무 문자나 가능

 

8. rownum, top

oracle에선 where절 옆에 rownum

SQL server의 경우 select 옆에 top

 

9. null의 정의

모르는 값, 정의되지 않은 값 (공백이나 0과는 다르다)

산술연산에서 null이 들어가게 되면 null이 출력된다.

*null +2', null*4, null + null 모두 결과는 null

 

조건절에 null이 들어가게 되면 false를 반환함

 

*null = null, null = 2

 

집계함수(sum, count, min, max...)에서 null은 데이터 대상에서 제외된다.

정렬시에는 오라클에서는 가장 큰 값이 되고, SQL Server에서는 가장 작은 값이 된다.

 

Nvl (col, 0) : col이 null이면 0 반환, 아니면 col 반환

Nvl2 (col, 1, 0) : col이 null이면 0 반환, 아니면 1 반환

Isnull (col, 0) : col이 null이면 0 반환, 아니면 col 반환

Nullif(col, 0) : col이 0이면 null 반환, 아니면 col 반환

Coalesce(col1, col2, col3) : null 아닌 첫번째 값 반환

 

10. 정렬

느려질 수 있다

가장 마지막에 실행

null이 어디에 오는지

 

컬럼명으로 정렬, 앞의 기준이 같을 때 그 다음 컬럼으로 정렬

기본값은 asc (오름차순), desc는 내림차순

Order by col1, col2 desc

 

출력순서 (번호)로 정렬, select 절의 출력순서로 정렬순서를 지정

Order by 2, 1 desc 

 

 11. 숫자함수

Round (222, 45, 1) 소수점 둘째자리에서 반올림하여 첫째자리까지 출력

Round (225, 67, 0) 소수점 첫째자리에서 반올림하여 정수만 출력

- 1 파라미터는 1의 자리에서 반올림하여 정수를 출력

 

Ceil (oracle) / ceiling (SQL Server) 올림함수, 파라미터 사용법은 round와 같음

Floor : 버림함수, 파라미터 사용법은 round와 같음

 

12. 문자함수

Lower , upper : 소문자로, 대문자로.

Trim, ltrim, rtrim : 양쪽공백제거 왼쪽, 오른쪽 공백제거

Lpad, rpad : 특정 자리를 정하고, 왼쪽/오른쪽의 공백을 채워주는 함수

Select lpad ('A' 5, '*') from dual;

****A, rpad면 A****

Substr : SELECT SUBSTR('korea',2,2) FROM DUAL; or이 출력

Instr : SELECT INSTR ('CORPORATE FLOOR','PO') AS idx FROM DUAL; 4가 출력

 

13. 날짜함수

To_char : 날짜형 데이터를 문자로 출력

 - Select to_char (sysdate, 'YYYY MM DD') from dual;

 

To_date : 문자형 데이터를 날짜형으로 출력

- select to_date ('2022-09-22') from dual;

 

sysdate (oracle), getdate() (SQL Server)

 

14. 조건문

Decode

- select decode (col1, 'A',1,'B',2,3) from dual;

- col이 A면 1, B면 2, 아니면 3

 

case

case when col='A' then 1

         when col='B' then 2

         else 3 end; 서로 같다.

 

case col when 'A' then 1

        when 'B' then 2

        else 3 end;

 

15. 집계함수

Count, min, sum, max 등

- null은 포함되지 않는다.

- (1, null, 2, 3, null)의 데이터를 기준으로 결과는 다음과 같다.

 

Count () : 3

Sum () : 6

Avg() : 2

Min() : 1

Max() : 3

 

>  Select sum (col1 + col2 + col3) from dual;

여기에서 먼저 sum을 생각하지 말고 col1 + col2 + col3을 먼저 생각해보면 첫번째 행은 null + null + 1 이기에 null이 반환되고, 마지막 세번째 행도 마찬가지다. 그러므로 두번째 행의 2+3+2의 값인 7이 결과가 된다.

반대로 sum(col1) + sum (col2) + sum (col3)의 값은 3+3+3이므로 9가 출력된다. 이 차이를 알아야 함.

 

16. 그룹바이 group by

집약기능을 가지고 있음 (다수의 행을 하나로 합침)

Group by 절에 온 컬럼만 select 절에 올 수 있음


소스 참조

SQL 쪽집게 강의 44개 핵심포인트 : https://youtu.be/BQxAxMnHByU?si=AHZj5Xbu-jSugM9e 

위 강의를 보고 정리했습니다.