์๋ฒ๋ ธํธ : https://www.evernote.com/shard/s536/sh/71aea36d-67e7-4c3c-9bd0-04264889cd41/470eae7be57ba3cb289bd2e9cbe134bd
CMD ( ๊ณต๋ฐฑ ์ฃผ์)
mysql -u(username ๊ณต๋ฐฑ๊ฐ๋ฅ) -p(ํจ์ค์๋ ๊ณต๋ฐฑX) : mysql ์๋ฒ ์ ์
ย ย SQL๋ฌธ ์ฌ์ฉ์ ๋ช ๋ น์ด ๋์ ;(์ธ๋ฏธ์ฝ๋ก )์ ์ฌ์ฉํด์ผ ํ๋ค
ํ์ฌ ์ฌ์ฉ์ค์ธ DBํ์ธ(;ํ์)
show databases; : db ๋ชฉ๋กํ์ธ
select databases(); : ํ์ฌ ์ฌ์ฉ์ค์ธ dbํ์ธ
use (db์ด๋ฆ) : ์ฌ์ฉ ํ DB์ ํ
show tables; : db์์ table ๋ชฉ๋ก ํ์ธ
desc ํ
์ด๋ธ : ํด๋น ํ
์ด๋ธ์ ํ์
์ ์ ๋ ฌํ๋ค.
SQL๋ด์ ์ฐ์ฐ
์ฌ์น์ฐ์ฐ ์ค + / ์ฐ์ ์์์ด๋ฉฐ + - ํ์์์ด๋ค
NULL๊ฐ์ ์ฌ์น์ฐ์ฐ์ ํ๋ฉด NULL์ด๋ค
๋ณต์กํ ์ฐ์ฐ์ ํ ๋๋ ๋ด์ฅํจ์๋ฅผ ์ด์ฉํ๋ค.
round(๋์, ๋ฐ์ฌ๋ฆผ ์์น) : ๋ฐ์ฌ๋ฆผํ๋ค(-์ฐ๋ฉด ์ ์์๋ฆฌ)
select round(a,3),round(b,-3) from test : a์ ์์ 3๋ฒ์งธ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผํ๊ณ b์ ์ ์ 3๋ฒ์งธ ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผํ๋คย
sqrt(๋์) : ๋์์ ๋ํด์ ๋ฃจํธ๋ฅผ ์์ด๋ค.
select sqrt(a) from test;
concat(๋ฌธ์1(ํ), ๋ฌธ์2(ํ)) :๋ฌธ์1๊ณผ ๋ฌธ์2๋ฅผ ๋ํ๋ค
select concat(a,b) from * : a,b ์ด์ ํฉ์น๋ค
subtring(๋์, ๊ธฐ์ค์ , ๊ฐฏ์) : ๋์์ ๊ธฐ์ค์ ์ ๊ธฐ์ค์ผ๋ก ํด๋น ๊ฐฏ์๋งํผ ์ถ๋ ฅ
select substring(a,1,2) from test : testํ
์ด๋ธ์ a์ด์ย 1๋ฒ์งธ์์ 2๊ฐ ๋งํผ ์ถ๋ ฅ
TRIM : ์คํ์ด์ค ์ ๊ฑฐ
trim ('abcย ย ย ') = 'abc
charater_length : sql์์ len์ ๋ญ๊น?ย
๋ ์ง์ฐ์ฐ
current_timestamp : PC์ ์๊ฐ ๊ธฐ์ค
select current_timestamp;
select current_timestamp + interval (๋ํ ๋ ์ง) (์ผ,์ฃผ,๋
)
select current_timestamp + interval 1 day : ํ๋ฃจ๋ฅผ ๋ํ๋ค
select current_timestamp + interval 2 week : 2์ฃผ์ผ์ ๋ํ๋ค
DATEDIFF(๋ ์ง1,๋ ์ง2) : ๋ ์ง1 - ๋ ์ง2
select datediff(current_timestamp(),'2018-06-19'); : ์ค๋๋ ์ง ๊ธฐ์ค์ผ๋ก 2018-12-31๋ฅผ ๋บ๋ค
CASE๋ฌธ
์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
CASE : CASE๋ฌธ์ ์์ํ๋ค
WHEN (์กฐ๊ฑด) THEN (์ถ๋ ฅ) : ์กฐ๊ฑด๋ฌธ์ ํด๋นํ๋ THEN์ผ๋ก ์ถ๋ ฅํ๋ค
WHEN a = 1 THEN '๋จ์'
ELSE (์ถ๋ ฅ) :
ELSE a = '๋ฏธ์ง์ '
END (์ด์ด๋ฆ) : CASE๋ฌธ์ ์ถ๋ ฅ๋๋ ํ์ ์์ฑํ๋ค
END 'hi' : hi๋ผ๋ ํ ์์ฑ
๋ฐ์ดํฐ ๊ฒ์(select)
DML์ ์ธ์ด์ด๋ค.
select (์ด์ด๋ฆ) from (ํ
์ด๋ธ๋ช
) : ์ด๋ง ์ง์
select (์ด์ด๋ฆ) from (ํ
์ด๋ธ๋ช
) where (์กฐ๊ฑด์) : ์ด๊ณผ ํ ์ง์
์ด ์ด๋ฆ์ *(์์คํ
๋ฆฌํฌ)๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ถ๋ฅผ ๋ปํ๋ค
ex) select * from test (testํ
์ด๋ธ์ ๋ชจ๋ ์ด ๊ฒ์)
์กฐ๊ฑด์
ย = : ๊ฐ๋ค
<> : ๊ฐ์ง ์๋ค.
< > <= >= : ๋น๊ต์ฐ์ฐ์
and or not(and๊ฐ or ์ฐ์ ์์ ๋๋ค)
like (ํจํด)
ํจํด -> % ์์์ ์ฌ๋ฌ๋ฌธ์, _ : ์์์ ๋ฌธ์ํ๋
order by (์ ๋ ฌ๊ธฐ์ค ์ด): ์ ๋ ฌ๋ช
๋ น์ด
default๋ก๋ ์ค๋ฆ์ฐจ์์ผ๋ก ๋์ด์๋ค.
desc : ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
๋ฌธ์์ด ์ ๋ ฌ ๊ธฐ์ค : ์ฌ์ ์
order by (๊ธฐ์ค์ด1),(๊ธฐ์ค์ด2) : ์์์ค์ย ๊ตฌ๋ถ์ ,(์ผํ)
ex) select * from test order by a,b desc : ํ
์คํธ ํ
์ด๋ธ์ ๋ํด a๋ก ์ค๋ฆ์ฐจ์ ํ b๋ก ๋ด๋ฆผ์ฐจ์ ํ๋ค
NULL์ ๊ฐ์ฅ ์์๊ฐ์ผ๋ก ์ทจ๊ธํ๋ค.
LIMIT (์ถ๋ ฅํ ํ์) OFFSET(์์ํ+1) :ย ๊ฒฐ๊ณผ ๊ฐ ์ ํ
select * from test limit 2 offset 0 : ์ฒซ๋ฒ์งธ ์ด์ ์์์ผ๋ก 2๊ฐ์ ๊ฐ ์ถ๋ ฅ
๋ฐ์ดํฐ์ถ๊ฐ(insert into)
DML์ ์ธ์ด์ด๋ค.
insert into (ํ
์ด๋ธ๋ช
) values(๊ฐ1, ๊ฐ2,...๊ฐn) : ํ์ ๋ง๊ฒ ๊ฐ ์
๋ ฅ
insert into test values(1,'์๋
') : test ํ
์ด๋ธ์ 1์ ๊ฐ๊ณผ '์๋
'์ ์ถ๊ฐ
insert into ํ
์ด๋ธ๋ช
(ํน์ ์ด) values(ํน์ ์ด์ ๋ง๋ ๊ฐ) : ํน์ ์ด์๋ง ๊ฐ์ ์
๋ ฅ
insert into test(a) values(1) : a์ ์ด์ 1์ด๋ผ๋ ๊ฐ ์
๋ ฅ
๋ฐ์ดํฐ์์ (update)
DML์ ์ธ์ด์ด๋ค.
update ํ
์ด๋ธ๋ช
set ์์ ํ ๊ฐ (where {์กฐ๊ฑด})
update test set a = 2 where b = 'ํฌ๋ก์ฐ' : testํ
์ด๋ธ์ b์ ๊ฐ์ด ํฌ๋ก์ฐ์ธ a์ ๊ฐ์ 2๋ก ์์ ํ๋ค
๋ฐ์ดํฐ์ญ์ (delete)
DML์ ์ธ์ด์ด๋ค.
delete from ํ
์ด๋ธ๋ช
(where {์กฐ๊ฑด}) : ํด๋น ํ
์ด๋ธ์ ๊ฐ์ ์ญ์ ํ๋ค
delete from test : ํ
์คํธ ํ
์ด๋ธ ๊ฐ ์ญ์
where๋ฌธ์ด ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ญ์ / ์กฐ๊ฑด๋ฌธ์ด ์์ ์ ํด๋น ์กฐ๊ฑด๋ฌธ์ ํด๋นํ๋ ๊ฐ๋ง ์ญ์
ํ
์ด๋ธ ์์ฒด ์ญ์ ๊ฐ ์๋ย
ํ
์ด๋ธ ์ถ๊ฐ(CREATE)
DDL์ ์ธ์ด์ด๋ค.
CREATE TABLE ํ
์ด๋ธ์ด๋ฆ (์ด์ด๋ฆ ์ดํ์
์์ฑ) : ํ
์ด๋ธ์ด๋ฆ๋ช
์ผ๋ก ํ
์ด๋ธ์ ์์ฑํ๋ค.
CREATE TABLE test_2 (ย
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย no int not null,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย a varchar(10),
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย b date);
ย ย ย ย ย ย ย ย ย ย ย ย ย ย : test_2๋ผ๋ ํ
์ด๋ธ์ ์์ฑํ๋ฉด์ no๋ผ๋ intํ์ ๋ง๋ค๊ณ NULL๊ฐ์ ํ์ฉ์ํ๋ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย a๋ varchar(10)์ผ๋ก ์์ฑํ๊ณ , b๋ dateํ์์ผ๋ก ์์ฑํ๋ค.
ํ
์ด๋ธ ์ค๋ณต๋ช
์ ํ์ฉ๋์ง ์๋๋ค.
ALTER TABLE ํ
์ด๋ธ๋ช
๋ช
๋ น์ด(ADD,DROP,MODIFY,CHANGE)ย : ์ถ๊ฐ ์์ ๋ณ๊ฒฝ ์ญ์
DDL์ ์ธ์ด์ด๋ค.
ADD ํ์ด๋ฆ ํํ์
: ์ด์ ์ถ๊ฐํ๋ค
alter table test add c int(10) : c์ด์ ์ถ๊ฐํ๊ณ intํ์ผ๋ก ์ ์ธํ๋ค
alter table test add d varchar(10) : d์ด์ ์ถ๊ฐํ๊ณ varchar(10)์ผ๋ก ์ ์ธ
,(์ผํ)๋ฅผ ํตํด ์ฌ๋ฌ์ด์ ํ๋ฒ์ ์ถ๊ฐ ๊ฐ๋ฅ
after (์ด์ด๋ฆ) : ํด๋น ์ด ๋ค์์ผ๋ก ์ถ๊ฐํ๋ค
after b : b์ด ๋ค์์ผ๋ก ์ด ์ถ๊ฐ
first : ์ด ๋งจ์ฒ์์ผ๋ก ์ถ๊ฐํ๋คย
DROP ํ์ด๋ฆ: ํ์ ์ญ์ ํ๋ค
alter table test drop d : dํ์ ์ญ์ ํ๋ค.
์ญ์ ์ ๋ณต๊ตฌ ๋ถ๊ฐ๋ฅ
MODIFY ํ์ด๋ฆ ํํ์
(์๋ก์ด ์กฐ๊ฑด ์ถ๊ฐ)ย : ํ์ ํ์
๋ณ๊ฒฝ
alter table test modify c char(10) : Cํ์ ํ์์ int์์ char(10)์ผ๋ก ๋ณ๊ฒฝํ๋ค.
์๋ก์ด ์กฐ๊ฑด์ is not null๊ณผ unique ๋ฑ์ด ์๋ค.
CHANGE ์๋ํ์ด๋ฆ ๋ฐ๊ฟํ์ด๋ฆ (๋ฐ๊ฟํ์) : ํ์ ์ด๋ฆ๊ณผ ํ์
๋ณ๊ฒฝ :
alter table test change c d : ํ C์ ์ด๋ฆ์ D๋ก ๋ณ๊ฒฝํ๋ค.
alter table test change c d date : ํ C๋ฅผ D๋ก ์ด๋ฆ๋ณ๊ฒฝํ๋ฉด์ ํ์์ date๋ก ํ๋ค
ํ
์ด๋ธ ์ญ์ (DROP)
DDL์ ์ธ์ด์ด๋ค.
DROP TABLE ํ
์ด๋ธ๋ช
: ํ
์ด๋ธ๋ช
์ ์ ์๋ ํ
์ด๋ธ์ ์์ ์ญ์ ํ๋ค.
DROP TABLE test : test์ ํ
์ด๋ธ์ ์ญ์ ํ๋ค.
๋ณต๊ตฌ๋ถ๊ฐ๋ฅํ๋ค.
๋ด๋ถํจ์
COUNT(์ด์ด๋ฆ or * ) : ํ์ ๊ฐฏ์๋ฅผ ์ถ๋ ฅํ๋ค.
select count(*) from test : test์ ํ ๊ฐฏ์๋ฅผ ์ถ๋ ฅํ๋ค
where ๋ฌธ์ ์ด์ฉํ์ฌ ์กฐ๊ฑด์ ๋ง๋ ๊ฐฏ์๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
count(distant ์ด์ด๋ฆ)์ผ๋ก ๊ณ ์ ์ ๊ฐ๋ง ์
์ ์๋ค.
SUM(์ด์ด๋ฆ / * ๋ถ๊ฐ๋ฅ) : ํฉ๊ณ๋ฅผ ์ถ๋ ฅํ๋ค.ย
select sum(a) from test : test์ a์ด์ ๋ชจ๋ ๊ฐ์ ํฉํด์ ์ถ๋ ฅํ๋ค
- ๋ ๋ถ๊ฐ๋ฅํ๋ค (์ด๋ค์ด ์ ๋ถ intํ๋ ๋ถ๊ฐ๋ฅ)
๋ฌธ์ํ์ ์ฐ์ฐ๋ถ๊ฐ๋ฅ
AVG(์ด์ด๋ฆ / * ๋ถ๊ฐ๋ฅ) : ํ๊ท ์ ์ถ๋ ฅํ๋ค.
select avg(a) from test : test์ a์ด์ ํ๊ท ๊ฐ์ ์ถ๋ ฅํ๋ค.
sum ๋ด์ฉ๊ณผ ๋์ผย
MIN(์ด์ด๋ฆ / * ๋ถ๊ฐ๋ฅ) : ํด๋น์ด์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
select min(a) from test : test์ a์ด์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค
sum ๋ด์ฉ๊ณผ ๋์ผ
MAX(์ด์ด๋ฆ / * ๋ถ๊ฐ๋ฅ) : ํด๋น์ด์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
select max(a)ย from test : test์ ์ด์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
sum ๋ด์ฉ์ ๋์ผ
DISTANT : ์ค๋ณต์ ์ ๊ฑฐํ๋ค
select distant * from test : ํ ์คํธ์ ์ค๋ณต๊ฐ์ ์ ๊ฑฐํ๊ณ ์ถ๋ ฅํ๋ค.
IN(๊ฐ) : ๊ฐ์ผ ์ผ์นํ๋๊ฒ๋ง ์ถ๋ ฅ
select * from a IN (1,2,3,4,5) : a์ ๊ฐ์ด 1,2,3,4,5 ์ผ์นํ ๊ฒฝ์ฐ ์ถ๋ ฅํ๋ค.
COALESCE(๋ฐ๊ฟ ๊ฐ) : NULL๊ฐ์ ๋ณ๊ฒฝํ๋ค.ย
select coalesce(a) from test;
์์ฑ(attribute)
NOT NULL : NULL ๊ฐ์ ํ์ฉํ์ง ์๋๋ค
PRIMARY KEY : ๊ธฐ๋ณธํค๋ก ์ค์ ํ๋ค.ย
๊ธฐ๋ณธํค๋ ๊ธฐ๋ณธ์ ์ผ๋ก NOT NULL๋ก ํด์ผํ๋ค.
์ค๋ณต๋์ง ์์ ๊ฐ์ผ๋ก ํด์ผํ๋ค
UNIQUE : ์ค๋ณต๋์ง ์์ ๊ฐ๋ง ํ์ฉํ๋ค.
Group by
ํน์ ์ด์ ๊ธฐ์ค์ผ๋ก ์ง๊ณ๋ฅผ ํ๊ณ ์ ํ ๋ ์ฌ์ฉ
ํน์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๊ฒ๋ง selectํ๊ณ ์ถ๋ค๋ฉด having
select * from test group by a : test ํ
์ด๋ธ์ a๋ก ๊ทธ๋ฃน์ ๋ง๋ค์ด ์ถ๋ ฅํ๋ค.
select * from test group by a having a > 5 : a์ ๊ฐ์ด 5๊ฐ ๋๋ ๊ฒ๋ค๋ง ๊ทธ๋ฃนํ ํ์ฌ ์ถ๋ ฅํ๋ค.
๋ค์ order by ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฌํด์ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
Subquery
SQL์์ ๋ ๋ค๋ฅธ SQL์ ์๋ฏธํ๋ค.
()๋ฅผ ํตํด์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ ์ธํ๋ค
(select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
)
select * from test where a = (select no from test_2) : test a์ ๊ฐ์ด test_2์ no์ ๊ฐ์ด ๊ฐ์ ๋๋ง ์ถ๋ ฅํ๋ค.
select ๋ฌธ์ด ์๋ update๋ insert ๋ฑ ๋ค๋ฅธ๋ฐ์์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค
exists๋ก ์ ์ธํ์ฌ ์๋ก ๋ค๋ฅธํ
์ด๋ธ์ ๊ฐ์ ๋น๊ตํ๋ค
select * from test whereย exists (selectย * from test_2 where aย = no) : ์๋ธ์ฟผ๋ฆฌ ์์์ test a์ ๊ฐ๊ณผ test_2์ no๊ฐ ๊ฐ์ ๋ ์ถ๋ ฅ
์ธ๋ฑ์ค(INDEX on)
์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ด๋์ ์๋ค๋ ์์น๋ฅผ ์๊ณ ์๋ ์ฃผ์๋ก
์ฃผ์๋ก ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
create index ์ธ๋ฑ์ค์ด๋ฆ on ํ
์ด๋ธ๋ช
(์ด์ด๋ฆ) : ํ
์ด๋ธ์ ์ด์ด๋ฆ์ ๋ง๋ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค.
create index test_index on test(a) : testํ
์ด๋ธ์ a๋ฅผ index_test๋ก ์ง์ ํ๋ค
show index from ์ธ๋ฑ์คํ
์ด๋ธ๋ช
: ์ธ๋ฑ์คํ
์ด๋ธ์ ์ถ๋ ฅํ๋ค.
EXPLAIN(possible keys, key) : ์ธ๋ฑ์ค ํ์ธ
ex) explain select * from test_index;
drop index ์ธ๋ฑ์ค๋ช
on ํ
์ด๋ธ๋ช
: ํ
์ด๋ธ ์ค์ ์ธ๋ฑ์ค๋ช
์ ํด๋นํ๋ ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๋ค
ex) drop index test_index on testย
๋ทฐ(VIEW as)
๊ฐ์ํ
์ด๋ธ์ด๋ค.
์ฝ์
, ์ญ์ , ๊ฐฑ์ , ์ฐ์ฐ์ด ๊ฐ๋ฅํ์ง๋ง ์ ์ฝ์ด ๋ฐ๋ฅธ๋ค
ALTER VIEW๋ก ๋ทฐ์ ์ ์๋ฅผ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค.
๊ธฐ์กด์ ์๋ ํ
์ด๋ธ์ด ์ฌ๋ผ์ง๋ฉด ๋ทฐ๋ ์ฌ๋ผ์ง๋ค.
create view ๋ทฐ์ด๋ฆ as select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
ย : ๋ทฐ๋ฅผ ์์ฑํ๋ค
ex) create view test_view as select * from testย
drop view ๋ทฐ์ด๋ฆ : ๋ทฐ๋ฅผ ์ญ์ ํ๋ ๋ช
๋ น์ด
ex) drop view test_view : test_view๋ฅผ ์ญ์ ํ๋ค.
์กฐ์ธ(JOIN)
UNION : ํฉ์งํฉ
select ์ด์ด๋ฆ from ํ
์ด๋ธ1 union select ์ด์ด๋ฆ from ํ
์ด๋ธ2 : ํ
์ด๋ธ1๊ณผ ํ
์ด๋ธ2๋ฅผ ํฉ์งํฉํ๋ค.
ex) select * from test union select * from test_2ย
ํฉ์งํฉ์ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ ์ง์์ง๋ค.
์ค๋ณต ํ์ฉ์ union all๋ก ์ง์ ํ๋ค.
๋ ๊ฐ์ ํ
์ด๋ธ๋ง ๊ฒฐํฉ๋๋ ๊ฒ์ด ์๋ ์ฌ๋ฌ๊ฐ์ ํ
์ด๋ธ๋ ๊ฐ๋ฅํ๋ค.
ex) select * from test union select * from test_2 union select * from test_3
INTERSECT : ๊ต์งํฉ(mysql์์ ์ง์์๋จ)
ex) select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
ย intersect select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
2
EXCEPT : ์ฐจ์งํฉย (mysql์์ ์ง์์๋จ)
ex) select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
EXCEPT select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
2
select * from ํ
์ด๋ธ1, ํ
์ด๋ธ2, : ๊ณต์งํฉ
ex) select * from test,test_2
ํฉ์งํฉ์ ๋ ๊ฐ์ ํ
์ด๋ธ์ ํฉํด์ ์ถ๋ ฅํ์ง๋ง ๊ณต์งํฉ์ ํ
์ด๋ธXํ
์ด๋ธ์ ํ์ฌ ์ถ๋ ฅํ๋ค.
INNER JOIN : ๋ ๊ฐ์ ํ
์ด๋ธ์ ํฉํ๋ค.
select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
inner join ํ
์ด๋ธ๋ช
2 on ๋น๊ต๊ฐ
ex) select * from test inner join test_2 on test.a = test_2.noย
์ด์ด๋ฆ์ ์ ์ธ ํ ๋ ํ
์ด๋ธ์ ์ด๋ฆ์ด ์ค๋ณต๋์ง ์์ผ๋ฉด ํ
์ด๋ธ๋ช
์ ์๋ตํ ์ ์๋ค.
exย select * from test inner join test_2 on a = noย
ํฉํ ๋ NULL๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ ํด๋น ํ์ ๋ฌด์ํ๊ณ ๊ฒฐํฉํ๋ค.
LEFT JOIN : ๋ ๊ฐ์ ํ
์ด๋ธ์ ์ข์ธก ํ
์ด๋ธ ๊ธฐ์ค์ผ๋ก ํฉํ๋ค.
select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
left join ํ
์ด๋ธ๋ช
2 on ๋น๊ต๊ฐ
ex) select * from test left join test_2 on a = no
NULL๊ฐ์ด ์์ด๋ ๊ฒฐํฉ์ด ๊ฐ๋ฅํ๋ค.
RIGHT JOINย : ๋ ๊ฐ์ ํ
์ด๋ธ์ ์ฐ์ธก ํ
์ด๋ธ ๊ธฐ์ค์ผ๋ก ํฉํ๋ค.
select ์ด์ด๋ฆ from ํ
์ด๋ธ๋ช
right join ํ
์ด๋ธ๋ช
2 on ๋น๊ต๊ฐ
ex) select * from test left join test_2 on a = no
NULL๊ฐ์ด ์์ด๋ ๊ฒฐํฉ์ด ๊ฐ๋ฅํ๋ค.