3์ฃผ์ฐจ~๐
1, 2์ฃผ์ฐจ ์์ ํ๊ณ ์ด์ ์์ผ 3์ฃผ์ฐจ ์๋๋ค...^^
์ค๋๋ ์ด๊น์์ด. SQL. ์กฐ๋ง๊ฐ ์ ๋ณตํ ๋ฏ.
โ Out of range: ์ ๋ ฅ๊ฐ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ๋ค๋ ์๋ฏธ์ ๋๋ค.
SET @๋ณ์์ด๋ฆ = ๋ณ์์ ๊ฐ;
SELECT @๋ณ์์ด๋ฆ;
์ฒซ ๋ฒ์งธ ์ค์ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๊ฐ์ ๋์
ํฉ๋๋ค.
๋ ๋ฒ์งธ ์ค์ ๋ณ์์ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
โ ๋ณ์๋ ์ํฌ๋ฒค์น๋ฅผ ์ฌ์์ํ ๋๊น์ง๋ ์ ์ง๋์ง๋ง, ์ข ๋ฃํ๋ฉด ์์ด์ง๋๋ค.
SET @count = 3;
SELECT mem_name, height FROM member ORDER BY height LIMIT @count;
์ ๋ฌธ์ฅ์ LIMIT์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
PREPARE์ EXECUTE๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ ์ ์์ต๋๋ค.
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;
mySQL์ SELECT ๋ฌธ์ ์ ์ฅํ๊ณ EXECUTE๋ฅผ ์คํํ ๋, USING์ผ๋ก ๋ฌผ์ํ(?)์ @count ๋ณ์์ ๊ฐ์ ๋์
ํฉ๋๋ค.
CAST(๊ฐ AS ๋ฐ์ดํฐ ํ์ [(๊ธธ์ด)] )
CONVERT(๊ฐ, ๋ฐ์ดํฐ ํ์ [(๊ธธ์ด)] )
SELECT '100'+'200';
๋ฌธ์๋ ๋ํ ์ ์์ผ๋ฏ๋ก ์๋์ผ๋ก ์ซ์ 100๊ณผ 200์ผ๋ก ๋ณํํด์ ๋ง์ ์ ์ํํ์ต๋๋ค.
SELECT CONCAT(100, '200');
์ซ์ 100์ด ๋ฌธ์ '100'์ผ๋ก ๋ณํ๋์ด์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
SELECT 100+'200';
๋ฌธ์ '200'์ด ์ซ์ 200์ผ๋ก ์๋ ๋ณํ๋์ด 300์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์ผ๋๋ค(one to many) ๊ด๊ณ: ํ์ชฝ ํ ์ด๋ธ์๋ ํ๋์ ๊ฐ๋ง ์กด์ฌํด์ผ ํ์ง๋ง, ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ํ ์ด๋ธ์๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ด ์กด์ฌํ ์ ์๋ ๊ด๊ณ
SELECT <์ด ๋ชฉ๋ก>
FROM <์ฒซ ๋ฒ์งธ ํ ์ด๋ธ>
โ โ โ โ โ INNER JOIN <๋ ๋ฒ์งธ ํ ์ด๋ธ>
โ โ โ โ โ ON <์กฐ์ธ๋ ์กฐ๊ฑด>
[WHERE ๊ฒ์ ์กฐ๊ฑด]
SELECT <์ด ๋ชฉ๋ก>
FROM <์ฒซ ๋ฒ์งธ ํ ์ด๋ธ(LEFT ํ ์ด๋ธ)>
โ โ โ โ โ <LEFT | RIGHT | FULL> OUTER JOIN <๋ ๋ฒ์งธ ํ ์ด๋ธ(RIGHT ํ ์ด๋ธ)>
โ โ โ โ โ ON <์กฐ์ธ๋ ์กฐ๊ฑด>
[WHERE ๊ฒ์ ์กฐ๊ฑด];
SELECT * FROM buy CROSS JOIN member;
ํ์ ํ ์ด๋ธ(member)๊ณผ ๊ตฌ๋งค ํ ์ด๋ธ(buy)์ ์ํธ ์กฐ์ธ์ ๋๋ค.
SELECT <์ด ๋ชฉ๋ก>
FROM <ํ ์ด๋ธ> ๋ณ์นญA
โ โ โ โ โ INNER JOIN <ํ ์ด๋ธ> ๋ณ์นญB
โ โ โ โ โ ON <์กฐ์ธ๋ ์กฐ๊ฑด>
[WHERE ๊ฒ์ ์กฐ๊ฑด]
ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ์ด ํ์ํ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ๋๋ค.
DELIMITER $$
CREATE PROCEDURE ์คํ ์ด๋ ํ๋ก์์ ์ด๋ฆ()
BEGINโ โ โ โ โ ์ด ๋ถ๋ถ์ SQL ํ๋ก๊ทธ๋๋ฐ ์ฝ๋ฉ
END $$
DELIMITER;
CALL ์คํ ์ด๋ ํ๋ก์์ ์ด๋ฆ();
DELIMITER $$ ~ END $$ ์์ ์์ฑํ๊ณ CALL ๋ก ํธ์ถํฉ๋๋ค.
IF <์กฐ๊ฑด์> THEN
โ โ โ โ โ SQL ๋ฌธ์ฅ๋ค
END IF;
โ SQL ๋ฌธ์ฅ๋ค์ด ๋ ๋ฌธ์ฅ ์ด์์ด๋ผ๋ฉด BEGIN~END๋ก ๋ฌถ์ด์ค์ผ ํฉ๋๋ค.
์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ถ๋ถ์ ์ํํฉ๋๋ค.
CASE
โ โ โ โ โ WHEN ์กฐ๊ฑด1 THEN
โ โ โ โ โ โ โ โ โ โ SQL ๋ฌธ์ฅ๋ค1
โ โ โ โ โ WHEN ์กฐ๊ฑด2 THEN
โ โ โ โ โ โ โ โ โ โ SQL ๋ฌธ์ฅ๋ค2
โ โ โ โ โ WHEN ์กฐ๊ฑด3 THEN
โ โ โ โ โ โ โ โ โ โ SQL ๋ฌธ์ฅ๋ค3
โ โ โ โ โ ELSE
โ โ โ โ โ โ โ โ โ โ SQL ๋ฌธ์ฅ๋ค4
END CASE;
WHILE <์กฐ๊ฑด์> DO
โ โ โ โ โ SQL ๋ฌธ์ฅ๋ค
END WHILE;
์ง์ ํ ๋ ์ด๋ธ๋ก ๊ฐ์ ๊ณ์ ์งํํฉ๋๋ค.
์ง์ ํ ๋ ์ด๋ธ์ ๋น ์ ธ๋๊ฐ๋๋ค. ์ฆ WHILE๋ฌธ์ด ์ข
๋ฃ๋ฉ๋๋ค.
use market_db;
PREPARE myQuery FROM 'SELECT * FROM member WHERE mem_id = "BLK";
EXECUTE myQuery;
DEALLOCATE PREPARE myQuery;
PREPARE ๋ฌธ์์ SELECT * FROM member WHERE mem_id = "BLK"๋ฅผ myQuery์ ์
๋ ฅ ์์ผ๋๊ณ EXECUTE myQuery ๋ฌธ์ผ๋ก ์คํํฉ๋๋ค.
โ ์คํ ํ์๋ DEALLOCATE PREPARE๋ก ๋ฌธ์ฅ์ ํด์ ํด์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
p. 195 - ํ์ธ๋ฌธ์ 4๋ฒ ํ๊ณ ์ธ์ฆ์ท!
p. 183 - [์ข ๋ ์์๋ณด๊ธฐ] ์์ฝ๋ฉ ์คํํ๊ณ ๊ฒฐ๊ณผํ๋ฉด ์ธ์ฆ์ท!
์.. ์ฉ์ด์