※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
일반 형식
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, ...]
[, 그룹함수(속성명) [AS 별칭]]
[, Window함수 OVER (PARTITION BY 속성명1, 속성명2, ... ORDER BY 속성명3, 속성명4, ...)]
FORM 테이블명[, 테이블명, ...]
[WHERE 조건]
[GRUOP BY 속성명, 속성명, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
- SELECT절
- PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술합니다.
- ALL : 모든 튜플을 검색할 때 지정하는 것으로, 주로 생략합니다.
- DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색합니다.
- DISTINCTROW : 중복된 튜플을 제거하고 한 개만 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로 합니다. - 속성명 : 검색하여 불러올 속성(열) 또는 속성을 이용한 수식을 지정합니다.
- 기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술합니다.
- 두 개 이상의 테이블을 대상으로 검색할 때는 '테이블명.속성명'으로 표현합니다. - AS : 속성 및 연산의 이름을 다른 제목으로 표시하기 위해 사용됩니다.
- PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술합니다.
- FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술합니다.
- WHERE절 : 검색할 조건을 기술합니다.
- ORDER BY절 : 특정 속성을 기준으로 정렬하여 검색할 때 사용합니다.
- 속성명 : 정렬의 기준이 되는 속성명을 기술합니다.
- [ASC | DESC] : 정렬 방식으로서 'ASC'는 오름차순, 'DESC'는 내림차순입니다. 생략하면 오름차순으로 지정됩니다.
조건 연산자 / 연산자 우선순위
조건 연산자
- 비교연산자
연산자 = <> > < >= <= 의미 같다 같지 않다 크다 작다 크거나 같다 작거나 같다 - 논리 연산자 : NOT, AND, OR
- LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용됩니다.
대표 문자 % - # 의미 모든 문자를 대표함 문자 하나를 대표함 숫자 하나를 대표함
연산자 우선순위
※ 산술, 관계, 논리 연산자가 함께 사용되었을 때는 산술 > 관계 > 논리 연산자 순서로 연산자 우선순위가 정해집니다.
다음과 같은 기본 테이블에 대해 다음 예제의 결과를 확인하시오.
기본 검색
SELECT 절에 원하는 속성을 지정하여 검색합니다.
예제1
<사원> 테이블의 모든 튜플을 검색하시오.
SELECT * FROM 사원;
SELECT 사원.* FROM 사원;
SELECT 이름, 부서, 생일, 주소, 기본급 FROM 사원;
SELECT 사원.이름, 사원.부서, 사원.생일, 사원.주소, 사원.기본급 FROM 사원;
※ 위의 SQL은 모두 보기에 주어진 <사원> 테이블 전체를 그래도 출력합니다.
예제2
<사원> 테이블에서 '주소'만 검색하되 같은 '주소'는 한 번만 출력하시오.
SELECT DISTINCT 주소
FROM 사원;
예제3
<사원> 테이블에서 '기본급'에 특별수당 10을 더한 월급을 "XX부서의 XXX의 월급 XXX"형태로 출력하시오.
SELECT 부서 + '부서의' AS 부서2, 이름 + '의 월급' AS 이름2, 기본급 + 10 AS 기본급2
FORM 사원;
※ 부서 + "부서의" AS 부서2
'부서'에 "부서의"를 연결하여 표시하되, '부서2'라는 속성명으로 표시합니다.
조건 지정 검색
WHERE 절에 조인을 지정하여 조건에 만족하는 튜플만 검색합니다.
예제1
<사원> 테이블에서 '기획'부의 모든 튜플을 검색하시오.
SELECT *
FROM 사원
WHERE 부서 = '기획';
예제2
<사원> 테이블에서 "기획" 부서에 근무하면서 "대흥동"에 사는 사람의 튜플을 검색하시오.
SELECT *
FROM 사원
WHERE 부서 = '기획' AND 주소 = '대흥동';
예제3
<사원> 테이블에서 '부서'가 "기획"이거나 "인터넷"인 튜플을 검색하시오.
SELECT *
FROM 사원
WHERE 부서 = '기획' OR 부서 = '인터넷';
예제4
<사원> 테이블에서 성이 '김'인 사람의 튜플을 검색하시오.
SELECT *
FROM 사원
WHERE 이름 LIKE "김%";
예제5
<사원> 테이블에서 '생일'이 '01/01/69'에서 '12/31/73' 사이인 튜플을 검색하시오.
SELECT *
FROM 사원
WHERE 생일 BETWEEN #01/01/69# AND #12/31/73#;
예제6
<사원> 테이블에서 '주소'가 NULL인 튜플을 검색하시오.
SELECT *
FROM 사원
WHERE 주소 IS NULL;
정렬 검색
ORDER BY 절에 특정 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색합니다.
예제1
<사원> 테이블에서 '주소'를 기준으로 내림차순 정렬시켜 상위 2개 튜플만 검색하시오.
SELECT TOP 2 *
FROM 사원
ORDER BY 주소 DESC;
예제2
<사원> 테이블에서 '부서'를 기준으로 오름차순 정렬하고, 같은 '부서'에 대해서는 '이름'을 기준으로 내림차순 정렬시켜서 검색하시오.
SELECT *
FROM 사원
ORDER BY 부서 ASC, 이름 DESC;
하위 질의
하위 질의는 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용합니다.
예제1
'취미'가 "나이트댄스"인 사원의 '이름'과 '주소'를 검색하시오.
SELECT 이름, 주소
FROM 사원
WHERE 이름 = (SELECT 이름 FROM 여가활동 WHERE 취미 = '나이트댄스');
예제2
취미활동을 하지 않는 사원들을 검색하시오.
SELECT *
FROM 사원
WHERE 이름 NOT (SELECT 이름 FROM 여가활동);
예제3
취미활동을 하는 사원들의 부서를 검색하시오.
SELECT 부서
FROM 사원
WHERE EXISTS (SELECT 이름 FROM 여가활동 WHERE 여가활동.이름 = 사원.이름);
복수 테이블 검색
여러 테이블을 대상으로 검색을 수행합니다.
예제1
'경력'이 10년 이상인 사원의 '이름', '부서', '취미', '경력'을 검색하시오.
SELECT 사원.이름, 사원.부서, 여가활동.취미, 여가활동.경력
FORM 사원, 여가활동
WHERE 여가활동.경력 >= 10 AND 사원.이름 = 여가활동.이름;
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - SQL 활용 - DML - JOIN (0) | 2024.09.24 |
---|---|
정보처리산업기사 - SQL 활용 - DML - SELECT - 2 (0) | 2024.09.23 |
정보처리산업기사 - SQL 활용 - DML (0) | 2024.09.21 |
정보처리산업기사 - SQL 활용 - DCL (0) | 2024.09.21 |
정보처리산업기사 - SQL 활용 - DDL (0) | 2024.09.21 |