일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Direct12
- 쓰레드
- 락
- 디자인패턴
- 멀티프로세서
- 그리디 알고리즘
- 병행성
- 프로그래머스
- 파일시스템 구현
- 자료구조
- 타입 객체
- 영속성
- 다이나믹프로그래밍
- 컨디션 변수
- 백준
- 병행성 관련 오류
- 그리디알고리즘
- 렌더링 파이프라인
- 다이나믹 프로그래밍
- DirectX12
- I/O장치
- OS
- 운영체제
- 동적계획법
- 스케줄링
- codility
- DirectX 12
- 알고리즘
- 멀티쓰레드
- directx
- Today
- Total
기록공간
3-3-5장~3-3-6장. DML - SELECT - A 본문
일반 형식
SELECT [PREDICATE] [테이블명.]속성명 [AS별칭][, [테이블명.]속성명, ...]
[, 그룹함수(속성명) [AS 별칭]]
[, Window함수 OVER (PARTITION BY 속성명1, 속성명2, ...
ORDER BY 속성명3, 속성명4, ...)]
FROM 테이블명[, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
-
SELECT 절
-
PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술
-
ALL : 모든 튜플을 검색할 때 지정하는 것으로, 주로 생략
-
DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색
-
DISTINCTROW : 중복된 튜플을 제거하고 한 개만 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로 함
-
-
속성명 : 검색하여 불러올 속성(열) 또는 속성을 이용한 수식을 지정
-
기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술
-
두 개 이상의 테이블을 대상으로 검색할 때는 '테이블명.속성명'으로 표현
-
-
AS : 속성 및 연산의 이름을 다른 제목으로 표시하기 위해 사용
-
-
WINDOW 함수 : GROUP BY 절을 이용하지 않고 속성의 값을 집계할 함수를 기술
-
PARTITION BY : WINDOW 함수가 적용될 범위로 사용할 속성을 지정
-
ORDER BY : PARTITION 안에서 정렬 기준으로 사용할 속성을 지정
-
ROW_NUMBER() : 각 레코드에 대한 일련번호 반환
-
RANK() : 순위를 반환하되 공동 순위를 반영
-
DENSE_RANK() : 순위를 반환하되 공동 순위를 반영하지 않음
-
-
FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술
-
WHERE절 : 검색할 조건을 기술
-
GROUP BY절 : 특정 속성을 기준으로 그룹화하여 검색할 때 사용. 그룹 함수와 같이 사용
-
COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
-
SUM(속성명) : 그룹별 합계를 구하는 함수
-
AVG(속성명) : 그룹별 평균을 구하는 함수
-
MAX(속성명), MIN(속성명) : 그룹별 최대값, 최소값을 구하는 함수
-
ROLLUP(속성명, 속성명, ...) : 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수
-
CUBE(속성명, 속성명, ...) : 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구하는 함수
-
-
ORDER BY절 : 특정 속성을 기준으로 정렬하여 검색할 때 사용
-
속성명 : 정렬의 기준이 되는 속성명을 기술
-
[ASC | DESC] : 정렬 방식으로서 'ASC'는 오름차순 'DESC'는 내림차순이다. 생략하면 오름차순으로 지정
-
-
HAVING절 : GROUP BY와 함께 사용하여 그룹에 조건을 지정
SELECT 예제1
기본검색
-> 사원 테이블에 있는 모든 튜플을 검색하는 SQL문
SELECT * FROM 사원;
-> 사원 테이블에서 부서를 중복없이 검색하는 SQL문
SELECT DISTINCT 부서 FROM 사원;
조건 지정 검색
-> 사원 테이블에서 부서가 개발인 튜플을 검색하는 SQL문
SELECT * FROM 사원 WHERE 부서 = "개발";
-> 사원 테이블에서 부서가 개발 혹은 IT인 튜플을 검색하는 SQL문
SELECT * FROM 사원 WHERE 부서 = "개발" OR 부서 = "IT";
SELECT * FROM 사원 WHERE 부서 IN("개발", "IT");
-> 사원 테이블에서 성이 김인 튜플을 검색하는 SQL문
SELECT * FROM 사원 WHERE 이름 LIKE "김%";
-> 사원 테이블에서 부서가 NULL인 튜플을 검색하는 SQL문
SELECT * FROM 사원 WHERE 부서 IS NULL;
정렬검색(ORDER BY를 이용)
-> 사원 테이블에서 이름을 오름차순으로 정렬하여 튜플을 검색하는 SQL문
SELECT * FROM 사원 ORDER BY 이름 ASC;
하위 질의(조건절에 다시 SELECT문을 넣어 그 결과를 조건으로 검색)
-> 취미 테이블에서 취미활동이 축구인 사원 이름의 튜플을 검색하는 SQL문
SELECT 이름 FROM 사원 WHERE 이름 = (SELECT 이름 FROM 취미 WHERE 취미활동 = "축구");
복수 테이블(여러 테이블을 대상으로 검색)
-> 경력이 10년 이상인 사원의 이름, 부서, 취미활동을 검색하는 SQL문
SELECT 사원.이름, 사원.부서, 취미.취미활동
FROM 사원, 취미
WHERE 사원.경력 >= 10 ANS 사원.이름 = 취미.이름
SELECT 예제2
WINDOW 함수 이용
-> 사원 테이블에서 부서 별로 경력에 대한 일련번호를 구하여 짬순이라는 이름을 붙이는 SQL문
SELECT 부서, 경력
ROW_NUMBER() OVER (PARTITION BY 부서 ORDER BY 경력 DESC) AS 짬순
FROM 사원
GROUP BY(그룹 지정 검색)
-> 사원 테이블에서 부서별 경력의 평균을 구하는 SQL문
SELECT 부서, AVG(경력) AS 평균
FROM 사원
GROUP BY 부서;
집합 연산자를 이용한 통합 질의
SELECT 속성명1, 속성명2, ...
FROM 테이블명
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성명1, 속성명2, ...
FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]];
-
UNION : 두 SELECT문의 결과를 통합하고 중복된 행은 한 번만 출력
-
UNION ALL : 두 SELECT 문의 결과를 통합하고 중복된 행도 그대로 출력
-
INTERSECT : 두 SELECT 문의 결과 중 공통된 행만 출력
-
EXCEPT : 첫번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과를 제외한 행을 출력
'자격증공부 > 정보처리기사_필기' 카테고리의 다른 글
3-4-1장. 프로시저(Procedure) - A (0) | 2020.09.15 |
---|---|
3-3-7장. DML - JOIN - B (0) | 2020.09.15 |
3-3-4장. DML - B (0) | 2020.09.14 |
3-3-3장. DCL - C (0) | 2020.09.14 |
3-3-2장. DDL - C (0) | 2020.09.14 |