MySQL 17

ํ’€ ์Šค์บ”(full scan)๊ณผ ์ธ๋ฑ์Šค ์Šค์บ”(index scan)์˜ ์ฐจ์ด์ 

ํ’€ ์Šค์บ”(full scan)๊ณผ ์ธ๋ฑ์Šค ์Šค์บ”(index scan)์˜ ์ฐจ์ด์   ํ’€ ์Šค์บ”(full scan)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฒซ ๋ฒˆ์งธ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋ชจ๋“  ํ–‰์„ ํ›‘๋Š” ๊ฒƒ์ธ๋ฐ ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์ฐพ๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์ธ๋ฑ์Šค ์Šค์บ”(index scan)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ํ–‰์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, abc@naver.com ๋ผ๋Š” ๊ณ„์ •์„ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ–‰์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์„ ๋•Œ, ๊ทธ ์‚ฌ๋žŒ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด์„œ abc@naver.com๋ฅผ ์ธ๋ฑ์Šค๋กœ ๊ฑธ๋ฉด ๋” ๋น ๋ฅด๊ฒŒ ๊ทธ ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.  ํ’€ ์Šค์บ” (full scan) ์€ ํ…Œ์ด๋ธ”์ด ์ž‘๊ณ , ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ์กฐํšŒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋งž๋Š” ..

MySQL 2024.07.25

