[Back-End] 2. MySQL ์—ฐ๊ฒฐ

Jiyeahhhยท2021๋…„ 8์›” 1์ผ

๐Ÿ’ก ๊ณต๋ชจ์ „ ๊ธฐํš์„œ ์ตœ์ข… ์ œ์ถœํ•จ! ๊ฐœ๋ฐœ ์ชฝ์€ ๊ธฐ์—…์—์„œ ๋‹ค ์“ธ์–ด๊ฐ€๋Š” ๊ฑฐ ๊ฐ™์•„์„œ ๊ธ‰ํ•˜๊ฒŒ ๊ธฐํš์œผ๋กœ ํ‹€์—ˆ์ง€๋งŒ.. ๊ฐœ๋ฐœ์€ ํ•ด์•ผํ•˜๋‹ˆ๊นŒ!





๐Ÿ™Žโ€โ™€๏ธ MySQL ๊ณ„์ • ์ƒ์„ฑ

1. root ๊ณ„์ •์œผ๋กœ ์ ‘์†

  • cmd์—์„œ ์‹คํ–‰
mysql -uroot -p
  • ์ž…๋ ฅ ํ›„ ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ

2. DB ์ƒ์„ฑ

  • create database DB๋ช…;
mysql> create database sorimadang;

3. ์‚ฌ์šฉ์ž ๊ณ„์ • ์ƒ์„ฑ

  • create user 'user๋ช…'@'localhost' identified by 'ํŒจ์Šค์›Œ๋“œ';
  • @'localhost' : ํ•ด๋‹น ์ปดํ“จํ„ฐ์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • @'%' : ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ์—์„œ๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅ
mysql> create user 'user'@'localhost' identified by 'admin';

4. DB์— ๊ณ„์ • ๊ถŒํ•œ ์ถ”๊ฐ€

  • 3๋ฒˆ์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๊ณ„์ •์„ 2๋ฒˆ์—์„œ ๋งŒ๋“ค์—ˆ๋˜ DB์— ๊ถŒํ•œ ์ถ”๊ฐ€
  • grant all privileges on DB๋ช….* to 'user๋ช…'@'localhost';
  • DB๋ช….* : ํ•ด๋‹น DB์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ๋ชจ๋“  ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ
  • *.* : ๋ชจ๋“  DB์™€ ํ…Œ์ด๋ธ”์— ๋ชจ๋“  ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ
  • ํŠน์ • ๊ถŒํ•œ๋งŒ ์ฃผ๋ ค๋ฉด all privileges ๋Œ€์‹  ํŠน์ • ๊ถŒํ•œ ์ ๊ธฐ (ex. alter)
mysql> grant all privileges on sorimadang.* to 'user'@'localhost';

5. ์ƒˆ๋กœ์šด ์„ค์ • ์ ์šฉ

mysql> flush privileges

6. ์ƒˆ๋กœ์šด ๊ณ„์ •์œผ๋กœ ์ ‘์†

  • cmd์—์„œ ์‹คํ–‰
  • mysql -h127.0.0.1 -u๊ณ„์ •๋ช… -p DB๋ช…
mysql -h127.0.0.1 -uuser -p sorimadang
  • ์ž…๋ ฅ ํ›„ ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ

๐Ÿ“ ํ…Œ์ด๋ธ” ์ •์˜

๐Ÿ“Œ user

  • ์ƒ์„ฑ
CREATE TABLE `sorimadang`.`user` (
  `user_id` VARCHAR(13) NOT NULL,
  `nickname` VARCHAR(13) DEFAULT NULL,
  `password` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`user_id`)
);
  • ์กฐํšŒ
select * from user;

๐Ÿ“Œ gameoxquiz

  • ์ƒ์„ฑ
create table gameoxquiz(
    stage_num int not null,
    quiz_num int not null,
    quiz varchar(50) not null,
    answer int not null,
    constraint gameoxquiz_pk primary key (stage_num, quiz_num)
);
  • ์‚ฝ์ž… (์ž„์‹œ)
