-->

[정보처리기사] DML - SELECT문 형식 (SELECT/FROM/WHERE/GROUP BY/HAVING절)

SELECT문 일반 형식

  SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭]...
  [, 그룹함수(속성명) [AS 별칭]]
  [, Window함수 OVER ...]

  FROM 테이블명1, 테이블2,...

  [WHERE 조건]

  [GROUP BY 속성명1, 속성명2,...]

  [HAVING 조건]

  [ORDER BY 속성명 [ASC | DESC]];

 

SELECT절

PREDICATE

- All

- DISTINCT : 중복된 튜플이 있으면 그 중 첫번째 한개만 검색

- DISTINCTROW

SELECT DISTINCT 주소 FROM 사원;

 

속성명

- 두개 이상의 테이블을 대상으로 검색할 때는 테이블명.속성명으로 표현

 

그룹함수

- GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 함수를 기술

- 그룹 함수 : COUNT, SUM, AVG, MAX, MIN, STDDEV(표준편차), VARIANCE(분산), ROLLUP, CUBE

SELECT 부서, AVG(상여금) AS 평균
FROM 상여금
GROUP BY 부서;

 

WINDOW 함수

- GROUP BY 절을 사용하지 않고 속성의 값을 집계할 함수를 기술

- 윈도우 함수 : ROW_NUMBER(일련번호 반환), RANK(순위반환), DENSE_RANK(순위반환, 공동순위 무시)

ex. 상여금 테이블에서 상여내역별로 상여금에 대한 일련 번호를 구하기 (순서는 내림차순, 속성명은 NO)

SELECT 상여내역, 상여금,
  ROW_NUMBER() OVER (PARTITION BY 상여내역 ORDER BY 상여금 DESC) AS NO
FROM 상여금;

 

FROM절

- 검색될 데이터들을 포함하는 테이블명을 기술

 

WHERE절

- 검색할 조건을 기술

- LINK 연산자 : %(모든 문자), _(문자 하나), #(숫자 하나)

ex. 사원 테이블에서 성이 '김'인 사람의 튜플을 검색
SELECT *
FROM 사원
WHERE 이름 LIKE "김%";

 

GROUP BY절

- 특정 속성을 기준으로 그룹화하여 검색할 때 사용

- 일반적으로 그룹 함수와 함께 사용함

ex. 상여금 테이블에서 부서별 튜플 수를 검색

SELECT 부서, COUNT(*) AS 사원수 
FROM 상여금
GROUP BY 부서;

 

HAVING절

- GROUPT BY와 함께 사용됨, 그룹에 대한 조건을 지정

ex. 상여금 테이블에서 상여금이 100 이상인 사원이 2명 이상인 부서의 튜플수를 구하기

SELECT 부서, COUNT(*) AS 사원수
FROM 상여금
WHERE 상여금>=100
GROUP BY 부서
HAVING COUNT(*) >= 2;

 

댓글

Designed by JB FACTORY