2022-03-31 DataBase_2

2022. 3. 31. 16:12BE/DB

강의는 MSSQL를 사용해서 진행했다.

 

아래 예시에서 사용할 릴레이션(테이블)은 아래와 같다.

 

customerTable

custid name address phone
1 박지성 영국 맨체스터 000-5000-0001
2 김연아 대한민국 서울 000-6000-0001
3 장미란 대한민국 강원도 000-7000-0001
4 추신수 미국 클리블랜드 000-8000-0001
5 박세리 대한민국 대전 NULL

 

bookTable

bookid bookname publisher price
1 축구의 역사 굿스포츠 7000
2 축구아는 여자 나무수 13000
3 축구의 이해 대한미디어 22000
4 골프 바이블 대한미디어 35000
5 피겨 교본 굿스포츠 8000
역도 단계별기술 굿스포츠 6000
7 야구의 추억 이상미디어 20000
8 야국를 부탁해 이상미디어 13000
9 올림픽 이야기 삼성당 7500
10 Olympic Champions Pearson 13000

 

orderTable

orderid custid bookid saleprice orderdate
1 1 1 6000 2014-07-01
2 1 3 21000 2014-07-03
3 2 5 8000 2014-07-03
4 3 6 6000 2014-07-04
5 4 7 20000 2014-07-05
6 1 2 12000 2014-07-07
7 4 8 13000 2014-07-07
8 3 10 12000 2014-07-08
9 2 10 7000 2014-07-09
10 3 8 13000 2014-07-10

예제

1.

SELECT *
FROM orderTable
WHERE saleprice>6000;

SELECT *
FROM bookTable
WHERE price>3000 AND price<20000
WHERE price BETWEEN 3000 AND 20000

 

비교 연산자 =  <  >  <=  >=
범위 BETWEEN
집합 IN, NOT IN
패턴 LIKE
NULL IS NULL, IS NOT NULL
복합조건 AND, OR, NOT

 

2.

SELECT DISTINCT publisher
FROM book;

중복 제거를 원하면 DISTINCT  사용.

 

3.

 

SELECT *
FROM bookTable
WHERE publisher IN ('굿스포츠', '대한미디어');

SELECT *
FROM bookTable
WHERE publisher NOT IN ('굿스포츠', '대한미디어');

 

4.

SELECT bookname, publisher
FROM bookTable
WHERE bookname LIKE '축구의 역사';
//MSSQL기준 이건 ORACLE SYNTAX라서 원하는 결과가 나오지 않아요!

SELECT bookname, publisher
FROM bookTable
WHERE bookname = '축구의 역사';

SELECT bookname, publisher
FROM bookTable
WHERE bookname LIKE '%축구의 역사%';

////////////////////////////////////////////////////////////////////////

SELECT bookname, publisher
FROM bookTable
WHERE bookname LIKE '%축구%';

 

와일드문자의 종류
+ 문자열 연결 '골프'+'바이블'
% 0개 이상의 문자열 일치 ‘%축구%’
[] 1개의 문자와 일치 ‘[0-5]%’ : 0~5 사이 숫자로 시작하는 문자열
[^] 1개의 문자와 불일치 ‘[^0-5]%’ : 0-5 사이 숫자로 시작하지 않는 문자열
_ 특정 위치의 1개의 문자와 일치 ‘_구%’ : 두 번째 위치에 ‘구’가 들어가는 문자열

 

5.

SELECT *
FROM bookTable
ORDER BY price, bookname;
SELECT bookid, saleprice
FROM orderTable
ORDER BY bookid;

 

6.

SELECT SUM(saleprice) AS Total,
		AVG(saleprice) AS Average,
		MIN(saleprice) AS MInimum,
		MAX(saleprice) AS Maximum
FROM orderTable;

 

집계 함수
SUM 총합
AVG 평균값
MIN 최저값
MAX 최고값
COUNT 항목의 수

 

7.

SELECT * 
FROM orderTable;

SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM orderTable
GROUP BY custid;

 

SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM orderTable;
//오류발생

SELECT custid, saleprice
FROM orderTable
GROUP BY custid

//오류발생

SELECT COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM orderTable;

SELECT custid, SUM(saleprice)
FROM orderTable
GROUP BY custid;

//GROUP과 집계 함수의 관계

 


 

'BE > DB' 카테고리의 다른 글

[DB] DML  (0) 2022.04.07
2022-04-06 Database_3  (0) 2022.04.07
[MySQL] 스키마 & 테이블  (0) 2022.04.05
[MySQL] 설치 및 접속  (0) 2022.03.26
2022-03-16 DataBase_1  (0) 2022.03.16