데이터 질의어 (DQL : Data Query Language)
데이터를 검색하는 기본 문장
특별히 Query(질의어)라고 불림
검색한 결과를 테이블의 형태로 출력
형태
SELECT [ALL | DISTINCT]
[테이블이름.]{* | 속성이름 [[AS] 속성이름별칭]}
[FROM
{테이블이름 [AS 테이블이름별칭]}
[INNER JOIN | LEFT [OUTER] JOIN | RIGHT JOIN | {테이블이름 [ON 검색조건]}
| FULL [OUTER] JOIN {테이블이름}]
]
[WHERE 검색조건(들)]
[GROUP BY {속성이름, [..., n]}]
[HAVING 검색조건(들)] -- 그룹에 대한 검색 조건
[질의 UNION 질의 | 질의 UNION ALL 질의]
[ORDER BY {속성이름 [ASC | DESC], [..., n]}]
;
ALL : SELECT의 기본 으로 생략 가능. 중복을 포함 모든 튜플을 가져옴
DISTINCT : 중복을 제거한 튜플을 가져옴
SELECT 속성이름
* : 속성 전체를 가져옴, 로 구분하여 가져올 수 있음[AS] 별칭 : 표의 속성에 표시될 별칭 설정FROM 테이블이름
테이블이름 [튜플변수] : 테이블 이름이 길거나 한 개의 테이블이 SQL 문에 두번 사용될 때 혼란을 피하고자 테이블의 별칭을 붙여 사용하는 것임JOIN
INNER JOIN

-- Oracle
SELECT *
FROM 테이블이름1, 테이블이름2
WHERE 기본키=외래키
AND 검색조건(들);
-- ANSI
SELECT *
FROM 테이블이름1
INNER JOIN 테이블이름2 -- INNER 생략 가능
ON 기본키=외래키
WHERE 검색조건(들);
LEFT OUTER JOIN

-- Oracle
SELECT *
FROM 테이블이름1, 테이블이름2(+)
WHERE 기본키=외래키
AND 검색조건(들);
-- ANSI
SELECT *
FROM 테이블이름1
LEFT OUTER JOIN 테이블이름2 -- OUTER 생략 가능
ON 기본키=외래키
WHERE 검색조건(들);
RIGHT OUTER JOIN

-- Oracle
SELECT *
FROM 테이블이름1(+), 테이블이름2
WHERE 기본키=외래키
AND 검색조건(들);
-- ANSI
SELECT *
FROM 테이블이름1
RIGHT OUTER JOIN 테이블이름2 -- OUTER 생략 가능
ON 기본키=외래키
WHERE 검색조건(들);
CROSS JOIN

-- Oracle
SELECT *
FROM 테이블이름1, 테이블이름2
WHERE 외래키 IN (테이블이름1.속성들)
AND 검색조건(들);
-- ANSI
SELECT *
FROM 테이블이름1
CROSS JOIN 테이블이름2
WHERE 검색조건(들);
FULL OUTER JOIN

-- ANSI
SELECT *
FROM 테이블이름1
FULL OUTER JOIN 테이블이름2
ON 기본키=외래키
WHERE 검색조건(들);
WHERE 조건
비교 : =, <, <=, >, >=, <> (!=, ^=)
범위 : BETWEEN A AND B (A < B)
집합 : IN, NOT IN
SELECT * FROM book WHERE publisher IN ( '굿스포츠', '대한미디어' );
패턴 : LIKE
-- 문자열 사이에 축구가 있는 책의 이름들
FROM book WHERE bookname LIKE '%축구%';
-- 책 이름의 2번째에 구가 오는 책의 이름들
SELECT bookname, publisher FROM book WHERE bookname LIKE '_구%';
+ : 문자열 연결% : 0개 이상의 문자열 일치[] : 한개의 문자와 일치[^] : 한 개의 문자와 불일치_ : 특정 위치의 한 개의 문자와 일치NULL : IS NULL, IS NOT NULL
복합조건 : AND, OR, NOT
집계함수와 GROUP BY 검색
[[ALL] | DISTINCT] 속성 )[[ALL] | DISTINCT] 속성 )[[ALL] | DISTINCT] 속성 )[[ALL] | DISTINCT] 속성 )[[ALL] | DISTINCT] 속성 | * })
GROUP BY
HAVING 검색조건(들)
ORDER BY 속성 [ASC | DESC]
ASC : Ascending - 오름차순DESC : Descending - 내림차중첩질의 (Nested Query)
쿼리문의 WHERE 절에서 또 다른 테이블 결과를 이용하기 위해 쿼리문을 중첩하여 사용하는 것