카테고리 없음

[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);
반응형