▷ SELECT문의 일반 형식
SELECT [PREDICATE] [테이블명.]속성명[ AS 별칭][, [테이블명.]속성명, ...]FROM 테이블명[, 테이블명, ...][WHERE 조건][GROUP BY 속성명[,속성명, ...]][HAVING 조건][ORDER BY 속성명 [ASC | DESC[, 속성명 [ASC | DESC], ...]];
※ 참고
> SELECT * FROM 인스턴스명.DBName.스키마.TABLE;
일반적으로 TABLE 앞에오는 빨간색 글씨의 문장들은 보이지는 않지만 쿼리실행시 암묵적으로 붙게 된다.
º SELECT절
- PREDICATE : 검색할 튜플을 제한할 목적으로 사용되는 조건으로서,
ALL, DISTINCT , DISTINCTROW 등이 올 수 있다.
▶ ALL : 모든 튜플들을 검색할 때 사용되며 , 기본 값이다.
▶ DISTINCT : 중복된 튜플을 제거할 때 사용된다.
▶ DISTINCTROW : 중복된 튜플을 제거하지만 , 선택된 속성의 값이 아닌
튜플의 전체 값을 대상으로 할 때 사용된다.
- AS(Alias) : 속성 및 연산의 이름을 다른 제목으로 표시하기 위해 사용된다.
º FROM절 : 검색할 데이터가 들어 있는 테이블명을 기술한다.
º WHERE절 : 검색할 조건을 기술한다.
※ LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이
문자 패턴과 일치하는 튜플을 검색하기 위해 사용된다.
대표문자 | * 또는 % | ? 또는 _ | # |
의미 | 모든 문자를 대표한다 | 문자 하나를 대표한다 | 숫자 하나를 대표한다 |
※ BETWEEN A AND B 연산자 : A와 B사이의 튜플을 검색하기 위해 사용된다.
º GROUP BY절 : 특정 속성을 기준으로 그룹화하여 검색할 때 사용한다.
일반적으로 GROUP BY절은 그룹 함수와 함께 사용한다.
※ 그룹함수
- COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
- MAX(속성명) : 그룹별 최대값을 구하는 함수
- MIN(속성명) : 그룹별 최소값을 구하는 함수
- SUM(속성명) : 그룹별 합계를 구하는 함수
- AVG(속성명) : 그룹별 평균을 구하는 함수
º HAVING절 : 그룹에 대한 조건을 기술한다.
º ORDER BY절 : 특정 속성을 기준으로 정렬하여 검색할 때 사용한다.
[ ASC | DESC ]
오름차순 | 내림차순
예제
<학생> 테이블
학번 | 이름 | 전공 | 나이 | 주소 |
1 | 홍길동 | 정보보안 | 23 | 후평동 |
2 | 강호동 | 포렌식 | 22 | 와동 |
3 | 장길산 | 로봇공학 | 21 | 석사동 |
4 | 일지매 | 정보보안 | 20 | 고잔동 |
5 | 강선달 | 포렌식 | 20 | 신사동 |
<학생> 테이블에서 전공만 검색하되, 같은 전공은 한 번만 검색하는 SQL문을 작성하시오.
SELECT DISTINCT 전공 FROM 사원;
<결과>
전공 |
정보보안 |
로봇공학 |
포렌식 |
<학생> 테이블에서 이름의 첫 번째 글자가 '강'인 모든 튜플을 검색하는 SQL문을 작성하시오.
SELECT * FROM 학생 WHERE 이름 LIKE '강%';
<결과>
학번 | 이름 | 전공 | 나이 | 주소 |
2 | 강호동 | 포렌식 | 22 | 와동 |
5 | 강선달 | 포렌식 | 20 | 신사동 |
<학생> 테이블에서 나이가 20에서 22 사이인 튜플을 모두 검색하는 SQL문을 작성하시오.
SELECT * FROM 학생 WHERE 나이 BETWEEN 20 AND 22;
<결과>
학번 | 이름 | 전공 | 나이 | 주소 |
2 | 강호동 | 포렌식 | 22 | 와동 |
3 | 장길산 | 로봇공학 | 21 | 석사동 |
4 | 일지매 | 정보보안 | 20 | 고잔동 |
5 | 강선달 | 포렌식 | 20 | 신사동 |
<학생> 테이블에서 이름의 첫 번째 글자가 '강'인 이름만 검색하되 ,
나이를 기준으로 오름차순 정렬하는 SQL문을 작성하시오.
SELECT 이름 FROM 학생 WHERE LIKE '강%' ORDER BY 나이 ASC;
<결과>
이름 |
강선달 |
강호동 |
<학생> 테이블에서 나이가 20에서 22사이이며 학생이 3명이상인
학생수를 조회하는 SQL문을 작성하시오.
SELECT COUNT(*) AS 학생수
FROM 학생 WHERE BETWEEN 20 AND 22
HAVING COUNT(*) >=3;
<결과>
학생수 |
4 |
'DBMS' 카테고리의 다른 글
MSSQL Server 2014 Express 설치 (0) | 2017.07.06 |
---|---|
[SQL] DML(Data Manipulation Language) (0) | 2017.06.23 |
위즈몰 (쇼핑몰 오픈소스) (0) | 2017.06.22 |
[SQL] DDL( Data Define Language ) (0) | 2017.06.22 |
[SQL] 서브쿼리 문제 (0) | 2017.06.22 |