본문 바로가기

DBMS

[SQL] - SELECT문

반응형

 

▷ 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절은 그룹 함수와 함께 사용한다. 

 

  그룹함수 

  1.  COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
  2.  MAX(속성명) : 그룹별 최대값을 구하는 함수
  3.  MIN(속성명) : 그룹별 최소값을 구하는 함수
  4.  SUM(속성명) : 그룹별 합계를 구하는 함수
  5.  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