카테고리 없음
[SQL] 데이터 조작어 - SELECT 문
혀내
2022. 12. 24. 00:41
반응형
SELECT문의 구조
SELECT [ALL | DISTINCT] 속성이름(들)
FROM 테이블이름(들)
[WHERE 검색조건(들)]
[GROUP BY 속성이름]
[HAVING 검색조건(들)]
[ORDER BY 속성이름 [ASC | DESC]]
ex)
SELECT name, NVL(phone, '연락처업슴')
FROM Customer;
Where 절
검색할 데이터의 조건을 설정할 수 있다.
SELECT * FROM Customers
WHERE address LIKE "%서울%";
Where 절에서 사용할 수 있는 조건 술어
술어 | 연산자 |
비교 | =, <, >, <=, >= |
범위 | BETWEEN |
집합 | IN, NOT IN |
패턴 | LIKE |
NULL | IS NULL, IS NOT NULL |
복합조건 | AND, OR, NOT |
Order 절
검색 결과를 특정 조건에 따라 정렬할 때 사용한다.
SELECT * FROM Customers
ORDER BY age;
- 내림차순: DESC
- 오름차순: ASC (Default 값)
Group By 절
데이터를 조회할 때, 특정 기준으로 그룹화할 수 있다.
1. GROUP BY 속성
SELECT custid, SUM(saleprice)
FROM Orders
GROUP BY custid;
2. HAVING 검색조건
- GROUP BY 절로 그룹화할 때 HAVING 절을 이용해 검색 조건을 설정할 수 있다.
- 반드시 WHERE 절보다 뒤에 나오도록 한다.
SELECT custid, COUNT(*) AS 도서 수량
FROM Orders
WHERE saleprice >= 8000
GROUP BY custid
HAVING COUNT(*) >= 2;
조인
내부조인
- 일반적으로 말하는 조인으로, INNER JOIN이라고 명시하기도 한다.
- FROM 절과 WHERE 절에 조인 조건을 명시한다.
SELECT <속성들>
FROM 테이블1, 테이블2
WHERE <조인조건> AND <검색조건>
SELECT <속성들>
FROM 테이블1 INNER JOIN 테이블2 ON <조인조건>
WHERE <검색조건>
예시)
SELECT *
FROM Customer, Orders;
외부조인
- LEFT OUTER JOIN
- RIGHT OUTER JOIN
- FULL OUTER JOIN
- ON 절에서 조인 조건을 명시한다.
SELECT <속성들>
FROM 테이블1 {LEFT | RIGHT | FULL [OUTER]} JOIN
테이블2 ON <조인조건>
WHERE <검색조건>
예시)
SELECT Customer.name, saleprice
FROM Customer LEFT OUTER JOIN Orders
ON Customer.custid = Orders.custid;
조인 대신 부속질의를 사용해 같은 결과를 낼 수도 있다.
부속질의 예시)
SELECT bookname
FROM Book
WHERE price = (SELECT MAX(price)
FROM Book);
집합연산
SELECT 절끼리 집합 연산을 수행할 수 있다.
집합 연산 종류
- 합집합(UNION)
- 차집합(MINUS)
- 교집합(INTERSECT)
예시)
SELECT name
FROM Customer
MINUS
SELECT name
FROM Customer
WHERE custid IN (SELECT custid
FROM Orders);
EXISTS 절
부속질의문의 어떤 행이 조건에 만족하면 참을 반환한다.
연산 종류
- EXISTS
- NOT EXISTS
SELECT name, address
FROM Customer cs
WHERE EXISTS (SELECT * FROM Orders od WHERE cs.custid = od.custid);
반응형