๐ 2023๋ 11์ 17์ผ
์ค๋์ ์ด์ ๋ฐฐ์ด DML๊ด๋ จํด์ ๋ ๋ง์ ์ค์ต์ ์งํํ๋ค. [DB 2์ผ์ฐจ]
์ค๋๋ ๋ง์ ๋ด์ฉ์ ์ค์ตํ์ง๋ง ๊ทธ์ค ๊ฐ์ฅ ์ค์ํ๋ค๊ณ ์๊ฐ๋๋ ๋ถ๋ถ๋ง ์ค๋ช ํ๊ณ ์ ํ๋ค.
DDL ๋ณต์ต
drop table posts; drop table author; -- ๊ธฐ์กด ํ ์ด๋ธ ์ญ์ drop database if exists board; -- ๊ธฐ์กด ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ญ์ (if exists : ์กด์ฌํ๋์ง ํ์ธ) create database board; -- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ฑ use board; -- ํ์ฌ ์ฌ์ฉ db ๋ณ๊ฒฝ create table author( -- ํ ์ด๋ธ ์์ฑ 1 id int not null, name varchar(255), email varchar(255), password varchar(255), test varchar(255), primary key(id) -- ๊ธฐ๋ณธํค (์ต์์ฑ, ์ ์ผ์ฑ) ); create table posts( -- ํ ์ด๋ธ ์์ฑ 2 id int not null, title varchar(255), content varchar(255), auth_id int, primary key(id), foreign key(auth_id) references author(id) -- ์ธ๋ํค (๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค ์ฐ๊ฒฐ) ); create table table_blob( -- ํ ์ด๋ธ ์์ฑ 3 id int, img longblob ); -- (alter ๋ฌธ์ DML์ค์ต ๋ ๊ฐ์ด ์งํ)
DML ์ค์ต
-- tinyint ํ์ ์ ์ปฌ๋ผ ์ถ๊ฐ (๋ฒ์ -128~127, unsigned์ผ ๊ฒฝ์ฐ 0~255) alter table author add column age tinyint unsigned; describe author; -- ํ์ ๋ณ๊ฒฝ ํ์ธ insert into author(id, name, age) values(1, "jgn", 255); insert into author(id, name, age) values(2, "jgn", 300); -- ์๋ฌ(๋ฒ์์ด๊ณผ) -- decimal(M,D) : M=์๋ฆฌ์, D=์์๋ถ, ๊ณ ์ ์์์ alter table posts add column price decimal(10,3); -- posts ํ ์ด๋ธ์ decimalํ์ ์ price ์ปฌ๋ผ ์ถ๊ฐ insert into table_blob(id,img) values(1,load_file('ํ์ผ๊ฒฝ๋ก')); --blob ์ด๋ฏธ์ง ์ถ๊ฐ select hex(img) from table_blob where id = 1; -- blod ์กฐํ ์ -- enum('๋ฐ์ดํฐ ๊ฐ1', '๋ฐ์ดํฐ ๊ฐ2',...) , not null default 'user'๋ฑ์ ์ต์ ๋ ์ถ๊ฐ ๊ฐ๋ฅ alter table author modify column role enum('user','admin') not null default 'user'; -- datetime default current_timestamp : ํ์ฌ์๊ฐ์ default๋ก ์ฝ์ ํ๋ ๋ฐฉ์ alter table posts add column created_tile1 datetime default current_timestamp; select * from author where id not in(1,2,4); -- not + in() select * from posts where id between 2 and 4; -- between (min) and (mex) select * from posts where id >=2 and id<=4; -- (true) and (true) = (true) select * from posts where id = 2 or id = 3 or id = 4; -- (true) or (false) = (true) select * from posts where !(id <2 or id>4); -- not(!) + ro -- like : ํน์ ๋ฌธ์๋ฅผ ์ฐพ๊ธฐ ์ํ ํจ์ %๋ฅผ ์ฌ์ฉ select * from author where name like 'stirng%'; -- stirng์ผ๋ก ์์ํ๋ select * from author where name like '%stirng%'; -- stirng์ ํฌํจํ๋ select * from author where name like '%stirng'; -- stirng์ผ๋ก ๋๋๋ -- regexp : ์ ๊ทํํ์ ํ ๋๋ก ํจํด ์ฐ์ฐ ์ํ select * from author where name regexp '[a-z]'; -- a๋ถํฐ z๊น์ง select * from author where name regexp '[๊ฐ-ํฃ]'; -- '๊ฐ' ๋ถํฐ 'ํฃ' ๊น์ง -- date_format : ๋ ์ง/์๊ฐ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ ํ์์ ๋ฌธ์์ด๋ก ๋ณํ select date_format('2020-01-01 17:12:00', '%y-%m-%d'); -- distinct: ์ค๋ณต์ ๊ฑฐํ๊ณ ์กฐํ select distinct name from author; -- order by : ์ ๋ ฌ (๋จผ์ ์ด ์์ฑ์ ์ฐ์ ์์๊ฐ ์์ผ๋ฉฐ, asc/desc ์๋ต์ asc ์ ์ฉ) select * from author order by name desc; -- limit : ๋ฐํํ ํ์ ์ต๋ ์๋ฅผ ์ง์ select * from author order by id desc limit 2; --๋ณ์นญ alias (as ์๋ต ๊ฐ๋ฅ) select name AS '์ปฌ๋ผ๋ณ์นญ' from author; select * from author AS 'ํ ์ด๋ธ์ด๋ฆ ๋ณ์นญ';
์ด๋ ๊ฒ ๊ณต๋ถํ ๋ด์ฉ์ ๊ฐ์ง๊ณ SQL์ ๊ฐ์ง๊ณ programmers์์ ๋ฌธ์ ํ์ด๋ ํ๋ค.
https://school.programmers.co.kr/learn/courses/30/lessons/59035
https://school.programmers.co.kr/learn/courses/30/lessons/59037
https://school.programmers.co.kr/learn/courses/30/lessons/59404
https://school.programmers.co.kr/learn/courses/30/lessons/59405
์์ธํ ์ค์ต ๋ด์ฉ์ ์๋ ๋งํฌ์์ ํ์ธํ ์ ์๋ค.