본문 바로가기
Programming/Database

SQL - 데이터 조작어, 정의어 (검색)

by happy_jinsu 2022. 11. 7.

검색

1. SELECT

데이터를 검색하는 기본 문장. 질의어라고 부름. 

 

(필수)

SELECT          [ALL * | DISTINCT] 속성이름(들)

FROM             테이블 이름(들)
··········································································

(선택)
WHERE          검색 조건(들)
GROUP BY     속성이름

HAVING          검색조건(들)

ORDER BY     속성이름 [ASC | DESC]

 

*WHERE의 조건들

≫ 비교 : =,<>,<,<=,>=                     (price 20000)

범위 : BETWWEEN                     (price BETWEEN 10000 AND 20000)

집합 : IN, NOT IN                        (price IN (10000,20000,30000)

패턴 : LIKE                                  (bookname LIKE '축구의 역사')  (bookname LIKE '%축구%') (bookname LIKE '_구%')

NULL : IS NULL, IS NOT NILL    (price IS NULL)

복합조건 : AND, OR, NOT           ((price < 20000) AND (bookname LIKE '축구의 역사')

 

*ORDER BY (도서를 이름순으로 보고 싶다.)

≫ 오름차순은 ASC, 내림차순은 DESC 사용.       (ORDER BY price DESC, publisher ASC;)

 

*GROUP BY (도서 판매액의 합계를 알고 싶다.)

≫ SUM

≫ AVG

≫ MIN

≫ MAX

≫ COUNT (*)

GROUP BY (어느 고객이 얼마나 주문했는지 알고싶다.)

 

*HAVING (GROUP BY에 조건을 걸어주는 역할)

≫ 항상 WHERE절 뒤에 나와야 한다.

≫ 항상 GROUP BY절과 함께 사용한다.

≫ 검색 조건에는 집계함수가 와야한다. (SUM,AVG,MIN,MAX,COUNT)

 

*집합 연산(고객 이름의 합집합을 구하고 싶다.)

예문 : 대한민국에 거주하는 고객의 이름과 도서를 주문한 고객의 이름을 보이시오.

≫ SELECT            name

     FROM              Customer

    WHERE            address LIKE '대한민국%'

    UNION

    SELECT           name

    FROM              Customer

    WHERE           custid IN (SELECT custid FROM Orders);

 

  ≫ UNION은 합집합이면서 중복 제외, UNION ALL은 합집합이면서 중복 포함.  

 

*EXISTS (주문이 있는 고객을 알고싶다.)

≫ 조건에 맞는 투플이 존재하면 결과에 포함시킨다. 

≫ NOT EXISTS는 부속질의문의 모든 행이 조건에 만족하지 않을 때만 참이다.

예문 : 주문이 있는 고객의 이름과 주소를 보이시오.

≫ SELECT     name, address

    FROM         Customer cs

    WHERE      EXISTS (SELECT     *

                                      FROM        Orders od

                                      WHERE     cs.sustid = od.custid);

 

'Programming > Database' 카테고리의 다른 글

관계 데이터 모델  (0) 2022.11.07