Develop/DataBase

[3주차] SQL 기초 (SELECT문)

SpruceMoon 2026. 3. 21. 21:47

1. SELECT 문

 - 데이터베이스 테이블에서 원하는 데이터를 가져오는 가장 기본 명령어

 

질의#1: 모든 도서의 이름과 가격을 검색하세요.

- SELECT 뒤에는 추출할 열 이름 지정 (모든 열을 가져올 때 :: * 기호 사용)

- FROM 뒤에는 데이터를 빼올 대상 테이블 이름 작성

 

 

 

질의#2: 모든 도서의 도서번호, 도서이름, 출판사, 가격을 검색하세요.

 

질의#3: 도서 테이블에 있는 모든 출판사를 검색하세요.

2. WHERE 

 

질의#4: 가격이 20,000원 미만인 도서를 검색하세요.

질의#5: 가격이 10,000원 이상 20,000원 이하인 도서를 검색하세요.

2.1.집합 조건 (IN, NOT IN)

 

 

질의#6: 출판사가 '굿스포츠' 혹은 '대한미디어'인 도서를 검색하세요.

 - IN 집합 조건 사용!

 

질의#7: 출판사가 '굿스포츠' 혹은 '대한미디어'가 아닌 도서를 검색하세요.

 - NOT 을 IN 앞에 붙여서 간단히 반대 조건 만들기

2.2. 패턴 검색 (LIKE, 와일드카드)

질의#8: '축구의 역사'를 출간한 출판사를 검색하세요.

- LIKE를 사용해 검색할 수 있다!

 

질의#9: 도서이름에 '축구'가 포함된 출판사를 검색하세요.

- 앞뒤로 어떤 글자가 오든 축구라는 단어만 있으면 다 보여줌

 

 

2.3. 복합 조건 (AND, OR)

 

질의#11: 축구에 관한 도서 중 가격이 20,000원 이상인 도서를 검색하시오.

질의#12: 출판사가 '굿스포츠' 혹은 '대한미디어'인 도서를 검색하시오.

 

질의#13: 출판사가 '대'로 시작하는 5자리 이름을 가진 도서 정보 검색하기

 - 언더바(_)를 글자수만큼 넣어서 검색하면 됨.

3. ORDER BY

- SQL문의 실행 결과를 정렬해서 보여줌.

- 오름차순 : ASC(기본값이라서 생략 가능) / 내림차순 : DESC

 

질의#15: 도서를 가격순으로 검색하고, 가격이 같으면 이름순으로 검색하세요.

4. 집계 함수

- 단순 검색을 넘어 합계, 평균 등의 계산이 필요할 때 사용 (NULL은 제외)

- 주의 :: WHERE 절에서는 사용 X / SELECTHAVING 절에서만 사용 가능

질의#17: custid가 2번인 고객이 주문한 도서의 총판매액을 구하고 이름을 '총매출'로 변경하세요.

 

질의#18: 고객이 주문한 도서의 총판매액, 평균값, 최저가, 최고가를 구하세요.

 

질의#19: 마당서점의 도서 판매건수를 구하세요.
 - COUNT 함수로 행의 개수를 세기 (괄호 안에 *를 넣으면 전체 데이터 개수를 세줌)

5. GROUP BY와 HAVING

- 집계 함수를 특정 그룹별로 나누어서 계산하고 싶을 때 GROUP BY 사용

- 이 그룹화된 결과에 다시 조건을 걸어 필터링할 때 HAVING 사용

 

질의#20: 고객별로 주문한 도서의 총수량과 총판매액을 구하세요. (속성이름은 '도서수량'과 '총액'을 사용하세요.)

 - 고객별로 묶어서 계산해야 해서 GROUP BY custid

 

 

6. 조인(JOIN)

- JOIN :: 나누어진 테이블들을 연결하여 한 번에 원하는 데이터를 검색

6.1.두 개 이상의 테이블 조인하기

- 조인을 할 때는 FROM 절에 연결할 테이블을 모두 적고, WHERE 절에 두 테이블이 연결되는 조건(일반적으로 외래키와 기본키)을 적어줍니다.

 

 

질의#22: 고객과 고객의 주문에 관한 데이터를 모두 나타내세요.

 
질의#25: 고객별로 주문한 모든 도서의 총판매액을 구하고, 고객별로 정렬하세요.
 - JOIN과 GROUP BY를 함께 사용

6.2. 세 개의 테이블 조인하기

 

 

질의#26: 고객의 이름과 고객이 주문한 도서의 이름을 구하세요. 

 

질의#27: 가격이 20,000원인 도서를 주문한 고객의 이름과 도서의 이름을 구하세요.

7. 외부조인(OUTER JOIN)

- OUTER JOIN :: 조건을 만족하지 않는 데이터까지 모두 검색

질의#28: 도서를 구매하지 않은 고객을 포함하여 고객의 이름과 고객이 주문한 도서의 판매가격을 구하세요.

 - LEFT OUTER JOIN 사용

 


3장 연습문제 풀기!!!

 

1. 박지성의 총 구매액 구하기

2. 마당서점에서 고객의 이름과 고객별 구매액 구하기

3. 고객의 이름과 고객이 구매한 도서 목록

4. 박지성이 구매한 도서의 출판사 수

5. 박지성이 구매하지 않은 도서의 이름

'Develop > DataBase' 카테고리의 다른 글

[6주차] 뷰, 함수, 프로시져  (1) 2026.04.11
[5주차] SQL 고급 쿼리  (0) 2026.04.04
[4주차] SQL 기초 (JOIN, CREATE, ALTER, DROP)  (0) 2026.03.28
[2주차] 관계 데이터 모델 (DBMS)  (0) 2026.03.14
[1주차] Database와 SQL  (0) 2026.03.07