2022-03-31 DataBase_2
2022. 3. 31. 16:12ㆍBE/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 |
6 | 역도 단계별기술 | 굿스포츠 | 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 |