2020. 12. 29. 21:02ใ๐๐ปโ๏ธ Study/โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ( Database )
์ค๋์ ํ๊ต์์ ๋ฐฐ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ค์ต ๋ด์ฉ๋ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค!
Docker๋ ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํ ์ ๋์ปค๋ฅผ ํ์ฉํ Mysql ์ค์นํ๋ ๊ฐ๋จํ ๋์ปค ๋ช ๋ น์ด์ Mysql ๊ธฐ๋ณธ ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์๋ ค๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
๐๐ป ์ ๋ ธํธ๋ถ์ Mac OS์ฌ์, Mac ์ ์ด์ฉํ Docker ๊ธฐ๋ฐ์ MySQL ์ฌ์ฉ๋ฒ ์ ๋๋ค : )
๐ Docker์ MySQL ์ค์นํ๊ธฐ
DockerHub์ MySQL์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ค์น ์์ด ๋ฐ๋ก mysql์ ์ฌ์ฉํ ์ ์์ต๋๋ค!
๋ง์ฝ, MySQL ์ด๋ฏธ์ง๋ฅผ ์ค์นํ๋ ค๋ฉด?!
docker pull mysql:8.0.17
docker pull mysql ์์๋ ์ต์ ๋ฒ์ 'latest'๋ฅผ ๊ฐ์ ธ์ต๋๋ค!
โ๏ธ MySQL ์ปจํ ์ด๋ ์์ฑํ๊ธฐ
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD={password} --name={mysql} mysql5.7
mysql ํฌํธ๋ฒํธ๋ '3306'์ผ๋ก ์ฌ๋ฌ๊ฐ์ mysql ์ ๋ง๋ค์ ์๋ 3307:3306, 3308:3306 ... ์ด๋ฐ์์ผ๋ก ๋ง๋ค์ด์ฃผ๋ฉด ๋ฉ๋๋ค!
{password} ์๋ฆฌ์ ์ํ๋ password๋ฅผ , {mysql} ์๋ฆฌ์ ์ํ๋ mysql name ๋ช ์ ๋ฃ์ด์ฃผ์ธ์.
๋ง์ฝ, mysql5.6์ ์ค์นํ๋ ค๋ฉด ?! mysql5.7 ์ mysql5.6์ผ๋ก ์ํ๋ ๋ฒ์ ์ ๋ง๊ฒ ๋ฃ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค!
docker ps -a
์ ๋ช ๋ น์ด๋ฅผ ํตํด ์์ฑ๋ MySQL ์ ํ์ธํ์ค ์ ์์ต๋๋ค.
MySQL ์คํ์ ๊ผญ ํด๋น mysql์ STATUS๊ฐ Up ์ธ์ง ํ์ธํด์ฃผ์ ์ผ ํฉ๋๋ค !
โ๏ธDocker MySQL ์ปจํ ์ด๋ ์์ํ๊ธฐ (STATUS - Up ์ํค๋ ๋ฐฉ๋ฒ)
์์ ๊ฐ์ด ๋ง์ฝ MySQL ์คํ ์ ํด๋น ์ปจํ ์ด๋์ STATUS๊ฐ Exited ๋ผ๋ฉด ?!
docker start {์ปจํ
์ด๋ ์ด๋ฆ ๋๋ ์์ด๋}
docker start ๋ช ๋ น์ด๋ฅผ ํตํด ํด๋น ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ์ค ์ ์์ต๋๋ค.
โ๏ธDocker MySQL ์ปจํ ์ด๋ ์ ์ํ๊ธฐ
docker exec -it {mysql1} bash
์ด์ MySQL ์ปจํ ์ด๋๋ฅผ ์คํํด๋ณผ ์ฐจ๋ก ์ธ๋ฐ์. ์๊น ๋ง๋ค์ด์ฃผ์๋ mysql1์ ์คํํ๋ ค๋ฉด docker exec -it ๋ช ๋ น์ด๋ฅผ ํตํด
ํด๋น ์ปจํ ์ด๋์ ์ ์ํ์ค ์ ์์ต๋๋ค.
โ๏ธMySQL ์๋ฒ ์ ์ํ๊ธฐ
root@157fa190bbb8: mysql -u root -p
mysql -u root -p ๋ช ๋ น์ด๋ฅผ ํตํด ์์์ ์์ฑํ mysql5.7 ๋ฒ์ ์ MySQL ์๋ฒ์ ์ ์ ํ์ค ์ ์์ต๋๋ค.
๐ฅ์ด๋ password๋ ์ปจํ ์ด๋ ์์ฑ์์ ๋ง๋ค์๋ {password} ๋ฅผ ์ ๋ ฅํ์ ์ผ ํฉ๋๋ค!
๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์ >
๋น๋ฐ๋ฒํธ ์ ๋ ฅ ํ >
๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฅํ์๋ฉด ์ด์ ํด๋น MySQL ์๋ฒ ์ ์์ ์ฑ๊ณตํ๊ฑฐ์์.
์ด์ MySQL์ ๊ฐ๋จํ ์ฌ์ฉ๋ฒ์ ๋ํด ์ค๋ช ํด๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
๐ MySQL ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
๊ฐ๋จํ MySQL ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ์๋ ค๋๋ฆฌ๊ธฐ ์ ์ ์ ๋ ๋ฏธ๋ฆฌ https://launchpad.net/test-db ์ ์ํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ค์นํ์ฌ ์คํ๋ ์์๋ก ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
Launchpad(test-db) ๋ค์ด๋ก๋ ๋ฐ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ค์๋ฒ ํฌ์คํ ์ผ๋ก ์ฐพ์์ค๊ฒ ์ต๋๋ค!
์๋ ๋ช ๋ น์ด๋ค์ ๊ฐ๋จํ ์ค์ตํด๋ณด์ค ์ ์์ผ๋ ๋ถ๊ฐ์ ์ธ ์ค๋ช ์์ด ๋ช ๋ น์ด๋ง ์๊ฐํด๋๋ฆด๊ฒ์ : )
โ๏ธDatabase ๋ชฉ๋ก ์กฐํํ๊ธฐ
show databases;
โ๏ธDatabase ์ฌ์ฉํ๊ธฐ
use {database_name};
โ๏ธDatabase ์ table ๋ชฉ๋ก ์กฐํํ๊ธฐ
show tables;
โ๏ธtable์ describe ๋ณด๊ธฐ
desc {table_name};
desc {table_name}\G;
\G ์ต์ ์ ๋ค์ ๋ถ์ด๋ฉด ์์ธํ ๊ฒฐ๊ณผ๊ฐ์ ๋ณด์ค ์ ์์ด์.
๊ฐ๋ \G ์ต์ ์ ๋ฃ์ง ์์ ํ ์ด์ ๋ชจ๋ ๋ด์ฉ์ ๋ค ์ถ๋ ฅํด๋ฒ๋ฆฐ๋ค๋ฉด ์ฟผ๋ฆฌ๋ฌธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ธฐ ๋ถํธํ๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉ๋๋ ์ต์ ์ด์์.
โ๏ธtable์ ์ฟผ๋ฆฌ ํ์ธ(์กฐํ)ํ๊ธฐ
table์ create ์ฟผ๋ฆฌ๋ฅผ ํ์ธํ๋ ๊ฒฝ์ฐ, \G ์ต์ ์ ์ด์ฉํ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ํจ์ฌ ๋ณด๊ธฐ ํธํ๊ฒ ์ถ๋ ฅํ์ค ์ ์์ต๋๋ค.
show create table {table_name}\G;
โ๏ธtable column ์กฐํํ๊ธฐ
select ๋ฌธ์ ๋๋ฌด ์ ๋ช ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋ น์ด ์ค ํ๋์ฃ ! ํ ์ด๋ธ์ ๋ด์ฉ๋ค์ ์กฐํํ๊ณ ์ถ๋ค๋ฉด select๋ฌธ์ ์ด์ฉํ์๋ฉด ๋ฉ๋๋ค.
select * from {table_name};
\G ์ต์ ์ ๋ถ์ด๊ฒ ๋๋ฉด ์ด ํํ๋ก column ๋ด์ฉ์ ๋ณด์ค ์ ์์ต๋๋ค.
select * from {table_name}\G;
โ๏ธMySQL ์ข ๋ฃ
exit์ quit ๋ช ๋ น์ด ๋ชจ๋ MySQL์ ์ข ๋ฃํ์ค ์ ์์ต๋๋ค.
exit
quit
Docker MySQL ํด๋น ์ปจํ ์ด๋๋ฅผ ์์ ์ข ๋ฃํ๊ณ ์ถ๋ค๋ฉด? exit ๋ช ๋ น์ด๋ฅผ ํตํด ์ข ๋ฃํ์ค ์ ์์ต๋๋ค.
์ด๋ฒ ํฌ์คํ ์์ Docker ๊ธฐ๋ฐ์ MySQL ์ค์น ๋ฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ์์๋ณด์๋๋ฐ์.
์์ง SQL ๋ฌธ๋ค์ด ์ต์ํ์ง ์์ผ์๋ค๋ฉด ์๋ SQL๋ฌธ ์ค์ต ํ์ด์ง์ ๋ด์ฉ์ ๊ณต๋ถํ์๋ ๊ฑธ ์ถ์ฒํด ๋๋ ค์!
SQL Tutorial
SQL Tutorial SQL is a standard language for storing, manipulating and retrieving data in databases. Our SQL tutorial will teach you how to use SQL in: MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres, and other database systems. Start learn
www.w3schools.com
์ ๋ฆฌ๊ฐ ์ ๋์ด ์์ด SQL๋ฌธ ๊ณต๋ถํ์ค๋ ์ ์ฉํ์ค ๊ฑฐ ๊ฐ์์!
๋ค์ ํฌ์คํ ์์๋ ์์์ ๋ง์๋๋ฆฐ https://launchpad.net/test-db ์ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค!
'๐๐ปโโ๏ธ Study > โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ( Database )' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker/MySQL] JDBC - PreparedStatement ์ค์ต (2) | 2020.12.31 |
---|---|
[Docker/MySQL] JDBC - Statement ์ค์ต (0) | 2020.12.31 |
MySQL Launchpad(test-db) ๋ค์ด๋ก๋ ๋ฐ ์ค์น (0) | 2020.12.29 |