본문 바로가기
프로그래밍 공부/DBMS

[lesson] DBMS - 파생 문법 2탄 (SQL 실행순서, SEQUENCE, SUB-QUERY, ROWNUM)

by Luna_lua 2021. 8. 12.
반응형

★Point! SQL 실행순서
FROM> WHERE> GROUP BY > HAVING > SELECT > ORDER BY

 

 

<SEQUENCE>

-- 시퀀스 선언 ( 2번줄만 작성하면 나머지 설정은 DEFAULT로 들어가진다. 시작숫자,증감 모두 1로 설정)
CREATE SEQUENCE SEQ --시퀀스이름 SEQ
INCREMENT BY 1 --증감숫자 1
START WITH 1 --시작숫자 1
MINVALUE 1 --최소값 1
MAXVALUE 1000 --최대값 1000

-- 시퀀스 사용 예제
INSERT INTO E_TABLE 
NUM VALUES(SEQ.NEXTVAL);

 

<SUB QUERY>

서브쿼리는 어디 절에서 사용하느냐에 따라 이름을 다르게 부릅니다.

(기본은 동일하게 쿼리 안에 쿼리가 더해지는것으로 보면 됩니다.)

1. FROM절 : IN LINE VIEW
2. SELECT절 : SCALAR
3. WHERE절 : SUB QUERY

 

-- PLAYER 테이블에서 TEAM_ID가 'K01'인 선수 중 POSITION이 'GK'인 선수
-- SELECT가 2개 필요

-- 1번 풀이 (WHERE절로 추출)
SELECT * FROM PLAYER
WHERE TEAM_ID = 'K01' AND "POSITION" = 'GK'

-- 2번 풀이 (SUB QUERY로 추출)
SELECT * FROM
(
	SELECT * FROM PLAYER WHERE TEAM_ID = 'K01'
)
WHERE "POSITION" = 'GK';

 

<ROWNUM>

게시판 TITLE의 정보를 가지고 있는 테이블이 있습니다. TABLE_NUM으로 시퀀스를 주어(1부터 순서대로 값이 상승하게되는 문법입니다.) 값을 넣고 있는데 게시물이 중간중간 삭제되어 시퀀스가 규칙성이 사라졌을때, ROWNUM을 사용하여 각 튜플들에게 규칙성을 다시 부여할때 사용합니다.

 

-- ROWNUM (SELECT문에서 ROWNUM이라고 조회만 하면 자동으로 새로 시퀀스와 같이 순서대로 번호를 부여해준다.)
-- EMP테이블에서 SAL를 내림차순으로 정렬한후 ROWNUM을 붙여서 조회한다.
SELECT ROWNUM, EMP.* FROM EMP;


-- ROWNUM은 원래 있는것이 아니라 만들어주는것이어서 정렬과 실행순서에 따라 값과 정렬이 달라진다.
SELECT ROWNUM, TEMP.* FROM
(
	SELECT * FROM EMP ORDER BY SAL DESC
) TEMP;
반응형