SQL

단비·2025년 5월 13일
1
post-thumbnail

오늘의 후기

학부시절 들었던.. 전공수업을 다시 듣는 기분이었다..
SQL을 오랜만에 보니까 반갑기도 하고......
2학년때는 이게 너무 어렵게 느껴졌었는데
아무래도 지금은 좀 나아지긴 했으나 안쓴지 오래돼서 기억이 안남
SQLD에서 쓰는 함수들이 실무에서는 안쓴다는게 충격적이었다....

기본문법

2만원 이상인 책의 데이터

SELECT *
FROM book
WHERE price <= 20000;

1축구의역사굿스포츠7000
2축구아는 여자나무수13000
5피겨 교본굿스포츠8000
6역도 단계별기술굿스포츠6000
8야구를 부탁해이상미디어13000
9올림픽 이야기삼성당7500
10Olympic ChampionsPearson13000

출판사가 굿스포츠, 대한미디어인 데이터


select *
from book
where publisher IN ('굿스포츠', '대한미디어');

select *
from book
where publisher = '굿스포츠' or publisher = '대한미디어';

1축구의역사굿스포츠7000
3축구의 이해대한미디어22000
4골프 바이블대한미디어35000
5피겨 교본굿스포츠8000
6역도 단계별기술굿스포츠6000

도서이름에 ‘축구’가 포함된 출판사를 검색하시오

select bookname, publisher
from book
where bookname LIKE ‘%축구%’

%축구 = 앞에 어떤글자와도 상관없고 뒤에 두 글자만 축구
축구% = 앞에 두 글자는 축구 뒤에는 어떤 글자가 와도 상관없음

ORDER BY = 정렬

2만원 이하인 도서 가격 내림차순으로 정렬

select *
from book
where price <= 20000
order by price desc;

COUNT(publisher)는 출판사의 수를 센다.
COUNT(DISTINCT publisher)는 중복을 제거한 출판사의 수를 세어준다.

GROUP BY

select custid, count(*) AS 도서수량, sum(saleprice) AS 총액
from orders
group by custid;

custid도서수량총액
1339000
2215000
3331000
4233000

HAVING 절은 GROUP BY 절의 결과 나타나는 그룹을 제한하는 역할을 함
– where절이랑 똑같은데 groupby 한 것에 조건거는거라고 생각

JOIN

조인 = 테이블 합치기

도서를 구매한 고객의 custid, custname과 총 구매수량

SELECT orders.custid, customer.custname, COUNT(*) AS 도서수량
FROM orders, customer
WHERE orders.custid = customer.custid
AND saleprice >= 8000
GROUP BY orders.custid, customer.custname
HAVING COUNT(
) >= 2;

custidcustname도서수량
1아이언맨2
4헐크2
3스파이더맨2

LEFT OUTER JOIN은 주문안한 고객을 보고 싶을 때
right outer 조인했는데 여기서 데이터가 나온다면 데이터 무결성 조건 깨진 것임!
why? 없는 고객이 주문을 했다...!

서브쿼리

-조인으로 하는 법

select distinct(O.custid), custname
from orders O, customer C
where O.custid = C.custid

-서브쿼리

select custid, custname
from customer
where custid IN (select distinct custid from orders)

1아이언맨
2블랙위도우
3스파이더맨
4헐크

0개의 댓글