select <필드리스트>
from <테이블 리스트>
where <조건>
select distinct <필드리스트>
distinct
키워드로 중복을 배제한다.select *
order by
추가select <필드리스트>
from <테이블 리스트>
where <조건>
order by <필드리스트>
order by A, B, C
desc
명시order by A desc, B # A 내림차순, B 오름차순
order by A , B desc # A 오름차순, B 내림차순
order by A desc, B desc # A, B 내림차순
select s.name, d.dept_name
from student s, department d
where s.dept_id = d.dept_id
select name 이름, position 직위, 2012-year_emp 재직연수
from professor
where <필드이름> like <문자열패턴>
where resident_id like '%-2'
<select문 1> <집합연산자> <select문 2>
select name from student
union
select name from professor
union all
연산자를 사용select name from student
intersect
select name from professor
select name from student
intersect
select name from professor
SELECT
FROM A INNER JOIN B
ON 조건
연산자의 왼쪽에 위치한 테이블의 각 레코드에 대해서 오른쪽 테이블에 조인 조건에 부합하는 레코드가 없을 경우에도 검색 결과에 포함
아래 두 방식에 대한 연산 결과는 같다.
ANSI 방식
select title, credit, year, semester
from course left outer join class
using (course_id) # course.course_id = class.course_id
select title, credit, year, semester
from course, class
where course.course_id = class.course_id (+)
연산자의 오른쪾에 위치한 테이블의 각 레코드에 대해서 왼쪽 테이블에 조인 조건에 부합하는 레코드가 없을 경우에도 검색 결과에 포함
아래 두 방식에 대한 연산 결과는 같다.
ANSI 방식
select title, credit, year, semester
from course right outer join class
using (course_id) # course.course_id = class.course_id
select title, credit, year, semester
from course, class
where course.course_id (+) = class.course_id
select title, credit, year, semester
from course full outer join class
using (course_id) # course.course_id = class.course_id
count(distinct <필드이름>)
distinct
: 서로 구별되는 값의 개수가 필요한 경우에만 사용*
가 올 경우 총 레코드의 개수를 계산select count(*)
from student
where year=2;
sum(<필드이름>)
avg(<필드이름>)
max(<필드이름>)
min(<필드이름>)
group by <필드리스트>
select 절과 집계함수는 함께 사용할 수 없다.
select ename, max(sal)
을 했을 경우, max(sal)의 값만 검색되지 이것이 속해있는 레코드가 무엇인지, 알수없다.
따라서 GROUP BY
와 집계함수로 그룹별 집계함수 적용!
select 문에서 where절 다음에 쓴다.
그룹에 대한 조건은 HAVING
절에 작성
작성 순서는,
where > group by > having > order by 이다.
<필드이름> is null
<필드이름> is not null
select <필드이름>
from <필드리스트>
where A in # or not in
(
select A
from ...작성);
select <필드이름>
from <필드리스트>
where A exist # dor not exist
(
select A
from ...작성);