쑤쑤_CS 기록장
SQL 문 정리하기 - SELECT문, DB 코테 준비 본문
* 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 *
- 조건 추가. 만족된 결과를 획득. <동등 조인>
- SELECT *
FROM a, b
WHERE a.ID = b.ID;
- SELECT *
- 동등 조인의 표현. INNER JOIN
- SELECT *
FROM a INNER JOIN b
ON a.ID = b.ID;
- SELECT *
- 외부 조인
- SELECT 속성들
FROM a {LEFT / RIGHT / FULL (OUTER) } JOIN
b ON 조인 조건
WHERE 검색 조건
- SELECT 속성들
* 부족 질의 (중첩 질의)
: 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개의 행만 반환한다.
'IT 지식 기록 > MSSQL' 카테고리의 다른 글
MSSQL 시작하기 (0) | 2021.01.11 |
---|