Skip to content

Instantly share code, notes, and snippets.

@jinny-l
Last active February 23, 2023 02:16
Show Gist options
  • Save jinny-l/aa8828e2096b8dabf4bbf5635824cb8b to your computer and use it in GitHub Desktop.
Save jinny-l/aa8828e2096b8dabf4bbf5635824cb8b to your computer and use it in GitHub Desktop.
Jinny - CS14

๐Ÿ—‚ CS14 - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์น˜

๐Ÿ” ๋ฏธ์…˜ ์„ค๋ช…

  1. docker ์ปจํ…Œ์ด๋„ˆ๋กœ MySQL์„ ์„ค์น˜ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์„ ์™„๋ฃŒํ•œ๋‹ค.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•ด์„œ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜๊ณ  SQL ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ DB, Table, Record๋ฅผ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•œ๋‹ค.
    • DB ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  3. (option) ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ํ•  ๋•Œ ๋ช‡ %๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ‘œ์‹œํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”(Progress Bar)๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

ํ•™์Šต ํ‚ค์›Œ๋“œ

#๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค #MySQL #SQL #๋„์ปค #DDL #ํ…Œ์ด๋ธ”

๊ณต๋ถ€ ์˜ˆ์ •์ธ ํ‚ค์›Œ๋“œ

#DDL(Data Definition Language) #DQL(Data Query Language) #MySQL


โœ… ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ

DB ์„ค์น˜

  • docker ์„ค์น˜
  • docker ๊ธฐ๋ฐ˜์œผ๋กœ MySQL ์„ค์น˜
  • docker ๋ช…๋ น์œผ๋กœ MySQL ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
  • docker ๋ช…๋ น์œผ๋กœ MySQL ์ปจํ…Œ์ด๋„ˆ์— bash๋กœ ์ ‘์†
  • ์‰˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐ Locale ์„ค์ •
  • MySQL config๋ฅผ latin1์—์„œ utf8๋กœ ๋ณ€๊ฒฝ

DB ์š”๊ตฌ์‚ฌํ•ญ

  • DB ์ด๋ฆ„์„ ์ •ํ•˜๊ณ  ์ƒ์„ฑ
  • DB์— ์—ฐ๊ฒฐํ•  User๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ ‘์† ๊ถŒํ•œ์„ ์„ค์ •

๋ฐ์ดํ„ฐ ์š”๊ตฌ์‚ฌํ•ญ

  • ๋‹ค์Œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” user_log ํ…Œ์ด๋ธ” ์ƒ์„ฑ
nickname varchar(64),
money dec(10, 2),
last_visit datetime
  • 100๋งŒ ๊ฑด์˜ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ํ›„ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ
  • ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ ๊ทœ์น™์œผ๋กœ ์ƒ์„ฑ
    • ์‚ฌ์šฉ์ž nickname ์€ ์˜์–ด ๋‹จ์–ด 100๊ฐœ + ๋žœ๋ค ๋ฌธ์ž์—ด 3์ž๋ฆฌ + ๋žœ๋ค ์ˆซ์ž 4์ž๋ฆฌ๋กœ ์ƒ์„ฑ
    • money ๋Š” 1๋ถ€ํ„ฐ 100,000 ์‚ฌ์ด ๊ฐ’์œผ๋กœ ๋žœ๋ค ์ƒ์„ฑ
    • last_visit ์€ ์ตœ๊ทผ ํ•œ ๋‹ฌ ์‚ฌ์ด๋กœ ๋žœ๋ค ์‹œ๊ฐ์œผ๋กœ ์ƒ์„ฑ

ํ™•์ธ ํ•„์š”

  • DB์— Locale ์„ค์ •์ด ์ œ๋Œ€๋กœ ์•ˆ๋œ ๋“ฏ ํ•˜๋‹ค.

๐Ÿ“ธ ์Šคํฌ๋ฆฐ์ƒท

image




โš™๏ธ Mac M1 - Docker๋กœ MySQL ์„ค์น˜ํ•˜๊ธฐ(MySQL 5.7)

