728x90

➡️SQL 기본
-SQL은 관계형 데이터 베이스에 표준 언어이다.
-SQL은 기능에 따라 데이터 정의어(DDL),데이터 조작어(DML),데이터 제어어(DCL)로 나뉜다.
- 데이터 정의어 : 테이블이나 관계의 구조를 생성하는 데 사용하며 CREATE,ALTER,DROP 문 등이 있다.
- 데이터 조작어 : 테이블에 데이터를 검색,삽입,수정,삭제하는 데 사용하며 SELECT,INSERT,DELETE,UPDATE 문 등이 있다. 여기서 SELECT 문은 질의어라고 부른다.
- 데이터 제어어 : 데이터의 사용 권한을 관리하는 데 사용하며 GRANT,REVOKE 문 등이 있다.
➡️데이터 조작어 -검색
-SQL에서 SELETE 문은 데이터를 검색하는 기본 문장으로, 특별히 질의어라고 부른다.
-SELECT 문은 검색한 결과를 테이블 형태로 출력한다.
-SELECT 문의 문장 프레임 워크는 다음과 같다.
| SELECT : 질의 결과 추출되는 속성 리스트를 열거한다. FROM : 질의에 어느 테이블이 사용되는지 열거한다. WHERE : 질의의 조건을 작성한다. |
-예로 다음과 같이 작성할 수 있다.(ex_ "10000원 이상인 도서의 이름과 출판사를 보이시오.")
SELECT bookname,publisher (속성 이름)
FROM Book (테이블 이름)
WHERE price >= 10000; (검색 조건)
SELECT 문의 기본 문법은 다음과 같다.
| SELECT [ALL | DISTINCT]속성이름(들) FROM 테이블이름 WHERE 검색조건(들) GROUP BY 속성이름 HAVING 검색조건(들) ORDER BY 속성이름[ASC | DESC] SELECT와 FROM을 제외하고 나머지 문법들은 선택적으로 사용할 수 있다. | : 는 선택 가능한 문법들 중 한 개를 사용할 수 있다. |

👉WHERE
| (ex_ "가격이 10000원 이상 20000원 이하인 도서를 검색하세요.") SELECT * FROM Book WHERE price >= 10000 AND price <= 20000 ; ![]() (ex_ "출판사가 '굿스포츠' 혹은 '대한미디어'인 도서를 검색하세요.") SELECT * FROM Book WHERE publisher IN('굿스포츠','대한미디어') ![]() (ex_ "도서이름에 '축구'가 포함된 출판사를 검색하세요.") SELECT bookname,publisher FROM Book WHERE bookname LIKE '%축구%'; ![]() |
👉ORDER BY
| (ex_ "도서를 가격순으로 검색하고, 가격이 같으면 이름순으로 검색하세요.") SELECT * FROM Book ORDER BY price,bookname; ![]() (ex_ "도서의 가격을 내림차순으로 검색하고, 만약 가격이 같다면 출판사의 오름차순으로 출력하세요.") SELECT * FROM Book ORDER BY price DESC,publisher ASC; (DESC: 내림차순 ASC: 오름차순) ![]() |
👉GROUP BY (+집계 함수)
| (ex_ "고객이 주문한 도서의 총 판매액을 구하시오") SELECT SUM(saleprice) AS 총매출 ||(AS: 의미있는 열 이름을 출력하려고 할때 별칭을 사용한다.) FROM Orders; ![]() (ex_ "2번 김연아 고객의 주문한 도서의 총 판매액을 구하시오") SELECT SUM(saleprice) FROM Orders WHERE custid =2; ![]() (ex_ "고객별로 주문한 도서의 총 수량과 총 판매액을 구하시오.") SELECT custid,COUNT(*),SUM(saleprice) FROM Orders GROUP BY custid; ![]() |
👉HAVING (+ HAVING 절은 GROUP BY절의 결과 나타나는 그룹을 제어하는 역할을 한다.)
| (ex_"가격이 8000원이상인 도서를 구매한 고객에 대하여 고객별로 주문 도서의 총 수량을 수하시오. 단 , 두권 이상 구매한 고객만 구하시오") SELECT custid,COUNT(*) FROM Orders WHERE saleprice >= 8000 GROUP BY custid HAVING count(*) >=2 ; ![]() |
➕두 개 이상 테이블에서 SQL 질의 ➕
| (ex_"고객별로 주문한 모든 도서의 총 판매액을 구하고 ,고객별로 정렬하세요.") SELECT name,SUM(saleprice) FROM Customer,Orders WHERE Customer.custid=Orders.custid GROUP BY Customer.name ORDER BY Customer.name; ![]() (ex_"고객의 이름과 고객이 주문한 도서의 이름을 구하시오.") SELECT Customer.name,Book.bookname FROM Customer,Orders,Book WHERE Customer.custid = Orders.custid AND Orders.bookid = Book.bookid; ![]() (ex_"가격이 20000원인 도서를 주문한 고객의 이름과 도서의 이름을 구하시오.") SELECT Customer.name, Book.bookname FROM Customer,Orders,Book WHERE Customer.custid=Orders.custid AND Orders.bookid=Book.bookid AND Book.price=20000; ![]() (ex_"가장 비싼 도서의 이름을 보이시오.") SELECT bookname FROM Book WHERE price = (SELECT MAX(price)FROM Book); ![]() (ex_"도서를 구매한 적이 있는 고객의 이름을 검색하세요.") SELECT name FROM Customer WHERE custid IN(SELECT custid FROM Orders); ![]() (ex_"대한민국에서 거주하는 고객의 이름과 도서의 주문한 고객의 이름을 보이시오.") SELECT name FROM Customer WHERE address LIKE"%대한민국%" UNION SELECT name FROM Customer WHERE custid IN(SELECT custid FROM Orders); ![]() |
728x90
'Dev > Database' 카테고리의 다른 글
| [DB]이상현상(Anomly), 함수 종속성 (Functional Dependency) (0) | 2021.09.13 |
|---|---|
| [DB] 정규화(Normalization) (0) | 2021.09.11 |
| Redis란? (1) | 2021.08.16 |
| 데이터 베이스 시스템 개념 (0) | 2021.07.20 |
| DBMS란 무엇인가 (0) | 2021.07.11 |














