반응형
★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;
반응형
'프로그래밍 공부 > DBMS' 카테고리의 다른 글
[lesson] DBMS - CREATE AS(데이터 복사) (0) | 2021.08.21 |
---|---|
[lesson] DBMS - Optimizer / HINT (0) | 2021.08.21 |
[lesson] DBMS - 파생 문법 1탄 (문자연결, LIKE, DUAL, 집계함수, GROUP BY, ALIAS, ORDER BY) (0) | 2021.08.12 |
[lesson] DBMS - 정규화 (0) | 2021.08.12 |
[lesson] DBMS - DML (데이터 조작어), TCL (트랜잭션) (0) | 2021.08.12 |