MySQL 17

MySQL) ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด ์„ค์ •์—์„œ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ๋ณ€๊ฒฝํ•˜๊ธฐ (RESTRICT , CASCADE , SET NULL , NO ACTION)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด(foreign key constraint)์„ค์ •์ด๋ž€์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ๋งํ•œ๋‹ค.  ํ…Œ์ด๋ธ” ์„ค์ • ๋ฐ‘์—, foreign key๋กœ ์ด๋™ํ•œ๋‹ค.   ์˜ค๋ฅธ์ชฝ์— foreign key options๊ฐ€ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์—์„œ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค   1. RESTRICT (๊ธฐ๋ณธ๊ฐ’)์„ค๋ช…: ์™ธ๋ž˜ ํ‚ค๋กœ ์ฐธ์กฐํ•˜๋Š” ํ–‰์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ์ฐธ์กฐ๋˜๊ณ  ์žˆ์„ ๋•Œ, ํ•ด๋‹น ํ–‰์˜ ์‚ญ์ œ๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œํ•œํ•œ๋‹ค๋™์ž‘: ๋งŒ์•ฝ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ์‚ญ์ œ๋‚˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค์˜ˆ์ œ: ๋งŒ์•ฝ ํ•™์ƒ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ํ•™์ƒ์ด ์—ฌ๋Ÿฌ ์„ฑ์  ํ…Œ์ด๋ธ”์—์„œ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋‹ค๋ฉด, ๊ทธ ํ•™์ƒ์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์‚ญ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค 2. CASCADE   **์ค‘์š”**์„ค๋ช…: ์™ธ๋ž˜ ํ‚ค๋กœ ์ฐธ์กฐํ•˜๋Š” ํ–‰์ด ์‚ญ์ œ๋˜๊ฑฐ๋‚˜..

MySQL 2024.05.16

MySQL) ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์กฐ์ธํ•˜๊ธฐ

์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์™ธ๋ž˜ํ‚ค(foreign key) ์„ค์ •ํ•˜๊ธฐ   decimal(8,2)๋Š” ์†Œ์ˆซ์ ์„ ํ•ฉ์ณ์„œ 8์ž๋ฆฌ, ์†Œ์ˆซ์  ์•„๋ž˜ 2์ž๋ฆฌ๊ฐ€ ํ‘œํ˜„๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.  ***********  ์™ธ๋ž˜ํ‚ค์— UN(unsigned data type)์„ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š” ์ด์œ  customers ํ…Œ์ด๋ธ”์˜ id(๊ธฐ๋ณธํ‚ค)๊ฐ€ UN(unsigned data type)์ด ์ฒดํฌ๋˜์–ด, ์–‘์ˆ˜๊ฐ’๋งŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ์ด๋ฅผ ์ฐธ์กฐํ•˜๋Š” customer_id ๋˜ํ•œ UN(unsigned data type)์œผ๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋งž์ถฐ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  ***********    Foreign Key Name์€ ์•Œ์•„์„œ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. Referenced Table๋Š” ์ฐธ์กฐํ•  ํ…Œ์ด๋ธ”์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๊ณ ,Referenced Column์„ customer ํ…Œ์ด๋ธ”์˜ id ์ปฌ..

MySQL 2024.05.16

MySQL) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค DATE(๋‚ ์งœ) ๊ฐ€๊ณตํ•˜๋Š” ํ•จ์ˆ˜

๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜๊ธฐ CREATE TABLE people (name VARCHAR(100), birthdate DATE, birthtime TIME, birthdt DATETIME);insert into people(name, birthdate, birthtime, birthdt)values( 'Mike', '1990-11-11', '10:07:35', '1990-11-11 10:07:35'),( 'Larry', '1980-12-25', '04:10:42', '1980-12-25 04:10:42');  -- ๋…„ ์›” ์ผ์—์„œ ๋‚ ์งœ๋งŒ ๊ฐ€์ ธ์˜ฌ ๋•Œselect name, day(birthdate)from people;-- ๋…„ ์›” ์ผ์—์„œ ์›”๋งŒ ๊ฐ€์ ธ์˜ฌ ๋•Œselect name, month(birthdate)from peopl..

MySQL 2024.05.16

MySQL) Reverse, Char_length, Ifnull ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

