ORDER BY에서는 1,2,3 같은 숫자 사용 가능. 의미는 SELECT의 필드 순서. 첫 필드는 1. 두 번째 필드는 2..이런식.
IS NULL => NULL값 추출
IS NOT NULL =>NULL값이 아닌 값 추출
SELECT *
FROM EMP e
WHERE COMM IS NULL
SELECT *
FROM EMP e
WHERE COMM IS NOT NULL
무언가 계산을 할 경우 결과에는 NULL값들이 표시되지 않는다.
WHERE COMM <> 1400이러면 NULL값을 제외. NULL 값 넣고 싶으면
OR COMM IS NULL 해주자.
WHERE GRADE <> 'A+'
A+가 아닌 경우.
쿼리문이 2개?
SELECT title
FROM COURSE c
WHERE COURSE_ID IN
(SELECT DISTINCT course_id
FROM CLASS c2
WHERE classroom = '301호'
)
우선 IN안의 쿼리문 실행. 301호 찾음. 그 후 IN에서 구한 값중에서 COURSE_ID값들만 구해서 해당 값들의 TITLE을 출력해줌.
SELECT DISTINCT TITLE
FROM COURSE c, CLASS c2
WHERE c.COURSE_ID = C2.COURSE_ID
AND classroom = '301호'
같은 결과를 도출해내는 쿼리문.
NOT IN
()안의 조건이 아닌 TITLE명들.
SELECT TITLE
FROM COURSE c
WHERE COURSE_ID NOT IN
(SELECT DISTINCT COURSE_ID
FROM CLASS c2
WHERE YEAR = 2012 AND SEMESTER = 2
)
OR REPLACE -> 없는 뷰일경우 새로 생성. 이미 있을 경우 기존 뷰를 삭제하고 덮어씌움.
일반적으로 관리자 계정이 아닌 사용자 계정에서는 뷰 생성 권한이 존재하지 않음. 현재 DBA권한을 미리 줬어서 사용 가능 상태.
뷰 생성
CREATE OR REPLACE VIEW v_takes AS
SELECT stu_id, class_id
FROM takes
CREATE VIEW v_takes AS 처음 만드는 거면 or replace 없어도 괜찮다.
DROP VIEW CS_STUDENT
DELETE UPDATE INSERT와 같은 데이터 조작 언어를 못 쓰게 하고 싶다면 WITH READ ONLY 사용
CREATE OR REPLACE VIEW V_TAKES AS
SELECT STU_ID, CLASS_ID
FROM TAKES
WITH READ ONLY
출처 : 국비 교육