쑤쑤_CS 기록장

SQL 문 정리하기 - SELECT문, DB 코테 준비 본문

IT 지식 기록/MSSQL

SQL 문 정리하기 - SELECT문, DB 코테 준비

(╹◡╹)_ 2021. 4. 12. 09:50
728x90

* SQL 분류

 

1. DDL - CREATE, ALTER, DROP

2. DML - SELECT, INSERT, DELETE

3. DCL - GRANT, REVOKE

 

 

* 데이터 조작어, 검색

 

select (distinct)
from
where
group by
having
order by (desc / asc)

 


* 처리 순서
1. from
2. on
3. join
4. where
5. group by
6. with rollup. with cube
7. having
8. select
9. distinct
10. oreder by
11. top

 


* where 조건

  • 비교 =, <, >
  • between 10 and 20
  • 집합IN _ in (1, 2, 3)
  • 패턴 _ like '축구의역사'
  • NULL, IS  NULL
  • AND, OR, NOT

 

* LIKE와 같이 사용하는 와일드 문자

  • + : 문자열 연결
  • % : 0개 이상의 문자열과 일치
  • - : 특정 위치의 1개의 문자와 일치

* 집계 함수

  • SUM
  • AVG
  • COUNT
    • COUNT(속성 이름), COUNT(*)
  • MAX
  • MIN
  • 문법
    • (ALL / DISTINCT) + 속성 이름
    • MAX (DISTINCT PRICE)


group by를 사용한 select 절에서는 : group by에서 사용한 속성과 집계함수만 나올 수 있다.

having 절은 group by 절의 결과 나타나는 그룹을 제한하는 역할을 한다. 
- having 절은 group by 절과 같이 작성해야 하고 where절보다 뒤에 나와야 한다.
- having 절의 검색 조건에는 집계함수가 와야한다.
ex) having count(*) >= 2 ;


* 여러 테이블에서 sql 질의

  • 조건 없이 테이블 간 조인
    • SELECT *
      FROM a, b;
  • 조건 추가. 만족된 결과를 획득. <동등 조인>
    • SELECT *
      FROM a, b
      WHERE a.ID = b.ID;
  • 동등 조인의 표현. INNER JOIN
    • SELECT *
      FROM a INNER JOIN b

      ON a.ID = b.ID;
  • 외부 조인
    • SELECT 속성들
      FROM a {LEFT / RIGHT / FULL (OUTER) } JOIN
      b ON 조인 조건
      WHERE 검색 조건

 

* 부족 질의  (중첩 질의)

: SELECT 문의 WHERE절에 또 다른 테이블 결과를 이용하기 위해 다시 SELECT 문을 괄호로 묶는 것
( 데이터가 대량인 경우 모든 데이터를 합쳐서 연산하는 조인보다
필요한 데이터만 찾아서 공급해주는 부속질의가 성능에 더 좋다.)

 

- 부족질의는  SELECT 문에 나오는 결과 속성을 FROM 절의 테이블에서만 얻을 수 있고, 
조인은 조인한 모든 테이블에서 결과 속성을 얻을 수 있다.

 

* 부속 질이의 종류

  • SELECT 절
    • =스칼라 부속질의. 단일 값을 반환한다. 결과 값은 단일 행, 단일 열의 스칼라 값으로 반환한다.
    • SELECT custid, (SELECT name FROM customer cs WHERE cs.custid=od.custid), SUM(saleprice)
      FROM orders od
      GROUP BY custid;
  • FROM 절
    • =인라인 뷰. 결과를 뷰 형태로 반환한다. 조인에 참여하기 직전 필요한 데이터만 추출이 가능하므로 성능의 손실을 줄일 수 있다. 
    • SELECT a.name, SUM(b.saleprice) "total"
      FROM (SELECT custid, name
                     FROM customer
                     WHERE custid <= 2) a, orders b
      WHERE a.custid = od.custid
      GROUP BY a.name
  • WHERE절
    • = 중첩질의. 술어와 같이 사용되며 결과를 한정시키기 위해 사용된다.

 

 

* 집합 연산

UNION 합집합EXCEPT (MINUS) 차집합INTERSECT 교집합

 

 

 * ALL, SOME (ANY)- ALL : 모든 값- ANY : 적어도 하나의 값

 

 

 

* EXISTS

:왼쪽에 값이나 열을 명시하지 않는다. 따라서 반드시 부속질의에 주질의의 열 이름이 제공되어야 한다. 조건에 맞는 튜플이 존재하면 결과에 포함시킨다.즉, 부속질의문의 어떤 행이 조건에 만족하면 참이다. 반면 NOT EXISTS는 부속질의문의 모든 행이 조건에 만족하지 않을 때만 참이다.

 

* TOP n

실행 결과에서 상위 N개의 행만 반환한다.

 

 

728x90

'IT 지식 기록 > MSSQL' 카테고리의 다른 글

MSSQL 시작하기  (0) 2021.01.11
Comments