방구석 상상코딩

SQL 정리 본문

SQL

SQL 정리

알 수 없는 사용자 2022. 1. 13. 13:15
DML DDL DCL TCL
SELECT
INSERT
UPDATE
DELETE
MERGE
CREATE
ALTER
DROP
RENAME
TRUNCATE
GRANT
REVOKE
COMMIT
ROLLBACK
SAVEPOINT

 

관계형 대수의 일반 집합 연산자 SQL 문법
UNION 연산 UNION
DIFFERENCE 연산 EXCEPT / MINUS
PRODUCT 연산 CROSS JOIN
INTERSECTION 연산 INTERSECT

 

FLOOR (14.5) => 14 입력된 인자 값보다 작거나 같은 정수 값
CEIL (14.5) => 15 입력된 인자 값보다 크거나 같은 정수 값
TRUNC (15.4, 0) => 15 인자1을 소주점N번째 자리(인자2)로 버림하여 반환
ROUND 15.4) => 15 인자1을 소수점 N번째 자리(인자2)로 반올림아혀 반환


NVL ( 칼럼, 0 )

NVL( 수당, 0 ) 
수당이 NULL이면 0 반환


SUBSTR ( 칼럼,부터, 개수 )

SUBSTR( C1, 2, 4 ) 
C1의 2번째 문자부터 4개의 문자 자르기


LENGTH ( )

LENGTH () : 문자열 길이


LTRIM ( 컬럼, '문자' )

LTRIM( C2, '0' ) 
왼쪽부터 '0' 문자 제거 '0'이 아닌 문자를 만나면 나머지 문자열 반환


TRUNC ( 인자 1, 인자 2 )

TRUNC( 인자1, 인자2 )
: 인자1을 소주점N번째 자리(인자2)로 버림하여 반환

TRUNC (15.4, 0) => 15

 

 

ANY ( 인자 1, 인자 2 )

> ANY( 1000, 3000 ) 100보다 크거나, 3000보다 크거나

 

COUNT( )

COUNT(*) : 갯수, NULL 포함
COUNT(컬럼) : 갯수, NULL 제외

 

집계함수

COUNT / SUM / AVG / MIN / MAX 
: NULL 제외

 

DECODE ( 기준, 조건 1, 결과 1, 조건 2, 결과 2 )

DECODE ( 기준, 조건1, 결과1, 조건2, 결과2 ), 모든 조건에 맞지 않는 경우 NULL 반환

DECODE ( C2, 'A', 1, 'B' , 2 )
C2 컬럼이 'A'이면 1을 반환하고, 
C2 컬럼이 'B'이면 2를 반환한다. 
(모두 아닐 경우, NULL 반환)

 

GROUP BY

SELECT 칼럼 // group by에서 사용한 칼럼명, 집계함수, 표현식만 사용 가능
FROM 테이블
GROUP BY 칼럼;

 

ORDER BY (ASC)

 

COLUMN POSITION

SELECT A3, A2, A1
FROM A
ORDER BY 2 DESC, 3 ASC, 1 DESC;
= ORDERBY A2 DESC, A1 ASC, A3 DESC

 

조인조건 없는 경우, 카디션곱으로 처리 

ON : 조인 조건

WHERE : 일반 조건

 

USING

- USING 절에 지정한 칼럼은 ALIAS 사용 불가

잘못 쓴 예시 맞는 예시
SELECT A.A1, B.B2
FROM AA A JOIN BB B
USING(A1);
SELECT A1, B.B2
FROM AA A JOIN BB B
USING(A1);

 

비교연산자(=, <. >, <=. >=. <>)는 단일행 반환 

1행 이상이 반환되면 오류 발생 

 

EXIST ( 서브 쿼리 ) - TRUE/FALSE

서브 쿼리의 결과가 "한 건이라도 존재하면" TRUE,  없으면 FALSE를 리턴

 

LPAD ( 칼럼, 총 문자길이, '문자')

LPAD ( 칼럼, 총 문자길이, '문자' )
: 지정한 길이 만큼 왼쪽부터 특정문자로 채운다

LAPD ( SAL, 4, '0')

UNION / UNION ALL

UNION : 합집합 (중복행 1개로) ( 중복X )

UNION ALL : 합집합 (중복 행 표시) ( 중복O )

 

합집합 / 교집합 / 차집합 / 곱집합

(합집합) UNION UNION / UNION ALL 
(교집합) INTERSECTION  INTERSECT
(차집합) DIFFERENCE EXCEPT / MINUS
(곱집합) PRODUCT CROSS JOIN
NOT EXISTS MINUS
EXISTS INTERSECT

 

RANK / DENSE_RANK / ROW_NUMBER

RANK  동일한 값에 대해서는 동일한 순위
1,  2,  2,  4
DENSE_RANK  동일한 순위를 하나의 등수로 간주 
1,  2,  2,  3
ROW_NUMBER 동일한 값이라도 고유한 순위 부여 
1.  2.  3.  4

 

SUM ( 칼럼 ) OVER ( )

SUM ( 칼럼 ) OVER ( ORDER BY ~  )
: 누적 합계

 

COUNT ( * ) OVER ( ORDER BY ~ )

COUNT ( * ) OVER ( ORDER BY ~ )
: 정렬 순서에 따라 각 행까지의 누적 건수

 

 

SELECT문 처리 순서 

1. FROM

2. WHERE

3. GROUP BY

4. HAVING

5. SELECT

6. ORDER BY 

 

TOP 절

TOP ( expression ) [PERCENT] WITH TIES
: 마지막 행에 대한 동순위 
(= RANK 함수)

( expression ) : 반환할 행의 개수나 백분율 지정 
[PERCENT] 	   : 백분율만큼 행을 반환
WITH TIES	   : 마지막 행에 대한 동순위를 포함해서 반환

 

OFFSET [ ROWS ] 

OFFSET [ ROWS ] 
: 건너뒬 행의 개수를 지정 

OFFSET 3 ROWS;

 

START WITH 절  CONNECT BY 절

START WITH 절  
: 조건을 만족하는 데이터를 시작으로 

CONNECT BY 절
: 조건을 만족하는 데이터를 찾은 후 최종적으로 WHERE 조건으로 필터링 

START WITH ENAME='SAM'
CONNECT BY PRIOR NO=NUMBER

 

PIVOT 절

PIVOT
: 행을 열로 전환

PIVOT ( SAL FOR NO IN (10, 30) );

 

REGXP_SUBSTAR ( )

REGXP_SUBSTAR('ABC', 'A.+') : 최대
=> ABC

REGXP_SUBSTAR('ABC', 'A.+?')  : 최소
=> AB

REGXP_SUBSTAR('ABC', 'AB|CD')
=> AB 또는 CD 

REGXP_SUBSTAR('ABC', 'A(B|C)D') 
=> ABD 또는 ACD

 

LAG( 칼럼, 번째, 기본 )

LAG( 칼럼, 번째, 기본 )
: 파티션별 윈도우에서 이전 몇 번째 행의 값 

LAG ( SAL, 2, 0 )