데이터 질의어 (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
절에서 또 다른 테이블 결과를 이용하기 위해 쿼리문을 중첩하여 사용하는 것