MySQL) like์— ๋นจ๊ฐ„ ๋ฐ‘์ค„์ด ๋œฐ ๋•Œ ๋ฐฑํ‹ฑ(`) ์‚ฌ์šฉํ•˜๊ธฐ

like์— ์˜ค๋ฅ˜๊ฐ€ ๋œจ๋Š”๋ฐ, ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค    ๋ฐฑํ‹ฑ(`)? ์‹๋ณ„์ž(ํ…Œ์ด๋ธ” ์ด๋ฆ„, ์—ด ์ด๋ฆ„ ๋“ฑ)๋ฅผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜์—ฌ SQL ๋ฌธ๋ฒ•์—์„œ ์‹๋ณ„์ž๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜๊ณ  ์ถฉ๋Œ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.    ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ   1. ์˜ˆ์•ฝ์–ด ์ถฉ๋Œ ๋ฐฉ์ง€: SQL์—๋Š” SELECT, INSERT, UPDATE ๋“ฑ๊ณผ ๊ฐ™์€ ์˜ˆ์•ฝ์–ด๊ฐ€ ๋งŽ๋‹ค. ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ ์—ด ์ด๋ฆ„์ด ์ด๋Ÿฌํ•œ ์˜ˆ์•ฝ์–ด์™€ ์ถฉ๋Œํ•  ๋•Œ, ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ด๊ฒƒ์„ ์‹๋ณ„์ž๋กœ ์ธ์‹ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, like๋Š” ํŒจํ„ด ๋งค์นญ์—์„œ ์‚ฌ์šฉ๋˜๋Š” SQL ์˜ˆ์•ฝ์–ด์ด๋‹ค. ์ด๋ฅผ ํ…Œ์ด๋ธ” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.INSERT INTO `like` (postingId, userId) VALUES (2, 1); insert into `like..

MySQL 2024.05.30

MySQL) ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ delete ํ–ˆ์„ ๋•Œ id ์ˆซ์ž ๋ฆฌ์…‹ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋‹ค๊ฐ€ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด,      ์ด๋ ‡๊ฒŒ id๊ฐ€ ์ง€์› ๋˜ ๋ฐ์ดํ„ฐ์˜ id ๋‹ค์Œ ์ˆซ์ž๋ถ€ํ„ฐ ์ƒ์„ฑ๋˜๋Š”๋ฐ,       id๋ฅผ ๋‹ค์‹œ 1๋ถ€ํ„ฐ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ผ๋‹จ, ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ ํ›„์—,       ํ…Œ์ด๋ธ” ์„ค์ •์—์„œ options๋กœ ์ด๋™ํ•ด์„œ Auto Increment ๋ถ€๋ถ„์„ 1๋กœ ๋ฐ”๊พธ์–ด์ฃผ๊ณ  Apply ํ•˜๋ฉด,        ์ž˜ ์ ์šฉ๋˜๋ฉด ์ด์ฒ˜๋Ÿผ ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š๊ฒŒ๋˜๊ณ , id์˜ ์ˆซ์ž๋“ค์ด ๋ฆฌ์…‹๋œ๋‹ค.

MySQL 2024.05.30

MySQL) ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด ์ฐพ๋Š” ์†๋„ ๋‹จ์ถ•ํ•˜๊ธฐ (FULLTEXT ์„ค์ •)

์•„๋ž˜๋Š” ์˜ํ™”์ œ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ, ์˜ํ™” ๋ชฉ๋ก(๋ฆฌ์ŠคํŠธ)์„ ๊ฐ€์ ธ์˜ค๋Š” SQL๋ฌธ์ด๋‹ค. select m.id, m.title, count(r.id) as review_cnt, ifnull(avg(r.rating) , 0) as avg_ratingfrom movie mleft join review ron m.id = r.movieIdwhere title like '%story%' or summary like '%story%'group by m.idlimit 0, 25;   title like %(์œ ์ €๊ฐ€ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅ)%๊ทธ๋Ÿฐ๋ฐ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ๋‹จ์–ด๊ฐ€ ์žˆ๋Š” ํ–‰์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ์†๋„๊ฐ€ ๋Š๋ ค์„œ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•ด์ฃผ๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.   ์ปฌ๋Ÿผ ์„ค์ •์—์„œ index์— index name์„ ์ž์œ ๋กญ๊ฒŒ ์ง€์ •ํ•˜๊ณ , Type์„ FUL..

MySQL 2024.05.20

MySQL) now() ์™€ now() on update now() ์ฐจ์ด์ 

์ปฌ๋Ÿผ ์„ค์ •์—์„œ,  Datatype์„ TIMESTAMP๋กœ ์„ค์ •ํ•˜๊ณ  Default/Expression(๊ธฐ๋ณธ๊ฐ’)์—  now()๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ ์šฉ(apply)ํ•˜๋ฉด CURRENT_TIMESTAMP, now() on update now()๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ ์šฉ(apply)ํ•˜๋ฉด CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP๋ผ๊ณ  ์ž…๋ ฅ๋œ๋‹ค.     now() : CURRENT_TIMESTAMP   = ํ–‰์„ ์ฒ˜์Œ์œผ๋กœ ์‚ฝ์ž…ํ•  ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •ํ•œ๋‹ค  now() on update now(): ON UPDATE CURRENT_TIMESTAMP  = ํ–‰์„ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ๋œ ์‹œ๊ฐ„์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•œ๋‹ค

MySQL 2024.05.20

MySQL) Instargram - ์œ ๋‹ˆํฌ์™€ ์ด์ค‘์œ ๋‹ˆํฌ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผ ์ธ๋ฌผ์„ ์ค‘๋ณต ํŒ”๋กœ์šฐ ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋œจ๊ฒŒ ํ•˜๊ธฐ

1. ์œ ๋‹ˆํฌ - ๋‹จ์ผ ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค  username์€ ๊ทธ ์ž์ฒด๋กœ UQ(unique) ํ•ด์•ผํ•œ๋‹ค.  username์— UQ๋ฅผ ์ฒดํฌํ•˜๋ฉด, ๋™์ผํ•œ username์€ ์กด์žฌํ•  ์ˆ˜ ์—†๊ณ , ๊ฐ™์€ username์œผ๋กœ ํšŒ์›๊ฐ€์ž…ํ•˜๋ ค๊ณ  ํ•˜๋ฉด, ์˜ค๋ฅ˜๋ฉ”์„ธ์ง€๋ฅผ ๋„์›Œ ๋‹ค๋ฅธ username์œผ๋กœ ๊ฐ€์ž…ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.    2. ์ด์ค‘์œ ๋‹ˆํฌ - ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ ์กฐํ•ฉ์˜ ๊ฐ’์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŒ”๋กœ์šฐ์™€ ํŒ”๋กœ์ž‰ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—ฌ๋Ÿฌ๋ช…์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 'abcd' ๋ผ๋Š” ์‚ฌ๋žŒ์€ 'ef'์™€ 'gh'๋ผ๋Š” ์‚ฌ๋žŒ์„ ๋™์‹œ์— ํŒ”๋กœ์šฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. followerId   followeeId    'abcd'            'ef'    'abcd'            'gh'  ๊ทธ๋Ÿฌ๋ฏ€๋กœ follow..

MySQL 2024.05.20

MySQL) Instargram (3) : ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ

1) ์ฐพ์•„์•ผ ํ•  ๋ฐ์ดํ„ฐ : ์ด๋ฏธ์ง€ ์ฃผ์†Œ, ์ž‘์„ฑ์ž ์ด๋ฆ„, ์ข‹์•„์š” ์ˆ˜, ํƒœ๊ทธ ์ด๋ฆ„๋“ค  (์˜ˆ์‹œ ์‚ฌ์ง„ ์ž…๋‹ˆ๋‹ค)   -- ํŠน์ • ํฌ์ŠคํŒ…, photos์˜ id๊ฐ€ 72๋ฒˆ์ด๋ผ๋ฉด ์ด๋ฏธ์ง€ ์ฃผ์†Œ, ์ž‘์„ฑ์ž ์ด๋ฆ„, ์ข‹์•„์š” ์ˆ˜select p.id, p.image_url, username , count(l.photo_id) as like_countfrom photos pjoin users uon p.user_id = u.idjoin likes lon p.id = l.photo_idwhere p.id = 72; -- ํŠน์ • ํฌ์ŠคํŒ…, photos์˜ id๊ฐ€ 72๋ฒˆ ์ด๋ผ๋ฉด ๊ทธ์— ๋Œ€ํ•œ ํƒœ๊ทธ๋“คselect photo_id, tag_namefrom photos pjoin photo_tags pton p.id = pt.photo_idjoin tags..

MySQL 2024.05.20

MySQL) Instargram (2) : ์ธ์Šคํƒ€๊ทธ๋žจ ๋ฐ์ดํ„ฐ ๋ถ„์„ํ•˜๊ธฐ

๋ฐ์ดํ„ฐ ๋ถ„์„ํ•˜๊ธฐ -- ์œ ์ € ์ค‘์—์„œ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํšŒ์› ๋‹ค์„ฏ๋ช…์„ ์ฐพ์œผ์„ธ์š”select *from usersorder by created_at asclimit 5; -- ํšŒ์›๊ฐ€์ž…์„ ๊ฐ€์žฅ ๋งŽ์ด ํ•˜๋Š” ์š”์ผ์€ ๋ฌด์Šจ์š”์ผ??select dayname(created_at) as dayname, count(id) as countfrom usersgroup by daynameorder by count desc; -- ํšŒ์›๊ฐ€์ž…์€ ํ–ˆ์ง€๋งŒ, ์‚ฌ์ง„์€ ํ•œ๋ฒˆ๋„ ์˜ฌ๋ฆฌ์ง€ ์•Š์€ ์œ ๋ นํšŒ์›๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์‹œ์˜คselect *from users uleft join photos pon u.id = p.user_idwhere p.image_url is null ;-- ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์‚ฌ์ง„์€ ๋ฌด์—‡์ธ์ง€ ์ฐพ์•„์„œ ๊ทธ ์‚ฌ์ง„์˜ ์œ ์ €์ด๋ฆ„, ์ด๋ฏธ์ง€์ฃผ์†Œ, ์ข‹์•„์š” ์ˆ˜๋ฅผ..

MySQL 2024.05.17

MySQL) Instargram (1) : ํƒœ๊ทธ, ์ข‹์•„์š”, ํŒ”๋กœ์šฐ ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ด๋ฆ„์„ instar_db๋กœ ์ง€์ •ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.  users, photos ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ photos ์™ธ๋ž˜ํ‚ค ์„ค์ •    comments ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐcomments ์™ธ๋ž˜ํ‚ค ์„ค์ •  likes ํ…Œ์ด๋ธ”๋งŒ๋“ค๊ธฐlikes ์™ธ๋ž˜ํ‚ค ์„ค์ •  follows ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ follows ์™ธ๋ž˜ํ‚ค ์„ค์ • tags ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ photo_tags ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐphoto_tags ์™ธ๋ž˜ํ‚ค ์„ค์ •  DROP DATABASE IF EXISTS instar_db;CREATE DATABASE instar_db;USE instar_db; CREATE TABLE users ( id INTEGER AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, ..

MySQL 2024.05.17

MySQL) 3๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ” ์กฐ์ธํ•˜๊ธฐ

๋จผ์ € ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค https://codebunny99.tistory.com/74 MySQL) ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์กฐ์ธํ•˜๊ธฐ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์™ธ๋ž˜ํ‚ค(foreign key) ์„ค์ •ํ•˜๊ธฐ   decimal(8,2)๋Š” ์†Œ์ˆซ์ ์„ ํ•ฉ์ณ์„œ 8์ž๋ฆฌ, ์†Œ์ˆซ์  ์•„๋ž˜ 2์ž๋ฆฌ๊ฐ€ ํ‘œํ˜„๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.  ***********  ์™ธ๋ž˜ํ‚ค์— UN(unsigned data type)์„ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š” ์ด์œ  cucodebunny99.tistory.com       Reviews์— ์™ธ๋ž˜ํ‚ค ์„ค์ •       3๊ฐœ ํ…Œ์ด๋ธ” ์กฐ์ธํ•˜๊ธฐ  - ๋ฆฌ๋ทฐ์˜ ์ œ๋ชฉ๊ณผ ๋ณ„์  - select s.title, r.rating, concat(er.first_name,' ', er.last_name) as reviewerfrom Reviews rjoin Series s..

MySQL 2024.05.16