-- ํ
์ด๋ธ์ ๋ฐ์ดํฐํ์ ๋ฐ ์ ์ฝ ์กฐ๊ฑด ๋ณ๊ฒฝ
DROP SCHEMA IF EXISTS bookdb;
CREATE SCHEMA bookdb;
USE bookdb;
# ํ
์ด๋ธ publisher
-- ๋ฐ์ดํฐ ์ ํ ๋ณ๊ฒฝ
ALTER TABLE publisher
MODIFY pubNo VARCHAR(10) NOT NULL,
MODIFY pubName VARCHAR(20);
-- ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ
ALTER TABLE publisher
ADD CONSTRAINT PK_publisher_pubNo
PRIMARY KEY (pubNo);
# ํ
์ด๋ธ book
-- ๋ฐ์ดํฐ ์ ํ ๋ณ๊ฒฝ
ALTER TABLE book
MODIFY bookNo VARCHAR(10) NOT NULL,
MODIFY bookName VARCHAR(20),
MODIFY bookAuthor VARCHAR(30),
MODIFY bookDate DATE,
MODIFY pubNo VARCHAR(10) NOT NULL;
-- ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ
ALTER TABLE book
ADD CONSTRAINT PK_book_bookNo
PRIMARY KEY (bookNo);
ALTER TABLE book
ADD CONSTRAINT FK_book_pubNo
FOREIGN KEY (pubNo)
REFERENCES publisher(pubNo);
# ํ
์ด๋ธ bookclient
-- ๋ฐ์ดํฐ ์ ํ ๋ณ๊ฒฝ
ALTER TABLE bookclient
MODIFY clientNo VARCHAR(10) NOT NULL,
MODIFY clientName VARCHAR(30),
MODIFY clientPhone VARCHAR(15),
MODIFY clientAddress VARCHAR(50),
MODIFY clientBirth DATE,
MODIFY clientHobby VARCHAR(30),
MODIFY clientGender VARCHAR(1);
-- ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ
ALTER TABLE bookclient
ADD CONSTRAINT PK_bookclient_clientNo
PRIMARY KEY (clientNo);
# ํ
์ด๋ธ booksale
-- ๋ฐ์ดํฐ ์ ํ ๋ณ๊ฒฝ
ALTER TABLE booksale
MODIFY bsNo VARCHAR(10) NOT NULL,
MODIFY bsDate DATE,
MODIFY clientNo VARCHAR(10) NOT NULL,
MODIFY bookNo VARCHAR(10) NOT NULL;
-- ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ
ALTER TABLE booksale
ADD CONSTRAINT PK_booksale_bsNo
PRIMARY KEY (bsNo);
ALTER TABLE booksale
ADD CONSTRAINT FK_booksale_clientNo
FOREIGN KEY (clientNo)
REFERENCES bookclient(clientNo);
ALTER TABLE booksale
ADD CONSTRAINT FK_booksale_bookNo
FOREIGN KEY (bookNo)
REFERENCES book(bookNo);
| book | bookclient |
|---|---|
![]() | ![]() |
| booksale | publisher |
|---|---|
![]() | ![]() |
๋ด๋ถ์กฐ์ธ(INNER JOIN):SELECT ์ด๋ฆฌ์คํธ
FROM ํ
์ด๋ธ1, ํ
์ด๋ธ2
WHERE ํ
์ด๋ธ1.ํค = ํ
์ด๋ธ2.ํค;
-- ๋์ ์ฃผ๋ฌธํ ๊ณ ๊ฐ ๋ช
๋จ(์ด๋ฆ)๊ณผ ์ฃผ๋ฌธ๋ ์ถ๋ ฅ
SELECT bookdb.bookclient.clientNo,
bookdb.bookclient.clientName,
bookdb.booksale.bsQty
FROM bookdb.booksale, bookdb.bookclient
WHERE bookdb.booksale.clientNo = bookdb.bookclient.clientNo;
- ์ถ๋ ฅ
โ
FROM ๋ฌธ์์ SCHEMA๋ช
.TABLE๋ช
์ ๋ณ์นญ์ผ๋ก ์ง์ ํ์ฌ ์ฌ์ฉ
SELECT BC.clientNo,
BC.clientName,
BS.bsQty
FROM bookdb.booksale BS, bookdb.bookclient BC
WHERE BS.clientNo = BC.clientNo;
SELECT ์ด๋ฆฌ์คํธ
FROM ํ
์ด๋ธA
JOIN ํ
์ด๋ธB
ON ํ
์ด๋ธA.์ปฌ๋ผc = ํ
์ด๋ธB.์ปฌ๋ผc;
SELECT BC.clientNo,
BC.clientName,
BS.bsQty
FROM bookdb.bookclient BC
JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo;
SELECT ์ด๋ฆฌ์คํธ
FROM ํ
์ด๋ธA
INNER JOIN ํ
์ด๋ธB
ON ํ
์ด๋ธA.์ปฌ๋ผc = ํ
์ด๋ธB.์ปฌ๋ผc;
SELECT BC.clientNo,
BC.clientName,
BS.bsQty
FROM bookdb.bookclient BC
INNER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo;
clientNo ์ด ๋ ๋ฒ)SELECT *
FROM bookdb.bookclient BC
INNER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo;
- ์ถ๋ ฅ