โœ”๏ธ 1. Docker ์„ค์น˜

์„ค์น˜ ํ›„ ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฒ„์ „์ด ์ถœ๋ ฅ๋˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋œ ๊ฒƒ์ด๋‹ค.

$ docker -v
Docker version 20.10.22, build 3a2c30b

Homebrew๋ฅผ ํ†ตํ•ด์„œ๋„ ์„ค์น˜ ๊ฐ€๋Šฅํ•˜๋‚˜ ์ถ”๊ฐ€๋กœ ์„ค์ •ํ•ด์•ผ ํ•  ๊ฒƒ๋“ค์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.


โœ”๏ธ 2. MySQL Docker ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ MySQL Docker ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.
  • ๋ฒ„์ „์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

MySQL ๋ฒ„์ „์€ docker hub ํ™ˆํŽ˜์ด์ง€์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

$ docker pull mysql:5.7

M1์ผ ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋œฐ ์ˆ˜ ์žˆ๋Š”๋ฐ
์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฒ„์ „ ์ค‘ ์–ด๋–ค ํ”Œ๋žซํผ์˜ ๋ฒ„์ „์„ ๊ฐ€์ ธ์˜ฌ์ง€ ๋ชฐ๋ผ์„œ ๋œจ๋Š” ์—๋Ÿฌ๋กœ ์ถ”์ธก๋œ๋‹ค.

5.7: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries

์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ๋ช…๋ น์–ด์— platform ์ธ์ž ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

$ docker pull --platform linux/amd64 mysql:5.7
5.7: Pulling from library/mysql
e048d0a38742: Pull complete
c7847c8a41cb: Pull complete
351a550f260d: Pull complete
8ce196d9d34f: Pull complete
17febb6f2030: Pull complete
d4e426841fb4: Pull complete
fda41038b9f8: Pull complete
f47aac56b41b: Pull complete
a4a90c369737: Pull complete
97091252395b: Pull complete
84fac29d61e9: Pull complete
Digest: sha256:8cf035b14977b26f4a47d98e85949a7dd35e641f88fc24aa4b466b36beecf9d6
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

โœ”๏ธ 3. ๋‹ค์šด๋กœ๋“œํ•œ ์ด๋ฏธ์ง€ ํ™•์ธ

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๋‹ค์šด๋กœ๋“œํ•œ Docker ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.
$ docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
mysql               5.7       be16cf2d832a   2 weeks ago      455MB

โœ”๏ธ 4. MySQL Docker ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„: --name ๋’ค์— ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ๋‹ค.
  • ๋น„๋ฐ€๋ฒˆํ˜ธ: <๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ> ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋Š”๋ฐ < ์™€ > ๋Š” ์ž…๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • MySQL์˜ ํŠน์ • ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฒ„์ „์„ ์ž…๋ ฅํ•ด์ค€๋‹ค.
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ> -d -p 3306:3306 mysql:latest 

๐Ÿ’ก ๋ช…๋ น์–ด ์ฐธ๊ณ :

  • --name: ์ƒ์„ฑํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„
  • -e: ํ™˜๊ฒฝ๋ณ€์ˆ˜ (PASSWORD) ์„ค์ •
  • -d: Dispatch mode (๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰)
  • -p: ํฌํŠธ (์™ธ๋ถ€ํฌํŠธ : Docker ๋‚ด๋ถ€ํฌํŠธ)
  • mysql: sql ๋ฒ„์ „
  • MySQL ์ตœ์‹  ๋ฒ„์ „์ด ์•„๋‹Œ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ์–ธ์–ด๊ฐ€ latin1๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ํ•„์š” ์‹œ, ๋‹ค์Œ ์˜ต์…˜์„ ์œ„ ๋ช…๋ น์–ด ๋’ค์— ๋ถ™์—ฌ์„œ ์ž…๋ ฅํ•œ๋‹ค.
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