insert into gameoxquiz values (1, 1, "๊ฐ€์•ผ๊ธˆ์€ 12์ค„์ด๋‹ค.", 1),
			      (1, 2, "๊ฐ€์•ผ๊ธˆ์€ 2์ค„์ด๋‹ค.", 0),
			      (1, 3, "๊ฐ€์•ผ๊ธˆ์€ 3์ค„์ด๋‹ค.", 0),
                	      (1, 4, "๊ฐ€์•ผ๊ธˆ์€ 4์ค„์ด๋‹ค.", 0),
                              (1, 5, "๊ฐ€์•ผ๊ธˆ์€ 5์ค„์ด๋‹ค.", 0),
                              (2, 1, "๊ฐ€์•ผ๊ธˆ์€ 6์ค„์ด๋‹ค.", 0),
                              (2, 2, "๊ฐ€์•ผ๊ธˆ์€ 7์ค„์ด๋‹ค.", 0),
			      (2, 3, "๊ฐ€์•ผ๊ธˆ์€ 8์ค„์ด๋‹ค.", 0),
                              (2, 4, "๊ฐ€์•ผ๊ธˆ์€ 9์ค„์ด๋‹ค.", 0),
                              (2, 5, "๊ฐ€์•ผ๊ธˆ์€ 10์ค„์ด๋‹ค.", 0),
                              (3, 1, "๊ฐ€์•ผ๊ธˆ์€ 11์ค„์ด๋‹ค.", 0),
                              (3, 2, "๊ฐ€์•ผ๊ธˆ์€ 13์ค„์ด๋‹ค.", 0),
			  `   (3, 3, "๊ฐ€์•ผ๊ธˆ์€ 14์ค„์ด๋‹ค.", 0),
                              (3, 4, "๊ฐ€์•ผ๊ธˆ์€ 15์ค„์ด๋‹ค.", 0),
                              (3, 5, "๊ฐ€์•ผ๊ธˆ์€ 16์ค„์ด๋‹ค.", 0);
  • ์กฐํšŒ
select * from gameoxquiz;

๐Ÿ“Œ wrongquiz

  • ์ƒ์„ฑ
create table wrongquiz(
    serial_id int not null,
    user_id varchar(13) not null,
    stage_num int not null,
    quiz_num int not null,
    primary key (serial_id),
    constraint references_user foreign key (user_id) references user(user_id) on delete cascade,
    constraint references_gameoxquiz foreign key (stage_num, quiz_num) references gameoxquiz(stage_num, quiz_num) on update cascade on delete cascade
);

๐Ÿ’ก ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด - ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ

์™ธ๋ž˜ํ‚ค ๊ฐ’์€ Null์ด๊ฑฐ๋‚˜ ์ฐธ์กฐ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค ๊ฐ’๊ณผ ๋™์ผํ•ด์•ผ ํ•จ.
์ฆ‰, ๋ฆด๋ ˆ์ด์…˜์€ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋Š” ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค๋Š” ๊ทœ์ •

  1. on delete cascade : ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—์„œ ํŠœํ”Œ์ด ์‚ญ์ œ๋˜๋ฉด, ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ์ž์‹ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ
  2. on delete set null : ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—์„œ ํŠœํ”Œ์ด ์‚ญ์ œ๋˜๋ฉด, ๊ด€๋ จ๋œ ๋ชจ๋“  ํŠœํ”Œ์˜ ํ•ด๋‹น ํ‚ค ๊ฐ’์„ NULL๋กœ ๋ณ€๊ฒฝ
  3. on update cascade : ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—์„œ ํ‚ค ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด, ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ์ž์‹ ํ…Œ์ด๋ธ”์˜ ๊ฐ’๋„ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

  • ์กฐํšŒ
select * from wrongquiz;


๐Ÿค” ํ•ด์•ผํ•  ๊ฒƒ

  1. SQL ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•œ branch ํ™•์ธํ•˜๊ธฐ
  2. ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์†Œ์…œ ๋กœ๊ทธ์ธ์œผ๋กœ ํ•˜๊ธฐ๋กœ ํ•จ -> ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ํ™œ์šฉ
  3. OAuth๋ž‘ Spring Security ๊ณต๋ถ€ํ•˜๊ธฐ
  4. ๋‚˜๋จธ์ง€ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€
profile
๋žŒ์ฐจ๋žŒ์ฐจ

0๊ฐœ์˜ ๋Œ“๊ธ€