reverse-- ๋ฌธ์ž์—ด์˜ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜ reverse()  -- author_lname ์„ ์—ญ์ˆœ์œผ๋กœ ๊ฐ€์ ธ์˜ค์‹œ์˜ค.select reverse(author_lname)from books;  char_length -- ๋ฌธ์ž์—ด์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ char_length() -- ์ฑ… ์ œ๋ชฉ์˜ ๊ธ€์ž ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•˜์„ธ์š”.select char_length(title) length, titlefrom books;   Ifnull- Null์ธ ํ•ญ๋ชฉ์„, ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•  -- stock_quantity์— null์ด ์žˆ์œผ๋ฉด, 0์œผ๋กœ ์…‹ํŒ…ํ•˜์žselect title, author_fname, author_lname, released_year,ifnull(stock_quantity,0) as stock_quan..

MySQL 2024.05.14

MySQL) Substring, Replace, Upper/Lower ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

substring-- ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜ substring() -- ์ฑ… ์ œ๋ชฉ์„ ์ฒซ๊ธ€์ž๋ถ€ํ„ฐ ์—ด๋ฒˆ์งธ ๊ธ€์ž๊นŒ์ง€๋งŒ ๊ฐ€์ ธ์˜ค์‹œ์˜ค-- substring ํ•จ์ˆ˜์˜ ์‹œ์ž‘ ์œ„์น˜๋Š” 1๋ถ€ํ„ฐ๋‹คselect substring(title,1,10) as title, pages, released_yearfrom books;-- ์ œ๋ชฉ์„, ๋งจ ๋’ค์—์„œ 5๋ฒˆ์งธ ๊ธ€์ž๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋‹ค ๋‚˜์˜ค๋„๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์‹œ์˜คselect substring(title,-5) as titlefrom books;-- ์ œ๋ชฉ์„ ์•ž์—์„œ 3๋ฒˆ์งธ ๊ธ€์ž๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋‹ค ๋‚˜์˜ค๋„๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์‹œ์˜คselect substring(title,3) as titlefrom books;-- ์ฑ… ์ œ๋ชฉ์„, ๋งจ ์•ž๋ถ€ํ„ฐ 10๊นŒ์ง€๋งŒ ๊ฐ€์ ธ์˜ค๊ณ , ๋’ค์—๋Š” ...์„ ๋ถ™์—ฌ์ฃผ์„ธ์š”-- The Nam..

MySQL 2024.05.14

MySQL) LIKE, CASE, IF, GROUP BY ๊ตฌ๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ

Like: ๋ฌธ์ž์—ด ์•ˆ์— ์›ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ๋“ค์–ด์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ‚ค์›Œ๋“œ  -- ์ฑ… ์ œ๋ชฉ์— the๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์‹œ์˜คselect *from bookswhere title like '%the%';-- the๋กœ ์‹œ์ž‘ํ•˜๋Š”select *from bookswhere title like 'the%';-- the๋กœ ๋๋‚˜๋Š”select *from bookswhere title like '%the';-- pages ์ˆ˜๋Š” 100๋ณด๋‹ค ํฌ๊ณ , ์ฑ… ์ œ๋ชฉ์— the๊ฐ€ ๋“ค์–ด๊ฐ„ ์ฑ…์„ ๊ฐ€์ ธ์˜ค๋˜ ์žฌ๊ณ ์ˆ˜๋Ÿ‰ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ 3๊ฐœ๋งŒ ๊ฐ€์ ธ์˜ค์‹œ์˜คselect *from bookswhere pages > 100 and title like '%the%'order by stock_quantity desc limit 0,3;-- ์ฑ… ์ œ๋ชฉ์—, talk..

MySQL 2024.05.14

MySQL) ์„œ๋ธŒ์ฟผ๋ฆฌ(Sub Query)์™€ Concat, Max, Min, Avg ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

SUB QUERY (์„œ๋ธŒ์ฟผ๋ฆฌ) -- pages๊ฐ€ ๊ฐ€์žฅ ๊ธด ์ฑ…์˜, ์ œ๋ชฉ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?-- ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 1. ์ •๋ ฌํ•ด์„œ limitselect titlefrom booksorder by pages desclimit 1;-- ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 2. sub query(์„œ๋ธŒ์ฟผ๋ฆฌ)ํ•˜๋Š” ๋ฐฉ๋ฒ•select titlefrom bookswhere pages = (select max(pages) from books);  concat ํ•จ์ˆ˜: ๋ฌธ์ž์—ด ์ด์–ด์ฃผ๋Š” ํ•จ์ˆ˜ -- ๋ฌธ์ž์—ด์„ ํ•ฉ์น˜๋Š” ํ•จ์ˆ˜ concat()-- author_fname, author_lname ์ปฌ๋Ÿผ์˜ ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ, full_name์ด๋ผ๋Š” ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค.-- as ์ƒ๋žต ๊ฐ€๋Šฅselect * , concat( author_fname,' ', author_lname) fu..

MySQL 2024.05.14