๐Ÿ’ก ์ฐธ๊ณ : ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ํ›„ ์žฌ์ ‘์† ์‹œ, ์„ค์ •์ด ๋งค๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.


โœ”๏ธ 5. ์ƒ์„ฑ๋œ MySQL Docker ์ปจํ…Œ์ด๋„ˆ ํ™•์ธ

$ docker ps
CONTAINER ID IMAGE      COMMAND                  CREATED         STATUS         PORTS                               NAMES
f95ad85c7e02 mysql:5.7  "docker-entrypoint.sโ€ฆ"   27 seconds ago  Up 26 seconds  0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-container

๐Ÿ’ก ๋ช…๋ น์–ด ์ฐธ๊ณ :

  • ps: ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ
  • ps -a: ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ

โœ”๏ธ 6. ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘/์ข…๋ฃŒ/์žฌ์‹œ์ž‘

  • ๋ช…๋ น์–ด ๋’ค์— ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์ด๋‚˜ ID๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘

$ docker start mysql-container // "mysql-container" ๋Œ€์‹  ID์ธ "f95ad85c7e02"๋กœ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
$ docker stop mysql-container
  • ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘
$ docker restart mysql-container

โœ”๏ธ 7. MySQL ์ปจํ…Œ์ด๋„ˆ bash ์‰˜ ์ ‘์†

  • ๋‹ค์Œ ๋ช…๋ น์–ด์—์„œ ์ ‘์†ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์ž…๋ ฅ ํ›„ MySQL์— ๋กœ๊ทธ์ธํ•œ๋‹ค.
  • ์ดํ›„ root@{containerName}#์œผ๋กœ ์ง„์ž…ํ•˜๊ฒŒ ๋œ๋‹ค.
  • docker๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์œผ๋ฉด exit๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
docker exec -it mysql-container bash

๐Ÿ’ก ๋ช…๋ น์–ด ์ฐธ๊ณ :

  • -it: Interactive Terminal Mode

โœ”๏ธ 8. Locale ์„ค์ •

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ˜„์žฌ ํ™˜๊ฒฝ์˜ locale ์„ค์ • ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
locale -a
  • ๋””ํดํŠธ ํ™˜๊ฒฝ์—๋Š” ํ•œ๊ตญ์–ด ์„ค์ •์ด ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ตญ์–ด ์‚ฌ์šฉ ์˜ˆ์ •์ด๋ผ๋ฉด 7๋ฒˆ ๊ณผ์ •์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

๐Ÿ’ก ์ฐธ๊ณ : bash์— ์ง„์ž…ํ•œ ์ƒํƒœ๋ผ๋ฉด exit๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ์ดํ›„ locale ๋ช…๋ น์–ด๋กœ ๋‹ค์‹œ ํ™•์ธํ•ด๋ณด๋ฉด UTF-8์ด ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
$ docker exec -it -e LC_ALL=C.UTF-8 mysql-container bash

โœ”๏ธ 9. MySQL ์„œ๋ฒ„ ์ ‘์†

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ์ž๋กœ ์„œ๋ฒ„์— ์ ‘์†ํ•œ๋‹ค.
  • ์ ‘์†ํ•˜๋ฉด mysql>๋กœ ์ง„์ž…ํ•˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ’ก ์ฐธ๊ณ : ์šฐ๋ถ„ํˆฌ์—์„œ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด root@{containerName}# ํ˜•ํƒœ๋กœ ๋œจ๊ณ , docker์—์„œ ์ง„์ž…ํ•˜๋ฉด bash-์ˆซ์ž# ํ˜•ํƒœ๋กœ ๋œจ๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ธก๋œ๋‹ค.

bash-4.2# mysql -u root -p // # ๋’ค๋ถ€ํ„ฐ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
Enter password: // ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.41 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> // mysql๋กœ ์ง„์ž…

โœ”๏ธ 10. MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ์ž ์ƒ์„ฑ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ

  • ์˜ˆ์‹œ: jinny๋ผ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

โ€ผ๏ธ ์ฃผ์˜: SQL ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋งจ ๋งˆ์ง€๋ง‰์— ;๋ฅผ ๊ผญ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ƒ์„ฑ

