๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด์„œ ์ดํ•ดํ•˜๊ธฐ ๊ธฐ๋ณธํŽธ

๋ฐ์ดํƒ€๋ฒ ์ด์Šค ์ƒ์„ฑํ•˜๊ธฐ

nodejs๋ผ๋Š” ๋ฐ์ดํƒ€ ๋ฒ ์ด์Šค ์ƒ์„ฑํ•˜๊ณ  use nodejs; ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑํ•œ ๋ฐ์ดํƒ€๋ฒ ์ด์Šค ์„ ํƒํ•˜๋Š” ์˜ˆ์ œ
mysql> CREATE SCHEMA โ€˜nodejsโ€™ DEFAULT CHARACTER SET utf8;
Query Ok, 1 row affected (0,01 sec)
mysql> use nodejs;
Database changed
CREATE SCHEMA 'nodejs' DEFAULT CHARACTER SET utf8; ๋ช…๋ น์–ด๋Š” MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ƒˆ๋กœ์šด ์Šคํ‚ค๋งˆ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋ฅผ ์ƒ์„ฑํ•˜๋Š” SQL ๋ช…๋ น์–ด์ด๋‹ค.
CREATE SCHEMA 'nodejs';
์œ„ ๋ช…๋ น์–ด๋Š” ์ƒˆ๋กœ์šด ์Šคํ‚ค๋งˆ(๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์ธ 'nodejs'๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
DEFAULT CHARACTER SET utf8;
์Šคํ‚ค๋งˆ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฌธ์ž ์„ธํŠธ๋ฅผ UTF-8๋กœ ์„ค์ •ํ•œ๋‹ค. UTF-8์€ ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ๋ฌธ์ž๋ฅผ ์ง€์›ํ•˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ด๋‹ค. ์ฆ‰, ์ด ๋ช…๋ น์–ด๋Š” 'nodejs'๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ๋ชจ๋“  ํ…Œ์ด๋ธ”์ด UTF-8 ๋ฌธ์ž ์„ธํŠธ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.


MySQL ํ”„๋กฌํ”„ํŠธ์—์„œ ๋Œ“๊ธ€ํ…Œ์ด๋ธ” ์ƒ์„ฑ

mysql> CREATE TABLE nodejs.comments(
-> id INT NOT NULL AUTO_INCREMENT,
-> commenter INT NOT NULL, //๋Œ“๊ธ€๋‹จ์‚ฌ๋žŒ ์•„์ด๋”” 
-> comment VARCHAR(100) NOT NULL, //100๊ธ€์งœ๊นŒ์ง€ ์ปค๋ฉ˜ํŠธ 
-> created_at DATETIME NOT NULL DEFAULT now(), ์ƒ์„ฑ์ผ ๋‚ ์งœ์‹œ๊ฐ„ ์œ ์ €๊ฐ€ ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์„๊ฒฝ์šฐ์— ํ˜„์žฌ๋‚ ์งœ์‹œ๊ฐ„์„ ์ž…๋ ฅํ•ด์คŒ
-> PRIMARY KEY(id)
-> INDEX commenter_idx (commenter ASC),
-> CONSTRAINT commenter
-> FOREIGN KEY (commenter)
-> REFERENCES nodejs.users (id)
-> ON DELETE CASCADE
-> ON UPDATE CASCADE
-> COMMENT =โ€œ๋Œ“๊ธ€โ€
-> DEFAULT CHARSET=utf8mb4
-> ENGIME=InnoDB;
)
  • INT : ์ •์ˆ˜ ์ž๋ฃŒํ˜•
  • VARCHAR : ๋ฌธ์ž์—ด ์ž๋ฃŒํ˜•, ๊ฐ€๋ณ€๊ธธ์ด(CHAR์€ ๊ณ ์ •๊ธธ์ด)
  • TEXT : ๊ธด ๋ฌธ์ž์—ด์€ TEXT๋กœ ๋ณ„๋„์ €์žฅ(์†Œ์„ค, ์ผ๊ธฐ ๋“ฑ)
  • DATETIME : ๋‚ ์งœ ์ž๋ฃŒํ˜• ์ €์žฅ
  • TINYINT : -128์—์„œ 127๊นŒ์ง€ ์ €์žฅํ• ์ˆ˜์žˆ๋‹ค. 1 ๋˜๋Š” 0๋งŒ ์ €์žฅํ•ด ๋ถˆ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • NOT NULL : ๋นˆ๊ฐ’์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
  • AUTO_INCREMENT : ์ˆซ์ž ์ž๋ฃŒํ˜•์ธ ๊ฒฝ์šฐ ๋‹ค์Œ ๋กœ์šฐ๊ฐ€ ์ €์žฅ๋ ๋•Œ ์ž๋™์œผ๋กœ 1์ฆ๊ฐ€
  • UNSIGNED : 0๊ณผ ์–‘์ˆ˜๋งŒ ํ—ˆ์šฉ
  • ZEROFILL : ์ˆซ์ž์˜ ์ž๋ฆฌ์ˆ˜๊ฐ€ ๊ณ ์ •๋œ ๊ฒฝ์šฐ ๋นˆ์ž๋ฆฌ์— 0์„ ๋„ฃ์Œ
  • DEFAULT now() : ๋‚ ์งœ ์ปฌ๋Ÿผ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ํ˜„์ง€ ์‹œ๊ฐ„์œผ๋กœ

column ์„ธ๋ถ€ ์˜ต์…˜ ์„ค๋ช…

INDEX commenter_idx (commenter ASC)

INDEX๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ์—ด์˜ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด๋กœ ๋Œ“๊ธ€๊ฒ€์ƒ‰์‹œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” commenter์— INDEX๋ฅผ ๊ฑธ์–ด์ฃผ๊ณ  ์ฝ”๋งจํ„ฐ ์ปฌ๋Ÿผ ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ธ๋ฑ์‹ฑ ํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค.

CONSTRAINT commenter

CONSTRAINT๋Š” ํŠน์ • ์ œ์•ฝ ์กฐ๊ฑด์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋Š” ๋ช…๋ น์–ด๋กœ commenter์— ํŠน์ • ์ œ์•ฝ์กฐ๊ฑด์„ ๋ถ€์—ฌ ํ•˜๊ฒ ๋‹ค๋ผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

FOREIGN KEY (commenter)

FOREIGN KEY๋Š” ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค. * (commenter)๋Š” ์ด ์™ธ๋ž˜ ํ‚ค๊ฐ€ ์ฐธ์กฐํ•  ํ…Œ์ด๋ธ”์˜ ์—ด(column)์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ด ๊ฒฝ์šฐ, commenter ์—ด์ด ์™ธ๋ž˜ ํ‚ค ์—ญํ• ์„ ํ•œ๋‹ค.

REFERENCES nodejs.users (id)

REFERENCES๋Š” ์™ธ๋ž˜ ํ‚ค๊ฐ€ ์ฐธ์กฐํ•  ํ…Œ์ด๋ธ”๊ณผ ์—ด์„ ์ง€์ •ํ•œ๋‹ค. nodejs.users๋Š” ์ฐธ์กฐํ•  ๋Œ€์ƒ ํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, id๋Š” ๊ทธ ํ…Œ์ด๋ธ”์—์„œ ์ฐธ์กฐํ•  ์—ด ์ด๋‹ค. ๋”ฐ๋ผ์„œ, commenter ์—ด์€ nodejs ์Šคํ‚ค๋งˆ(ํ…Œ์ด๋ธ”)์˜ users ํ…Œ์ด๋ธ”์— ์žˆ๋Š” id ์—ด์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉฐ
์ด SQL ๊ตฌ๋ฌธ์€ ์™ธ๋ž˜ ํ‚ค(Foreign Key)๋ฅผ ์ •์˜ํ•˜์—ฌ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์„ค์ •ํ•˜๋Š” ๋ช…๋ น๋ฌธ์ด๋‹ค

ON DELETE CASCADE

ON DELETE CASCADE๋Š” ์ฐธ์กฐ๋œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ์ด ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋„๋ก ์„ค์ •ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, users ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • id๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ญ์ œ๋˜๋ฉด, ์ด id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  commenter ๋ ˆ์ฝ”๋“œ๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค.

ON UPDATE CASCADE

ON UPDATE CASCADE๋Š” ์ฐธ์กฐ๋œ ๋ ˆ์ฝ”๋“œ์˜ ๊ธฐ๋ณธ ํ‚ค(์ฆ‰, id)๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ, ์ด ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ์˜ ๊ฐ’๋„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋„๋ก ์„ค์ •ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, users ํ…Œ์ด๋ธ”์˜ ํŠน์ • id ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด, ์ด id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  commenter ์—ด์˜ ๊ฐ’๋„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋œ๋‹ค.

DEFAULT CHARSET=utf8mb4

DEFAULT CHARSET๋Š” ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฌธ์ž์—ด ์—ด(column)์— ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ ๋ฌธ์ž ์ง‘ํ•ฉ(๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ์˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹)์„ ์ง€์ •ํ•œ๋‹ค. utf8mb4๋Š” MySQL์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฌธ์ž ์ง‘ํ•ฉ ์ค‘ ํ•˜๋‚˜๋กœ ์œ ๋‹ˆ์ฝ”๋“œ์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ ์ด๋ชจ์ง€(emoji)๋‚˜ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์ œ๋Œ€๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

UNIQUE INDEX name_QNIQUE (name ASC)

์ด ๋ช…๋ น๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๊ณ ์œ  ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. INDEX๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ์—ด์˜ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

* UNIQUE INDEX ๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๊ณ ์œ ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ด ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•œ ์—ด(column)์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ์„ ์ˆ˜ ์—†๋‹ค.
* name_QNIQUE๋Š” ์ƒ์„ฑํ•  ์ธ๋ฑ์Šค์˜ ์ด๋ฆ„์ด๋ฉฐ ์ธ๋ฑ์Šค ์ด๋ฆ„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ๊ณ ์œ ํ•ด์•ผ ํ•˜๋ฉฐ, ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
* (name ASC)๋Š” name์€ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์—ด(column)์˜ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ASC๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ(ascending)์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋กœ users๋ผ๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ๊ณ , ์ด ํ…Œ์ด๋ธ”์—์„œ name ์—ด์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
CREATE UNIQUE INDEX name_QNIQUE ON users(name ASC);

[ํ…Œ์ด๋ธ”] - CREATE ์ƒ์„ฑ

INSERT INTO ํ…Œ์ด๋ธ” (์ปฌ๋Ÿผ๋ช…๋“ค) VALUES (๊ฐ’๋“ค)

mysql> INSERT INTO nodejs.users (name, age, married, comment) VALUES ('zero', 24, 0, '์ž๊ธฐ์†Œ๊ฐœ ์ปค๋ฉ˜ํŠธ');
Query OK, 1 row affected (0.01 sec)
์œ„ SQL ์ฟผ๋ฆฌ๋Š” nodejs ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ users ํ…Œ์ด๋ธ”์— ์ด๋ฆ„์ด zero์ด๊ณ , ๋‚˜์ด๊ฐ€ 24์„ธ์ด๋ฉฐ, ๋ฏธํ˜ผ์ด๊ณ , "์ž๊ธฐ์†Œ๊ฐœ ์ปค๋ฉ˜ํŠธ"๋ผ๋Š” ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค. id์™€ create_at์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.
mysql> INSERT INTO nodejs.comments (commenter, comment) VALUES(1, โ€˜์•ˆ๋…•ํ•˜์„ธ์š”. commenter1์˜ ๋Œ“๊ธ€์ž…๋‹ˆ๋‹ค. )
์œ„ SQL ์ฟผ๋ฆฌ๋Š” nodejs.comments ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉ์ž ID๊ฐ€ 1์ธ ์‚ฌ์šฉ์ž๊ฐ€ "์•ˆ๋…•ํ•˜์„ธ์š”. commenter1์˜ ๋Œ“๊ธ€์ž…๋‹ˆ๋‹ค."๋ผ๋Š” ๋Œ“๊ธ€์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค.

[ํ…Œ์ด๋ธ”] - READ ์กฐํšŒ

SELECT ์ปฌ๋Ÿผ FROM ํ…Œ์ด๋ธ”๋ช…
mysql> SELECT * FROM nodejs.users;
SELECT๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. * ๋Š” ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์—ด(columns)์„ ์กฐํšŒํ•˜๊ฒ ๋‹ค๋Š” ๋œป์œผ๋กœ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ์„ ํƒํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
mysql> SELECT name, married FROM nodejs.users;
์œ„ SQL ์ฟผ๋ฆฌ๋Š” nodejs๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์žˆ๋Š” users๋ผ๋Š” ํ…Œ์ด๋ธ”์—์„œ name๊ณผ married๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์ปฌ๋Ÿผ(์—ด)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒ(select)ํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์ด๋‹ค.

WHERE ์กฐ๊ฑด๋ฌธ๊ณผ AND

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋™์‹œ์— ๋งŒ์กฑํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์•„์ค€๋‹ค.
mysql> SELECT name, age, FROM nodejs.users WHERE married = 1 AND age > 30;
์ฟผ๋ฆฌ์˜ ๋‚ด์šฉ์€ married ํ•„๋“œ๊ฐ€ 1(์ฆ‰, ๊ฒฐํ˜ผํ•œ ์ƒํƒœ)์ด๊ณ  age ํ•„๋“œ๊ฐ€ 30์„ธ ์ด์ƒ์ธ ์‚ฌ์šฉ์ž๋“ค์˜ name(์ด๋ฆ„)๊ณผ age(๋‚˜์ด)๋ฅผ ์กฐํšŒํ•œ๋‹ค.

WHERE ์กฐ๊ฑด๋ฌธ๊ณผ OR

OR๋กœ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์•„์ค€๋‹ค.
mysql> SELECT id, name FROM nodejs.users WHERE married = 0 OR age > 30;
์ฟผ๋ฆฌ์˜ ๋‚ด์šฉ์€ ๊ฒฐํ˜ผํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž(married๊ฐ€ 0์ธ ์‚ฌ์šฉ์ž) ๋˜๋Š” ๋‚˜์ด๊ฐ€ 30์„ธ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์‚ฌ์šฉ์ž(age > 30)์˜ id์™€ name์„ ๊ฐ€์ ธ์˜จ๋‹ค.

ORDER BY๋กœ ํŠน์ • ์ปฌ๋Ÿผ์„ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ ํ•œ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ

  • DESC๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ
  • ASC๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ
mysql> SELECT id, name FROM nodejs.users ORDER BY age DESC;
nodejs ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ users ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉ์ž๋“ค์˜ id์™€ name์„ ์กฐํšŒํ•˜๊ณ , age(๋‚˜์ด) ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ(๋‚˜์ด๊ฐ€ ๋งŽ์€ ์ˆœ์„œ๋Œ€๋กœ)์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ช…๋ น์ด๋‹ค.

LIMIT์œผ๋กœ ์กฐํšŒํ•  ๊ฐœ์ˆ˜ ์ œํ•œ

mysql> SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1;
ORDER BY age DESC
age(๋‚˜์ด) ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ(๋‚˜์ด๊ฐ€ ๋งŽ์€ ์ˆœ์„œ)์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
LIMIT 1
๊ฒฐ๊ณผ ์ง‘ํ•ฉ์—์„œ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ํ–‰๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค. ์ฆ‰, ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ ์ค‘ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž(๋‚˜์ด๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‚ฌ์šฉ์ž) ํ•˜๋‚˜๋งŒ ์„ ํƒํ•œ๋‹ค.

OFFSET์œผ๋กœ ์•ž์˜ ๋กœ์šฐ๋“ค ์Šคํ‚ตํ•˜๊ธฐ

OFFSET 2๋ฉด ์„ธ๋ฒˆ์งธ ๊ฒƒ๋ถ€ํ„ฐ ์ฐพ์Œ
mysql> SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1 OFFSET 1;
ORDER BY age DESC
* age(๋‚˜์ด) ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ(๋‚˜์ด๊ฐ€ ๋งŽ์€ ์ˆœ์„œ)์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•ด์ค€๋‹ค.
LIMIT 1
* ๊ฒฐ๊ณผ์—์„œ ํ•˜๋‚˜์˜ ํ–‰๋งŒ ์„ ํƒ ํ•˜์ง€๋งŒ ์ด ํ–‰์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ์˜ ์ฒซ ๋ฒˆ์งธ๊ฐ€ ์•„๋‹Œ, OFFSET ๊ฐ’์ด ์ ์šฉ๋œ ๋‹ค์Œ ํ–‰์ด๋‹ค.
OFFSET 1
* ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์—์„œ ์ฒซ ๋ฒˆ์งธ ํ–‰์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‘ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์‚ฌ์šฉ์ž ๋ชฉ๋ก์—์„œ ๋‘ ๋ฒˆ์งธ๋กœ ๋‚˜์ด๊ฐ€ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒ๋œ๋‹ค.

[ํ…Œ์ด๋ธ”] - UPDATE ์ˆ˜์ •

UPDATE ํ…Œ์ด๋ธ”๋ช… SET ์นผ๋Ÿผ=์ƒˆ๊ฐ’ WHERE ์กฐ๊ฑด
mysql> UPDATE nodejs.users SET comment = โ€˜์—ฌ๊ธฐ comment์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.โ€™ WHERE id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
nodejs.users ํ…Œ์ด๋ธ”์—์„œ id ๊ฐ’์ด 2์ธ ํ–‰์„ ์ฐพ์•„์„œ ํ•ด๋‹น ํ–‰์˜ comment ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ '๋ฐ”๊ฟ€ ๋‚ด์šฉ'์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

[ํ…Œ์ด๋ธ”] - DELETE ์‚ญ์ œ

DELETE FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด
mysql> DELETE FROM nodejs.users WHERE id = 2;
Query OK, 1 row affected (0.00 sec)
nodejs.users ํ…Œ์ด๋ธ”์—์„œ id ๊ฐ’์ด 2์ธ ํ–‰์„ ์ฐพ์•„ ํ•ด๋‹น ํ–‰์„ ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œํ•œ๋‹ค.
์œ„ ๋‚ด์šฉ์€ https://www.inflearn.com/course/lecture?courseSlug=%EB%85%B8%EB%93%9C-js-%EA%B5%90%EA%B3%BC%EC%84%9C&unitId=143595&tab=curriculum ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.