DISTINCT)ORDER BY)SELECT DISTINCT BC.clientNo, BC.clientName
FROM bookdb.bookclient BC
INNER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo
ORDER BY BC.clientName;
-- ์ฃผ๋ฌธํ ๊ณ ๊ฐ์ ์ ๋ณด(๋ฒํธ, ์ด๋ฆ), ๋์์ ๋ณด(์ฑ
์ ๋ชฉ, ์ฑ
๊ฐ๊ฒฉ), ์ฃผ๋ฌธ์ ๋ณด(์ฃผ๋ฌธ๋ฒํธ, ์ฃผ๋ฌธ์ผ์, ์ฃผ๋ฌธ์, ์ฃผ๋ฌธ๊ธ์ก)๋ฅผ ์ต๊ทผ ์ฃผ๋ฌธ์ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅ
SELECT BS.bsNo, BS.bsDate, BC.clientNo, BC.clientName, B.bookName,
B.bookPrice, BS.bsQty, B.bookPrice * BS.bsQty AS ์ฃผ๋ฌธ๊ธ์ก
FROM bookdb.booksale BS
INNER JOIN bookdb.bookclient BC ON BS.clientNo = BC.clientNo
INNER JOIN bookdb.book B ON BS.bookNo = B.bookNo
ORDER BY BS.bsDate DESC;
SELECT ์ด๋ฆฌ์คํธ
FROM ํ
์ด๋ธ1
LEFT OUTER JOIN ํ
์ด๋ธ2
ON ์กฐ์ธ์กฐ๊ฑด(๊ธฐ๋ณธํค=์ธ๋ํค);
bookclient ํ
์ด๋ธ์ ์ ๋ณด๋ ๋ชจ๋ ์ ์งํ๋ฉด์ LEFT OUTER JOIN ์ ์งํํ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ธ bookdsale ํ
์ด๋ธ์ ์ ๋ณด๊ฐ ์์ด๋ NULL ๊ฐ์ผ๋ก ํ์ํ ๋ชจ์ต์ด๋ค.SELECT *
FROM bookdb.bookclient BC
LEFT OUTER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo
ORDER BY BC.clientNo;
- ์ถ๋ ฅ

Ex) ๊ณ ๊ฐ(client) ์ค ํ๋ฒ๋ ๊ตฌ๋งคํ ์ ์ด ์๋ ๊ณ ๊ฐ ๋ช ๋จ์ ๊ตฌํด๋ณด์.
bookclient)์ ์ ์งํ๋ฉด์ ํ๋งค๊ธฐ๋ก(booksale)์ ์๋ ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ๊ตฌํ๋ฉด ๋๊ธฐ์ bookclient๋ฅผ ์ผ์ชฝ์ ๋ LEFT OUTER JOIN์ ์งํํ๋ฉด ๋๋ค.-- ๊ณ ๊ฐ ์ค ํ๋ฒ๋ ๊ตฌ๋งคํ ์ ์ด ์๋ ๊ณ ๊ฐ ์ถ๋ ฅ
SELECT BC.clientNo, BC.clientName
FROM bookdb.bookclient BC
LEFT OUTER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo
WHERE BS.clientNo IS NULL
ORDER BY BC.clientNo;
SELECT ์ด๋ฆฌ์คํธ
FROM ํ
์ด๋ธ1
RIGHT OUTER JOIN ํ
์ด๋ธ2
ON ์กฐ์ธ์กฐ๊ฑด(๊ธฐ๋ณธํค=์ธ๋ํค);
Ex) ํ๋ฒ์ด๋ผ๋ ์ฃผ๋ฌธํ ์ ์ด ์๋ ๊ณ ๊ฐ์ ๋ฒํธ์ ์ด๋ฆ์ ์ถ๋ ฅํ๋ ์ค๋ณต๋ ๊ฒฝ์ฐ ํ๋ฒ๋ง ์ถ๋ ฅํด๋ณด์.
booksale) ์ ๋ณด๋ฅผ ์ ์งํ๋ฉฐ ํด๋น ํ
์ด๋ธ์ ์๋ clientNo๋ฅผ ํตํด ๊ณ ๊ฐ์ ๋ณด๋ฅผ ์ถ๋ ฅํด์ผํ๊ธฐ์ booksale ํ
์ด๋ธ์ ์ค๋ฅธ์ชฝ์ ๋ RIGHT OUTER JOIN๋ฅผ ์งํํ๋ค.-- ํ๋ฒ์ด๋ผ๋ ์ฃผ๋ฌธํ ์ ์ด ์๋ ๊ณ ๊ฐ์ ๋ฒํธ์ ์ด๋ฆ ์ถ๋ ฅ, ์ค๋ณต๋ ๊ฒฝ์ฐ ํ๋ฒ๋ง ์ถ๋ ฅ
SELECT DISTINCT BC.clientNo, BC.clientName
FROM bookdb.bookclient BC
RIGHT OUTER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo
ORDER BY BC.clientNo;
- ์ถ๋ ฅ
FULL OUTER JOIN ๋ช
๋ น์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ํด๋น ์กฐ์ธ์ ์คํํ๋ ค๋ฉด LEFT OUTER JOIN ๊ณผ RIGHT OUTER JOIN ์ UNION ํ๋ค.(SELECT *
FROM bookdb.bookclient BC
LEFT OUTER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo)
UNION
(SELECT *
FROM bookdb.bookclient BC
RIGHT OUTER JOIN bookdb.booksale BS
ON BC.clientNo = BS.clientNo);