11 Thu
๋ฐ์ดํฐ ๋ถ์์ ์ํ ๊ณ ๊ธ SQL
OT
์์ผ๋ก ๋ฐฐ์ธ ๊ฒ
DML, Data Manipulation Language
ERD, Entity Relationship Diagram
๋ฐ์ดํฐ ํ์
ERD ์ฝ๋๋ฒ
์๋ธ ์ฟผ๋ฆฌ
์๋์ฐ ํจ์
์ง๊ณ ํจ์์ ์ผ์ข
์ฝํ ์๋ ์ข ์ข ๋์ค๋ ์ ํ
MySQL ๋ง๊ณ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค๋ฃฐ ์์
์ ๊ท ํฌํ์
MySQL ํจ์
DML (Data Manipulation Language)
์ง๊ธ๊น์ง๋ SELECT๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ธฐ๋ง ํ๋๋ฐ, ์ง๊ธ๋ถํฐ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ์ผ๊น์ง ํ ๊ฒ
INSERT : ๋ฐ์ดํฐ ์ถ๊ฐ
ํ ์ด๋ธ ์ ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฒ
-- INSERT INTO ํ
์ด๋ธ ๋ช
VALUES (VALUE_LIST);
INSERT INTO Salary Values ('1', 'A', '250', '2020-03-31');
ํน์ ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฒ
์ด ๋ ์ถ๊ฐํด์ฃผ์ง ์์ ์ปฌ๋ผ์๋ ์๋์ผ๋ก Null์ด ์ถ๊ฐ๋๋ค
-- INSERT INTO ํ
์ด๋ธ๋ช
(COLUMN_LIST) VALUES (VALUE_LIST);
INSERT INTO Salary (Id, Salary) VALUES ('2', '550');
DESC : ๋ฐ์ดํฐ ํ์ ํ์ธ
DESC : Describe
DESC ํ ์ด๋ธ
: ํ ์ด๋ธ์ structure๋ฅผ ํ์ธํ๋คint
: ์ ์varchar(10)
: ์ต๋ ๊ธธ์ด๊ฐ 10์ธ ๋ฌธ์์ดdate
: ๋ ์ง ์๊ฐํ ๋ฐ์ดํฐ
UPDATE : ๋ฐ์ดํฐ ๊ฐฑ์
์ปฌ๋ผ ์ ์ฒด์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ
์ด ๋
=
๋ฅผ ์ง๊ธ๊น์ง๋ ๋น๊ต ์ฐ์ฐ์๋ก ์ฌ์ฉํ๋๋ฐ,SET
์์ ์ฌ์ฉํ๋=
๋ ๋์ (๋๋ ํ ๋น)์ฐ์ฐ์ ์ด๋ค.
-- UPDATE ํ
์ด๋ธ๋ช
SET ์ปฌ๋ผ = ๊ฐ;
UPDATE Salary SET Salary = Salary + 100
ํน์ ์ปฌ๋ผ์ ํน์ ๋ฐ์ดํฐ๋ง ๊ฐฑ์ ํ๊ธฐ
-- UPDATE ํ
์ด๋ธ๋ช
SET ์ปฌ๋ผ = ๊ฐ WHERE ์กฐ๊ฑด์;
UPDATE Salary SET Salary = Salary + 100 WHERE Id = 2;
LeetCode 627
update Salary set sex = case
when sex = 'f' then 'm' else 'f' end
DELETE : ๋ฐ์ดํฐ ์ญ์
UPDATE
์ ๋ฌธ๋ฒ์ด ๋น์ทํ ์ด๋ธ ์ ์ฒด์ ๋ฐ์ดํฐ ์ญ์ ํ๋ ๋ฐฉ๋ฒ
-- DELETE FROM ํ
์ด๋ธ๋ช
;
DELETE FROM Salary
ํน์ ๋ฐ์ดํฐ๋ง ์ญ์ ํ๊ธฐ
-- DELETE FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด์;
DELETE FROM Salary WHERE Id = 2;
์๋ธ์ฟผ๋ฆฌ ๋ง๋ณด๊ธฐ
FROM
์ดํ์SELECT
๊ตฌ๋ฌธ์ ์๋ธ์ฟผ๋ฆฌ ๋ผ๊ณ ํ๋ฉฐ, ์ด ์ฟผ๋ฆฌ๋ฅผdaily_status
๋ผ๋ ํ ์ด๋ธ์ด ์๋ค๊ณ ๊ฐ์ฃผํ ์ ์๋ค.์๋์ ๊ฐ์ด
FROM
์ ๋ฟ๋ง ์๋๋ผWHERE
์ ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
SELECT daily_stats.week, AVG(daily_stats.incidents_daily)
FROM (
SELECT week, date, COUNT(incident_id) AS incidents_daily
FROM crimes
GROUP BY week, date
) daily_status
GROUP BY daily_stats.week
SELECT *
FROM crimes
WHERE date = (SELECT MIN (date) FROM crimes)
SELECT *
FROM crimes
WHERE date IN (SELECT date FROM crimes ORDER BY date DESC LIMIT 5
DELETE WITH JOIN
DELETE FROM ํ ์ด๋ธ
์ด๋ผ๊ณ ๋ฐฐ์ ์ง๋งJOIN
์ ํ ๋์๋DELETE ํ ์ด๋ธ FROM ํ ์ด๋ธ JOIN ...
์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ค. ์ด๋JOIN
ํ ํ ์ด๋ธ ์์ ์กฐ๊ฑด์ด ๋ง๋๋ผ๋ ์ ํ์ ์ผ๋ก ์ง์ธ ํ ์ด๋ธ์ ๊ฒฐ์ ํ๊ธฐ ์ํด์์ด๋ค.์ฝ๊ฒ ๋งํ๋ฉด ๋ ๊ฐ์ ํ ์ด๋ธ์ด
JOIN
๋์์ ๋ ๋ ๊ฐ์ ํ ์ด๋ธ์์ ๋ชจ๋ ์ญ์ ํ ์ง, ์ด๋ ํ์ชฝ์์ ์ญ์ ํ ์ง๋ฅผ ์ ํํ ์ ์๋๋ก ํ๊ธฐ ์ํจ
DELETE t1, t2
FROM t1
INNER JOIN t2 ON t1.id = t2.ref
WHERE t1.id = 1;
LeetCode 196
์๋ธ์ฟผ๋ฆฌ ๋๋ ์ด๋ ์กฐ์ธ์ ์ด์ฉํ ๋๋ฆฌํธ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ ์ ์๋ค.
delete from person
where id not in (
select sub.min_id
from (
select email, min(id) as min_id
from person
group by email ) sub )
delete p1
from person as p1
inner join person as p2 on p1.email = p2.email
where p1.id > p2.id
ERD (Entity Relationship Diagram)
๊ฐ์ฒด๋ค ๊ฐ ๊ด๊ณ๋ฅผ ๋ณด๊ธฐ ์ํ ์ง๋
ERD์ 3๊ฐ์ง ์์
Entity
ํ ์ด๋ธ์ ์๋ฏธ ํ๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉ
Attribute
Entity์ ํน์ง. ์ปฌ๋ผ์ ์๋ฏธ ํ๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉ
์ปฌ๋ผ ์ด๋ฆ๊ณผ Key์ ๋ ํญ๋ชฉ์ผ๋ก ๋๋์ด์ ธ ์์
์ธ ํญ๋ชฉ์ผ๋ก ๋๋๋ฉด ์ปฌ๋ผ์ ๋ฐ์ดํฐ ํ์ ๊น์ง ํฌํจ
Key
์๋ณ์๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค
PK : Primary key
PK์๋ ํ ์ด๋ธ ๋น ํ๋
๊ทธ๋ฆฌ๊ณ ์ค๋ณต๊ฐ์ด ์๋ค
FK : Foreign key
์ธ๋ถ ํค๋ผ๊ณ ๋ ํ๋ฉฐ ๋ค๋ฅธ ํ ์ด๋ธ์์ ์ฐธ์กฐ๋๋ ๊ฐ์ด๋ค.
one to many์ ์ฐ๊ฒฐ์ ์ one์ชฝ์ ์ธ๋ก์ ๋๊ฐ, many์ชฝ์ ์ผ์ ์ด ๋์ด์๋ค
Relationship
๋ฐ์ดํฐ ํ์
์ซ์
์ ์ : tinyint, smallint, mediumint, int ,bigint
์ ์์ ๋ฒ์ ์ฐจ์ด๋ง ์์
์ค์ : decimal, double, float
์ค์์ ๋ฒ์ ์ฐจ์ด๋ง ์์
๋ฌธ์ : varchar, char
various character, character์ ์ฝ์
๋ ์ง, ์๊ฐ
date : 1010-01-01 ~ 9999-12-31
datetime : 1010-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999
timestamp() = datetime() + timezone
์ด ๋ OrderDate๋ varchar์ด๋ค
ex) 12/8/1968
๋ฐ๋ผ์ date_add ๋ฑ์ ํจ์๋ ์ฌ์ฉ ๋ถ๊ฐ
์ด๋ด ๋๋
str_to_date()
ํจ์๋ฅผ ์ฌ์ฉํด์ผํจ(mysql ๊ธฐ์ค)
์ฐธ, ๊ฑฐ์ง
boolean
Last updated
Was this helpful?