2023. 5. 29. 00:17ใStudy_Develop/ํฌ์ค์ฝ X ์ฝ๋ฉ์จ ๋ถํธ์บ ํ
5์ฃผ์ฐจ ๋ถํฐ๋
๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ ์ ๋๊ฐ๋ค!
์๋ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ณต์์
์๊ฐ ์์ด๋ฃ๋ ๋๊ฐ..
์กฐ๊ธ์ ์๊ฐ์ด ๋๊ณ ..
์ผํ์ผํ ๊ธฐ์ต ๋์ง๋ง
๋จธ๋ฆฌ์์ ํฌ๋ฏธํ๊ฒ ์ฌ๋ผ์ง ๊ทธ..
๋ฐ์ดํฐ ๋ฒ ์ด์ค..
mysql..
ํ์ ์์ , ์๋ฃ๋ก๋
์ด ๋ฐฉ๋ํ sql์ ์ดํดํ๋๋ฐ
ํ๊ณ๊ฐ ์๋ ๊ฒ ๊ฐ์
์๋ ๊ต์๋์ด ์ฃผ์ ์๋ฃ๋ฅผ
๋ค์๊ธ ๊บผ๋ด ๋ค์๋ค..
์๋ก์๋ก ์๊ฐ์ด ๋๋๊ตฐ..
๊ทธ๋ ์ ๋๋ก ์ข ๊ณต๋ถ ํ ๊ป..
ํํํด๋ณด์ง๋ง
์ด๋ฏธ ๋ฆ์๋ค
์ด์ ๋ผ๋ ์ ๋๋ก ํ์ ใ
SQL์ด๋
- SQL์ ๋น์ ์ฐจ์ ์ธ์ด์ด๋ฏ๋ก
์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐ (what)๋ง ๋ช ์ํ๋ฉฐ,
์ํ๋ ๊ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ(how)์
๋ช ์ํ ์ ์๋ค.
- DBMS๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ
SQL๋ฌธ์ ๋ฒ์ญํ์ฌ ์ฌ์ฉ์๊ฐ ์๊ตฌํ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ฐ ํ์ํ
๋ชจ๋ ๊ณผ์ ์ ๋ด๋นํ๋ค.
- ์์ฐ์ด์ ๊ฐ๊น์ด ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ
์ง์๋ฅผ ํํ ํ ์ ์๋ค.
SQL์ ๋ถ๋ฅ>
- ๋ฐ์ดํฐ ์ ์์ด (DDL)
: ํ ์ด๋ธ ์์ฑํ๊ณ ๋ณ๊ฒฝ, ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
- ๋ฐ์ดํฐ ์กฐ์์ด(DML)
: ํ ์ด๋ธ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ฑฐ๋,
ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ
์์ , ์ญ์ , ๊ฒ์ ํ๋ ๊ธฐ๋ฅ ์ ๊ณต
- ๋ฐ์ดํฐ ์ ์ด์ด(DCL)
: ๋ณด์์ ์ํด ๋ฐ์ดํฐ์ ๋ํ
์ ๊ทผ ๋ฐ ์ฌ์ฉ ๊ถํ์ ์ฌ์ฉ์ ๋ณ๋ก
๋ถ์ฌํ๊ฑฐ๋ ์ทจ์ํ๋ ๊ธฐ๋ฅ ์ ๊ณต
SQL์ ์ด์ฉํ ๋ฐ์ดํฐ ์ ์
SQL์ ๋ฐ์ดํฐ ์ ์ ๊ธฐ๋ฅ
: ํ ์ด๋ธ ์์ฑ(CREATE), ๋ณ๊ฒฝ(ALTER), ์ญ์ (DROP)
๐ ํ ์ด๋ธ ์์ฑ
- CREATE TABLE ๋ฌธ
: []์ ๋ด์ฉ์ ์๋ต์ด ๊ฐ๋ฅํ๋ค
: SQL ์ง์๋ฌธ์ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๋ฌธ์ฅ์ ๋์ ํ์ํ๊ณ ,
๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.
1. ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ ๊ฐ ์์ฑ์ ์ด๋ฆ,
๋ฐ์ดํฐ ํ์ , ๊ธฐ๋ณธ ์ ์ฝ ์ฌํญ ์ ์
2. ๊ธฐ๋ณธํค ์ ์
3. ๋์ฒดํค ์ ์
4. ์ธ๋ํค ์ ์
5. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ํ ์ ์ฝ ์กฐ๊ฑด ์ ์
ํ ์ด๋ธ ์์ฑ ์์ฑ>
NOT NULL
: ์์ฑ์ด ๋๊ฐ์ ํ์ฉํ์ง ์์
DEFAULT
: ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ํค์๋
ํ ์ด๋ธ ์์ฑ ํค>
โPRIMARY KEY
: ๊ธฐ๋ณธํค๋ฅผ ์ง์ ํ๋ ํค์๋
โUNIQUE
: ๋์ฒดํค๋ฅผ ์ง์ ํ๋ํค์๋
: ๋์ฒดํค๋ก ์ง์ ๋๋ ์์ฑ์ ๊ฐ์ ์ ์ผ์ฑ์ ๊ฐ์ง๋ฉฐ,
๊ธฐ๋ณธํค์ ๋ฌ๋ฆฌ ๋ ๊ฐ์ ํ์ฉ๋๋ค
UNIQUE(๊ณ ๊ฐ์ด๋ฆ)
โFOREIGN KEY
: ์ธ๋ํค๋ฅผ ์ง์ ํ๋ ํค์๋
: ์ธ๋ํค๊ฐ ์ด๋ค ํ ์ด๋ธ์ ์์ฑ์ ์ฐธ์กฐํ๋์ง
REFERENCES ํค์๋ ๋ค์์ ์ ์
: ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ์ ์ง๋ฅผ ์ํด ์ฐธ์กฐ๋๋ ํ ์ด๋ธ์์
ํฌํ ์ญ์ ์ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ์ต์
โCHECK
: ํ ์ด๋ธ์ ์ ํํ๊ณ ์ ํจํ ๋ฐ์ดํฐ๋ฅผ
์ ์งํ๊ธฐ ์ํด ํน์ ์์ฑ์ ๋ํ ์ ์ฝ์กฐ๊ฑด์ ์ง์ ํ๋ค.
: CONSTRAINT ํค์๋์ ํจ๊ป
๊ณ ์ ์ ์ด๋ฆ์ ๋ถ์ฌํ ์๋ ์๋ค.
CHECK (์ฌ๊ณ ๋>=0 AND ์ฌ๊ณ ๋ <=10000)
๊ณ ๊ฐํ ์ด๋ธ ์์ฑ
CREATE TABLE customer(
customer_id VARCHAR2(20) NOT NULL,
customer_name VARCHAR2(10) NOT NULL,
age NUMBER,
grade VARCHAR2(10) NOT NULL,
job_title VARCHAR2(20),
saved_money NUMBER DEFAULT 0,
PRIMARY KEY (customer_id)
)
-> ๊ณ ๊ฐ ์์ด๋ ์์ฑ์ด ๊ธฐ๋ณธํค๋ค.
-> ๊ณ ๊ฐ ์ด๋ฆ๊ณผ ๋ฑ๊ธ ์์ฑ์ ๊ฐ์ ๋ฐ๋์ ์ ๋ ฅํด์ผ ํ๊ณ ,
์ ๋ฆฝ๊ธ ์์ฑ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด
0์ด ๊ธฐ๋ณธ์ผ๋ก ์ ๋ ฅ๋๋ค.
์ ํ ํ ์ด๋ธ ์์ฑ
CREATE TABLE product(
product_no VARCHAR2(5) NOT NULL,
product_name VARCHAR2(20),
stock NUMBER,
unit_price NUMBER,
manufacturer VARCHAR2(20),
PRIMARY KEY (product_no),
CHECK (stock >= AND stock <=10000)
);
-> ์ ํ ํ ์ด๋ธ์ ์ ํ๋ฒํธ, ์ ํ ๋ช , ์ฌ๊ณ ๋, ๋จ๊ฐ,
์ ์กฐ ์ ์ฒด ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋๊ณ ,
์ ํ ๋ฒํธ ์์ฑ์ด ๊ธฐ๋ณธํค์ด๋ค.
-> ์ฌ๊ณ ๋์ด ํญ์ 0๊ฐ ์ด์
10000๊ฐ ์ดํ๋ฅผ ์ ์งํ๋ค.
์ฃผ๋ฌธ ํ ์ด๋ธ ์์ฑ
CREATE TABLE porder(
order_no VARCHAR2(5) NOT NULL,
customer_id VARCHAR2(20),
product_no VARCHAR2(5),
quantity NUMBER,
destination VARCHAR2(30),
order_date DATE,
PRIMARY KEY (order_no),
FOREIGN KEY (customer_id) REFERENCES customer (customer_id),
FOREIGN KEY (product_no) REFERENCES product(product_no)
);
-> ์ฃผ๋ฌธ ๊ณ ๊ฐ ์์ฑ์ด ๊ณ ๊ฐ ํ ์ด๋ธ์ ๊ณ ๊ฐ์์ด๋ ์์ฑ์
์ฐธ์กฐํ๋ ์ธ๋ํค์ด๊ณ ,
์ฃผ๋ฌธ ์ ํ ์์ฑ์ด ์ ํ ํ ์ด๋ธ์ ์ ํ ๋ฒํธ ์์ฑ์
์ฐธ์กฐํ๋ ์ธ๋ํค์ด๋ค.
๋ฐฐ์ก์ ์ฒด ํ ์ด๋ธ ์์ฑ
CREATE TABLE shipping_company(
company_no VARCHAR2(5) NOT NULL,
company_name VARCHAR2(20),
address VARCHAR2(100),
telephone VARCHAR2(20),
PRIMARY KEY (company_no)
);
-> ์ ์ฒด๋ฒํธ ์์ฑ์ด ๊ธฐ๋ณธํค
๐ํ ์ด๋ธ ๋ณ๊ฒฝ
ALTER TABLE ๋ฌธ
: ์๋ก์ด ์์ฑ์ ์ถ๊ฐ, ๊ธฐ์กด ์์ฑ์ ์ญ์ ,
์๋ก์ด ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐ/์ญ์ ๋ฑ์ด ๊ฐ๋ฅ
ex.
ALTER TABLE customer ADD join_data DATE;
-> ๊ณ ๊ฐ ํ ์ด๋ธ์ ๊ฐ์ ๋ ์ง ์์ฑ ์ถ๊ฐ
๊ธฐ์กด ์์ฑ์ ์ญ์
ex.
ALTER TABLE customer DROP COLUMN join_data;
-> ๊ณ ๊ฐํ ์ด๋ธ์ ๊ฐ์ ๋ ์ง ์์ฑ ์ญ์
์๋ก์ด ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐ
ALTER TABLE customer ADD CONSTRAINT chk_age CHECK(age >= 20);
-> ๊ณ ๊ฐ ํ ์ด๋ธ์ 20์ธ ์ด์์ ๊ณ ๊ฐ๋ง
๊ฐ์ ํ ์ ์๋ค๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐ
๊ธฐ์กด ์ ์ฝ์กฐ๊ฑด์ ์ญ์
ALTER TABLE customer DROP CONSTRAINT chk_age;
-> ๊ณ ๊ฐ ํ ์ด๋ธ์ 20์ธ ์ด์์ ๊ณ ๊ฐ๋ง ๊ฐ์ ํ ์ ์๋ค๋
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ญ์ ํ๋ค.
๐ ํ ์ด๋ธ ์ญ์
DROP TABLE shipping_company;
-> ๋ฐฐ์ก์ ์ฒด ํ ์ด๋ธ์ ์ญ์ ํ๋ค.
๋ง์ฝ, ์ญ์ ํ ํ ์ด๋ธ์ ์ฐธ์กฐํ๋ ํ ์ด๋ธ์ด ์๋ค๋ฉด?
- ํ ์ด๋ธ ์ญ์ ๊ฐ ์ํ๋์ง ์์
- ๊ด๋ จ๋ ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ ๋จผ์ ์ญ์ ํจ
SQL์ ์ด์ฉํ ๋ฐ์ดํฐ ์กฐ์
๋ฐ์ดํฐ ์กฐ์ ๊ธฐ๋ฅ
: ๋ฐ์ดํฐ ๊ฒ์, ์๋ก์ด ๋ฐ์ดํฐ ์ฝ์ , ๋ฐ์ดํฐ ์์ , ๋ฐ์ดํฐ ์ญ์
๐๋ฐ์ดํฐ ๊ฒ์
SELECT ๋ฌธ
: ํ ์ด๋ธ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ค.
1. ๊ธฐ๋ณธ ๊ฒ์
SELECT [ALL : DISTINCT] ์์ฑ_๋ฆฌ์คํธ
FROM ํ
์ด๋ธ_๋ฆฌ์คํธ;
- ALL
: ๊ฒฐ๊ณผ ํ ์ด๋ธ์ดํํ์ ์ค๋ณต์ ํ์ฉํ๋๋ก ์ง์
: ์๋ต ๊ฐ๋ฅ
DISTINCT
: ๊ฒฐ๊ณผ ํ ์ด๋ธ์ด ํฌํ์ ์ค๋ณต์
ํ์ฉํ์ง ์๋๋ก ์ง์
AS
: ๊ฒฐ๊ณผ ํ ์ด๋ธ์์
์์ฑ์ ์ด๋ฆ์ ๋ฐ๊พธ์ด ์ถ๋ ฅ ๊ฐ๋ฅํ๋ค
: ์๋ก์ด ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ํฌํจ๋์ด ์์ผ๋ฉด
ํฐ๋ฐ์ดํ๋ ์์ ๋ฐ์ดํ๋ก ๋ฌถ์ด์ฃผ์ด์ผ ํ๋ค.
: ASํค์๋๋ ์๋ต ๊ฐ๋ฅ
SELECT unit_price AS ๊ฐ๊ฒฉ
2. ์ฐ์ ์์ ์ด์ฉํ ๊ฒ์
- ์์ฑ์ ์ด๋ฆ๊ณผ +, -, *, / ๋ฑ์ ์ฐ์ ์ฐ์ฐ์์
์์๋ก ๊ตฌ์ฑ๋๋ค.
- ์์ฑ์ ๊ฐ์ด ์ค์ ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ์๋๊ณ ,
๊ฒฐ๊ณผ ํ ์ด๋ธ์์๋ง ๊ณ์ฐ๋ ๊ฒฐ๊ณผ ๊ฐ ์ถ๋ ฅ
SELECT product_name, unit_price + 500 AS "์กฐ์ ๋จ๊ฐ"
FROM product;
-> ์ ํ ํ ์ด๋ธ์์ ์ ํ๋ช ๊ณผ ๋จ๊ฐ ์์ฑ์ ๊ฒ์ํ๋,
๋จ๊ฐ์ 500์์ ๋ํด "์กฐ์ ๋จ๊ฐ"๋ผ๋ ์์ด๋ฆ์ผ๋ก ์ถ๋ ฅ
3. ์กฐ๊ฑด ๊ฒ์
-> whereํค์๋์ ํจ๊ป ๋น๊ต์ฐ์ฐ์์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ
๊ฒ์ ์กฐ๊ฑด ์ ์ํ๋ค.
4. LIKE๋ฅผ ์ด์ฉํ ๊ฒ์
- LIKEํค์๋๋ฅผ ์ด์ฉํด ๋ถ๋ถ์ ์ผ๋ก ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์
5. NULL์ ์ด์ฉํ ๊ฒ์
- IS NULLํค์๋๋ฅผ ์ด์ฉํด
ํน์ ์์ฑ์ ๊ฐ์ด ๋ ๊ฐ์ธ์ง๋ฅผ ๋น๊ต
- ๊ฒ์ ์กฐ๊ฑด์์ ๋ ๊ฐ์ ๋ค๋ฅธ ๊ฐ๊ณผ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ฉด
๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ๊ฑฐ์ง์ด ๋๋ค.
SELECT customer_name
FROM customer
WHERE age IS NULL;
-> ๊ณ ๊ฐ ํ ์ด๋ธ์์ ๋์ด๊ฐ ์ ๋ ฅ๋์ง ์์
๊ณ ๊ฐ์ ๊ณ ๊ฐ์ด๋ฆ์ ๊ฒ์
6. ์ ๋ ฌ๊ฒ์
- ORDER BY ํค์๋๋ฅผ ์ด์ฉํด
๊ฒฐ๊ณผ ํ ์ด๋ธ ๋ด์ฉ์ ์ฌ์ฉ์๊ฐ ์ํ๋ ์์๋ก ์ถ๋ ฅ
-ORDER BYํค์๋์ ํจ๊ป
์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ ์์ฑ๊ณผ ์ ๋ ฌ ๋ฐฉ์์ ์ง์
SELECT customer_name, grade, age
FROM customer
ORDER BY age DESC;
-> ๊ณ ๊ฐํ ์ด๋ธ์์ ๊ณ ๊ฐ์ด๋ฆ, ๋ฑ๊ธ, ๋์ด๋ฅผ ๊ฒ์ํ๋,
๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๊ฒ
7. ์ง๊ณํจ์๋ฅผ ์ด์ฉํ ๊ฒ์
- ํน์ ์์ฑ ๊ฐ์ ํต๊ณ์ ์ผ๋ก ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด
์ง๊ณ ํจ์๋ฅผ ์ด์ฉํ๋ค
- ์ง๊ณ ํจ์, ์ด ํจ์
(๊ฐ์, ํฉ๊ณ, ํ๊ท , ์ต๋๊ฐ, ์ต์๊ฐ์ ๊ณ์ฐ ๊ธฐ๋ฅ์ ์ ๊ณต)
์ง๊ณ ํจ์๋ WHERE์ ์์๋ ์ฌ์ฉํ ์ ์๊ณ ,
SELECT์ ์ด๋ HAVING์ ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
SELECT COUNT(DISTINCT manufacturer) AS "์ ์กฐ์
์ฒด ์"
FROM product;
-> ์ ํ ํ ์ด๋ธ์์ ์ ์กฐ์ ์ฒด์ ์๋ฅผ ๊ฒ์
8. ๊ทธ๋ฃน๋ณ ๊ฒ์
์กฐ์ธ ๊ฒ์
์กฐ์ธ ๊ฒ์
: ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ
๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๊ฒ
์กฐ์ธ ์์ฑ
: ์กฐ์ธ ๊ฒ์์ ์ํด
ํ ์ด๋ธ์ ์ฐ๊ฒฐํด์ฃผ๋ ์์ฑ
์กฐ๊ฑด1. ์ฐ๊ฒฐํ๋ ค๋ ํ ์ด๋ธ ๊ฐ์
์กฐ์ธ์์ฑ์ ์ด๋ฆ์ ๋ฌ๋ผ๋ ๋์ง๋ง
๋๋ฉ์ธ์ ๊ฐ์์ผ ํ๋ค.
์กฐ๊ฑด2. ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ํค๋ฅผ ์กฐ์ธ ์์ฑ์ผ๋ก ์ด์ฉํ๋ค.
์กฐ์ธ ๊ฒ์
ํน์ง 1. FROM ์ ์
๊ฒ์์ ํ์ํ ๋ชจ๋ ํ ์ด๋ธ์ ๋์ดํ๋ค.
ํน์ง 2. WHERE์ ์ ์กฐ์ธ ์์ฑ์ ๊ฐ์ด
๊ฐ์์ผ ํจ์ ์๋ฏธํ๋ ์กฐ์ธ์กฐ๊ฑด์ ์ ์ํ๋ค.
ํน์ง 3. ๊ฐ์ ์ด๋ฆ์ ์์ฑ์ด
์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ์กด์ฌํ ์ ์๊ธฐ ๋๋ฌธ์
์์ฑ ์ด๋ฆ ์์ ํด๋น ์์ฑ์ด ์์๋ ํ ์ด๋ธ์ ์ด๋ฆ์ ํ์ํ๋ค.
ex. ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ
์กฐ์ธ์ ๊ดํ ๋ด์ฉ์
๋๋ฌด ๋ง์์
๋ฐ๋ก ์์ฑ ์์ ..
์ด๋ฐ์ ๋ฐ ์ผ ๋๋ฌธ์
๊ณต๋ถ๋ฅผ 3์ผ๊ฐ ์ฌ์๋๋
์์ด๋ฅด์ผ ํ๊ธฐ ์ซ์์ง ..
Aใ ..๊ณต๋ถ ํ๊ธฐ ์คใ r ..
but..ํด์ผํ๋ ์ผ..
๋ด์ผ๋ถํฐ๋ ์ ๋ง..
์ด์ฌํ ..โญ