๐Ÿ’ก : ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์—์„œ MySQL์— ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•  ์‹œ, localhost ๋Œ€์‹  %๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

mysql> create user 'jinny'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.04 sec)
  • ์ƒ์„ฑํ•œ ์œ ์ €์—๊ฒŒ ๋ชจ๋“  DB ๋ฐ ํ…Œ์ด๋ธ” ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ
mysql> grant all privileges on *.* to 'jinny'@'localhost';
Query OK, 0 rows affected, 1 warning (0.01 sec)
  • ์„ค์ •ํ•œ ๊ถŒํ•œ ์ ์šฉ
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

โœ”๏ธ 11. MySQL ์ข…๋ฃŒ

mysql> quit
Bye

CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; // UTF ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๊ธ€ ์•ˆ๊นจ์ง


๐Ÿ’พ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ

1. MySQL ์ ‘์†

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ MySQL์— ์ ‘์†ํ•œ๋‹ค.
mysql -u root -p
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธด ๋ฌธ์ž์ด ๋‚˜์˜ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ ‘์†๋œ ๊ฒƒ์ด๋‹ค.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.7.41 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input state

2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์ŠคํŠธ ํ™•์ธ

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•œ๋‹ค.
  • 4๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ž๋™ ์ƒ์„ฑ๋œ ๊ฒƒ์ด๋‹ค.
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•œ๋‹ค.
  • ์˜ˆ์‹œ: "UserLog" ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ
mysql> CREATE DATABASE UserLog;
Query OK, 1 row affected (0.02 sec)
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด ๋ณด๋ฉด ์ƒˆ๋กœ ๋งŒ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| UserLog            |  // ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 
| mysql              |
| performance_schema |
| sys                |
+--------------------+

table & column ๋งŒ๋“ค๊ธฐ

  • ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB๋ฅผ ์„ ํƒํ•œ ํ›„ table์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • DB ์„ ํƒ

mysql> use UserLog;
Database changed
  • ํ…Œ์ด๋ธ” ํ™•์ธ
mysql> SHOW tables;
Empty set (0.00 sec) // ํ…Œ์ด๋ธ”์„ ๋ฐฉ๊ธˆ ๋งŒ๋“ค์–ด์„œ ๋‹น์—ฐํžˆ ๋น„์–ด์žˆ๋‹ค.
  • ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
mysql> CREATE table user_log(
    -> ID INT NOT NULL AUTO_INCREMENT,
    -> nickname VARCHAR(64),
    -> money DEC(10, 2),
    -> last_visit DATETIME,
    -> PRIMARY KEY(ID)
    -> );
Query OK, 0 rows affected (0.07 sec)
  • ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ” ํ™•์ธ
mysql> SHOW tables;
+-------------------+
| Tables_in_UserLog |
+-------------------+
| user_log          |
+-------------------+
1 row in set (0.00 sec)
  • ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ํ™•์ธ
mysql> desc user_log;
+------------+---------------+------+-----+---------+----------------+
| Field      | Type          | Null | Key | Default | Extra          |
+------------+---------------+------+-----+---------+----------------+
| ID         | int(11)       | NO   | PRI | NULL    | auto_increment |
| nickname   | varchar(64)   | YES  |     | NULL    |                |
| money      | decimal(10,2) | YES  |     | NULL    |                |
| last_visit | datetime      | YES  |     | NULL    |                |
+------------+---------------+------+-----+---------+----------------+
4 rows in set (0.05 sec)

๐Ÿ–ฅ MySQL ์—ฐ๋™()

์—ฐ๋™์„ ์ƒ๊ฐํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ??
ํ„ฐ๋ฏธ๋„๋กœ 100๋งŒ๊ฐœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆฌ๋Š”๊ฒŒ ๋งž๋‚˜? ํ•˜๋Š” ์ƒ๊ฐ์— ๊ณ ๋ฏผํ•˜๊ฒŒ ๋จ

์ฐพ์•„๋ณด๋‹ˆ๊นŒ ๋ช‡๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜์Œ

  1. MySQL GUI ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
  2. ์ธํ…”๋ฆฌ์ œ์ด๋ž‘ ์—ฐ๋™ํ•˜๋Š” ๊ฒƒ
  3. ๋˜ ๋จธ ์žˆ์—ˆ๋Š”๋ฐ ๊ธฐ์–ต์ด ์•ˆ๋‚จ

DBA๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฉด 2๋ฒˆ์„ ๋” ์ž์ฃผ ๋ณด๊ฒŒ๋  ๊ฒƒ ๊ฐ™์•„์„œ 2๋ฒˆ์„ ์„ ํƒํ•ด์„œ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ•จ.
์—ฐ๋™ ์–ด์ฐŒ์ €์ฐŒ ์‚ฝ์งˆํ•ด์„œ ์„ฑ๊ณตํ•จ... (์ง€๊ธˆ ๊ณผ์ • ์„ค๋ช…ํ•˜๋ผ๊ณ  ํ•˜๋ฉด 5๋ถ„ ์ปท)

์ด ์‚ฝ์งˆ๋„ ๊ณง ์ •๋ฆฌํ•ด๋‘˜ ์˜ˆ์ •.

๊ทผ๋ฐ ์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋ณด๋‹ค 100๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ์ง€๊ฐ€ ๋ฌธ์ œ์˜€์Œ.
DB ์—ฐ๋™์„ ํ–ˆ๋Š”๋ฐ 100๋งŒ๊ฐœ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ๊ฒƒ์ธ์ง€,, ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๋‹ค ๋ณด๋‹ˆ ๋˜ ๋ฐฉ๋ฒ•์ด 2๊ฐ€์ง€ ์ •๋„ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜์Œ.

  1. ํ”„๋กœ์‹œ์ €๋‚˜ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ์ƒ์„ฑ -> ์ง€๊ธˆ ๋‚ด ์ˆ˜์ค€์—์„œ ๋ถˆ๊ฐ€๋Šฅ
  2. ์ž๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ CSV ํŒŒ์ผ๋กœ ์ฟผ๋ฆฌ -> ๊ตฌ๊ธ€๋ง ํ•˜๋Š”๋ฐ ์ž๋ฐ”๋กœ CSV ํŒŒ์ผ ์ฝ๊ธฐ ์ด๋Ÿฐ ๊ฒƒ ๋ฐ–์— ์•ˆ๋‚˜์™”์Œ,, ๊ตฌ๊ธ€๋ง ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•˜๋„น

์•”ํŠผ 2๋ฒˆ ๋ฐฉ๋ฒ•์„ ์–ด์ฐŒ์ €์ฐŒ ๊ตฌ๊ธ€๋ง ํ–ˆ์Œ. (์ง€๊ธˆ ์‹œ๋„ ์ค‘์ž„)

๊ทผ๋ฐ ์ง€๊ธˆ๊นŒ์ง€ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์‚ฌ์‹ค 100๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ฟผ๋ฆฌ๋กœ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ,
์˜ค๋Š˜ ๋งˆ์Šคํ„ฐ ์ˆ˜์—…์„ ๋“ค์–ด๋ณด๋‹ˆ๊นŒ ํ•œ๊บผ๋ฒˆ์— ๋‚ ๋ฆฌ๋ฉด ์•ˆ๋  ๊ฒƒ ๊ฐ™๊ณ ,
์นผ๋Ÿผ ๋ณ„๋กœ ํ•˜๋‚˜์”ฉ insert ํ•˜๋Š”๊ฒŒ ์ข‹์€ ๋ฐฉ๋ฒ•์ธ ๋“ฏ?

์ด์œ ๋Š” ์•„์ง ๋ชฐ?๋ฃจ
๊ณต๋ถ€ํ•ด์•ผ ๋จ


@ninaaano
Copy link

ํผ๊ฐ€์š”~โ™ฅ๏ธ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment