Bibi's DevLog ๐ค๐
TIL - [20.09.24] Database, MySQL ์๊ฐ ๋ฐ ๋ด์ฉ์ ๋ฆฌ ๋ณธ๋ฌธ
์ถ์ฒ๋ฐ์ ์ธํ๋ฐ ์ํ์ฝ๋ฉ DATABASE 1&2 - MySQL ๊ฐ์๋ฅผ ํ๋ฃจ๋ง์ ๋ค์๋ค!
MySQL๊ฐ์๋ฅผ ๋ฃ๋ ๋ชฉ์ ์ Juni์์ ํํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ธฐ ์ํด.
๋๋ ์คํ๋ฅดํ์์ mongoDB์ฌ์ฉ๋ฒ๋ง ๋ฐฐ์ ์ง๋ง, MySQL์ด ๋ ๋์ค์ ์ด๊ณ ๋ฌด๋ฃ๋ผ๊ณ ํด์ ์ด๋ฒ ๊ธฐํ์ ๊ด๊ณํDB์ฌ์ฉ๋ฒ์ ์ตํ ๋ณด๊ธฐ๋ก ํ๋ค.
์๋๋ ์ค๋ ๊ฐ์์์ ๋ฐฐ์ด ๋ด์ฉ์ ์์ฝํ ๊ฒ!
์ค๊ฐ์ ๋ ธ์ ์ ์ ๋ฆฌํ ๊ฐ์๋ด์ฉ์ ๋ณต๋ถํด ์๋ค๐
๋๋ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๋ฉด์ ๋ค๋ฅธ ์ด๋ณด ๊ฐ๋ฐ์๋ถ๋ค์ ๊ตฌ๊ธ๋ง์ ๋์์ด ๋์ผ๋ฉด(?) ํ๋๋ฐ
๊ฐ์๋ด์ฉ์ ์ ๋ฆฌํด์ ๋ธ๋ก๊ทธ์ ์ฌ๋ ค๋ ๋๋๊ณ ๋ฌธ์ํด ๋ณด๋ ๊ด์ฐฎ๋ค๊ณ ํ๋ค!
๊ทธ๋์ ์์ผ๋ก๋ ๊ทธ๋ฅ ํ๊ธฐ๋ฅผ ๋ธ๋ก๊ทธ์ ํ๊ณ , ๋ฐ๋ก ์
๋ก๋ํด์ผ๊ฒ ๋ค!
๋ฐ์ดํฐ๋ฒ ์ด์ค (Database=DB)๋ ?
- ์ ๋ณด๊ธฐ์ ์ ์ฌ์ฅ์ด๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ, ์ถ๋ ฅ์ ๋ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ๋ฑ์ฅ.
- ํต์ฌ๊ธฐ๋ฅ์ ๋ฐ์ดํฐ ์ ๋ ฅ(Input = ์์ฑCreate, ์กฐํUpdate, ์ญ์ Delete) ๊ณผ ๋ฐ์ดํฐ ์ถ๋ ฅ(Output = ์กฐํRead) ์ฆ CRUD์ด๋ค.
- ํ์ผ๊ณผ ๋ค๋ฅธ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ฅผ ํตํ ๋ฐ์ดํฐCRUD๊ฐ ๊ฐ๋ฅํด, ์๋ํ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ ๊ธฐ์ค?
- ํ์ฌ์์ / ๋๋ฃ๊ฐ ์ด๋ฏธ ์ ํํ ๋ฐ์ดํฐ๋ฒ ์ด์ค → ๊ทธ๊ฒ์ ์ฌ์ฉํด์ผ.
- '๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ญํน 2020' ๋ฑ์ผ๋ก ๊ตฌ๊ธ๋งํด ๋ณด๋ฉด ์ข๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ข ๋ฅ, SQL๊ณผ NoSQL
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค = Relational Database, RDBMS(Relational DataBase Management System)
- ๋ฐ์ดํฐ๋ฅผ ํ/์ด์ด ์๋ ํ ํ์์ผ๋ก ์ ๋ฆฌํด ์ ์ฅ.
- ์ ํํ๋์ด ์์ด ๋ฐ์ดํฐ ์ผ๊ด์ฑ, ๋ฐ์ดํฐ ๋ถ์์ ์ ๋ฆฌ.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์์ , ์ถ๊ฐ์ ๋ถ๋ฆฌ.
- MySQL, Oracle, SQL Server, PostgreSQL, DB2, Access ๋ฑ์ด ์๋ค.
- SQL: ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํน์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค.(์ถ์ฒ ์ํค๋ฐฑ๊ณผ)
- ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค = NoSQL
- ๋ฐ์ดํฐ๋ฅผ ๋์ ๋๋ฆฌ ํํ(ํคkey : ๊ฐvalue) ํํ๋ก ์ ์ฅ.
- ์์ ๋ฃ์ด ํํ์ ๋ฐ์ดํฐ ์ ์ฌ์ ์ ๋ฆฌ
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์์ด ๋ถ๋ฆฌ.
MySQL ์ค์น
MySQL Community Edition ์ผ๋ก ๊ฒ์ ํ ๋งํฌ ๋ค์ด๊ฐ ๋ค์ด๋ก๋ - MySQL Community Server ๋ค์ด๋ก๋ ํ ์ค์น.
[Bitnami WAMP](MySQL์ค์น๋ฅผ ์ฝ๊ฒ ํด ์ฃผ๋ ํ๋ก๊ทธ๋จ)
https://bitnami.com/download/files/stacks/wampstack/7.4.10-0/bitnami-wampstack-7.4.10-0-windows-x64-installer.exe?with_popup_skip_signin=1
์์ ๋ค์ด๋ก๋.
์ค์น ์ค root, password, re-enter
: mysql์ ๋ค์ค์ฌ์ฉ์DB์(์ฌ๋ฌ ์ฌ๋์ด ์ ์ํ ์ ์๋ DB). ์ฌ๋ฌ ์ฌ์ฉ์ ์ค์์๋ ๊ธฐ๋ณธ์ด ๋๋ ์ฌ์ฉ์=root(๊ด๋ฆฌ์) ๊ฐ ์ฌ์ฉํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๋ ๊ณผ์ .
๊ฐ ํ๊ฒฝ๋ณ MySQL ์ค์น
์๋์ฐ ๊ธฐ์ค )
์ ์์๋๋ก ์ค์น ํ
BItnami WAMP Stack Manager ๋ผ๋ ํ๋ก๊ทธ๋จ ๊ฒ์ํด์ ์คํ. (์์น๋ C๋๋ผ์ด๋ธ - Bitnami - wampstack - 'manager-windows')
Manage Servers ํญ - MySQL Database ์ด๋ก๋ถ์ธ์ง ํ์ธ. ๋ง์ฝ ์ด๋ก๋ถ์ด ์๋๋ผ๋ฉด ์ ํ ํ ์ค๋ฅธ์ชฝ start ํด๋ฆญ.
์ค์น ํ MySQL ์คํ๋ฐฉ๋ฒ
์๋์ฐํค+R → cmd ์ ๋ ฅ → cd C:\Bitnami\wampstack-7.4.10-0\mysql\bin → dir → mysql -uroot -p → ์ค์น์ ์ค์ ํ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ .'
Welcome to the MySQL monitor ๋ฌธ๊ตฌ๊ฐ ๋จ๊ณ ๋งจ ์๋์ mysql> ๊ฐ ๋์ค๋ฉด ์ ์ค์น๋ ๊ฒ์!
(wampstack ~ ์ ์ฌ์ฉ ๋ฒ์ ์ ๋ฐ๋ผ ์ซ์ ๋ค๋ฅด๊ฒ ์ ๋ ฅ) ๋ฐฑ์ฌ๋์ ์ ๋ ฅ์ด ์๋๋ฉด ๋์ ์ํฐํค ์์์๋ ๋ฒํผ(๏ฟฆ) ๋๋ฅด๋ฉด ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ค. (= cd C:๏ฟฆBitnami๏ฟฆwampstack-7.4.10-0๏ฟฆmysql๏ฟฆbin )
MySQL ์ ๊ตฌ์กฐ
MySQL์ ๊ตฌ์ฑ์์๋ ์ธ ๊ฐ์ง๊ฐ ์๋ค. : ํ, ๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง), ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ.
-
MySQL๊ณผ ๊ฐ์ ๊ด๊ณํDB๋ ๋ฐ์ดํฐ๋ฅผ '**ํ table'**๋ก ์ ์ฅํ๋ค.
-
ํ๊ฐ ์ฌ๋ฌ ๊ฐ๊ฐ ๋๋ฉด ํ๋ฅผ ์ ๋ฆฌํ ํ์๊ฐ ์๊ธด๋ค. = ํ์ผ์ ํด๋๋ก ๋ฌถ๋ ๊ฒ์ฒ๋ผ.
์ด๋ ๊ฒ ์๋ก ์ฐ๊ด๋ ๋ฐ์ดํฐ(ํ)๋ฅผ ๊ทธ๋ฃนํํ ๊ฒ์ '**๋ฐ์ดํฐ๋ฒ ์ด์ค database'**๋ผ๊ณ ํ๋ค.
('๋ฐ์ดํฐ๋ฒ ์ด์ค'๋ผ๋ ๊ฐ๋ ๊ณผ ๋ฌ๋ฆฌ, ๊ด๊ณํDB์์ ํ๋ฅผ ๋ฌถ๋ ๋จ์์. ์ด๋ฆ์ด ๊ฐ์ ๋ฟ)
MySQL์์๋ ์ด๋ฐ ํผ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด '๋ฐ์ดํฐ๋ฒ ์ด์ค' ๋์ '์คํค๋ง schema' ๋ผ๊ณ ๋ ํ๋ค. -
๋ง์์ง ์คํค๋ง๋ค์ ์ ์ฅํ๋ ๋จ์๋ฅผ '๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ database server' ๋ผ๊ณ ํ๋ค.
(์ฐ๋ฆฌ๊ฐ MySQL ํ๋ก๊ทธ๋จ์ ์ค์นํ ๊ฒ = ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ๋ฅผ ์ค์นํ ๊ฒ์ด๋ค.)
MySQL ์๋ฒ ์ ์
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํจ์ฉ์ด ์์ผ๋ฉฐ, ๊ทธ ์ค ํ๋๊ฐ '๋ณด์'์ด๋ค.
DB๋ ํ์ผ๊ณผ ๋ฌ๋ฆฌ ์์ฒด์ ๋ณด์์ฒด๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ข ๋ ์์ ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ ์ ์๋ค.
๊ถํ ๊ธฐ๋ฅ์ด ์์ด ์ด๋ค ์ฌ์ฉ์์๊ฒ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค&ํ์ ๋ํ CRUD๊ถํ์ ๋ถ์ฌํ๊ณ , ์ด๋ค ์ฌ์ฉ์์๊ฒ๋ ํน์ ํ์ ๋ํ ์์ ๊ถํ๋ง ๋ถ์ฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
-u : user(์ฌ์ฉ์)์ ์ฝ์์ด๋ค.
-uroot : root์ฌ์ฉ์ = ๊ด๋ฆฌ์๋ก ์ ์ํ๊ฒ ๋ค. โป ๊ด๋ฆฌ์๋ ๋ชจ๋ ๊ถํ์ด ์ด๋ ค์์. ๋ฐ๋ผ์ ํญ์ root๋ก ์ ์ํด DB๋ฅผ ๋ค๋ฃจ๊ธฐ๋ณด๋จ ํ์์๋ ๋ณ๋์ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์ด์ ๋ค๋ฃจ๊ณ , ์ค์ํ ๋๋ง root๋ก ์ ์ํ๋ ๊ฒ์ด ์ข๋ค.
-p : passwordํจ์ค์๋์ ์ฝ์์ด๋ค. ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ๋๋ฅด๋ฉด Enter password: ์ ํจ๊ป ๋น๋ฐ๋ฒํธ ์ ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
โป ๋ง์ฝ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ด๋ฒ๋ ธ๋ค๋ฉด MySQL password forgot ๋ฑ์ผ๋ก ๊ตฌ๊ธ๋งํด ์กฐ์นํ๋ฉด ๋๋ค.
์ด๋ ๊ฒ -uroot -p ๋ก ์ ์ํ๊ณ ๋๋ฉด ๋น๋ก์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ๋ด์ ๋์ ๊ฒ. ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง) ๋ฅผ ๋ค๋ฃฐ ์ ์๋ค!
MySQL ์คํค๋ง์ ์ฌ์ฉ
- mySQL์ ์ ์ํ๊ธฐ ๋๋ฌธ์ ์ด์ ์คํค๋ง๋ฅผ ๋ง๋ค๊ณ ํ๋ฅผ ๋ง๋ค ์ ์๋ค.
(mySQL๋ช ๋ น์ด)
โป mySQL์์ ์กฐ์์ด(๋ช
๋ น์ด)๋ ๋๋ฌธ์๋ก / ๋ฐ์ดํฐ๋ฒ ์ด์ค,ํ, ์นผ๋ผ์๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋, ๊ณต๋ฐฑ ๋์ _๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง) ๋ง๋ค๊ธฐ : CREATE DATABASE ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ;
โป ; : ๋ช ๋ น์ด ๋๋ฌ์์ ์๋ฆฌ๋ ๋ถํธ. ๋ฐ๋์ ๋ถ์ฌ์ผ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง) ์ญ์ ํ๊ธฐ : DROP DATABASE ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ;
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํํ๊ธฐ(์์ฑ๋์๋์ง ํ์ธ).. : SHOW DATABASES;
DATABASES ์ด๋ค! - ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉํ๊ธฐ : USE ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ;
์ดํ ์ ๋ ฅํ๋ ๋ช ๋ น์ด๋ USE์ดํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ํ์ ๋ํด ์ ์ฉ๋๋ค.
SQL๊ณผ ํ ์ด๋ธ ๊ตฌ์กฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ฒญ๋๊ฒ ๋ง๊ณ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํ๊ธฐ ๋๋ฌธ์,
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ ๋ฑ ๋ง์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ๊ฒ.
์ด์ ๋ SQL์ด๋ผ๋ ์ปดํจํฐ ์ธ์ด๋ฅผ ๋ฐฐ์ธ ๊ฒ์ด๋ค.
- SQL = Structured ๊ตฌ์กฐํ๋ Query ์ง๋ฌธ Language ์ธ์ด.
*query language=์ง์์ด= ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด ์์คํ ์ ์ง์๋ฅผ ํ ์ ์๊ฒ ํ๋ ๊ณ ๊ธ ์ปดํจํฐ ์ธ์ด์ด๋ค.
->๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ(MySQL)์ ์ ํด์ง ์ธ์ด(SQL)๋ก ์ํตํด์ผ ์๋ฒ์๊ฒ ๋ช ๋ น์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ด๋ฆด ์ ์๋ค. - SQL์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ณด๋ค๋ ๋น๊ต์ ์ฝ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ํ๋ค.
- SQL์ ๋ชจ๋ ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ์คํ๋ ํ๋ก๊ทธ๋๋ฐ์ธ์ด์ด๋ค.
ํ=ํ ์ด๋ธtable ๊ตฌ์กฐ
- ํ์ ๊ฐ๋ก์ค = ํ = row = record. SQL์์ row = ๋ฐ์ดํฐ ํ ๊ฑด์ ์๋ฏธํ๋ค.
- ํ์ ์ธ๋ก์ค = ์ด = column SQL์์ column = ๋ฐ์ดํฐ์ ํ์ /๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค.
- ์์ ํ์์ row = 2 (๋ฐ์ดํฐ๊ฐ 2๊ฑด์ด๋ฏ๋ก), column = 4์ด๋ค.
MySQL ํ ์ด๋ธ์ ์์ฑ
- ํ
์ด๋ธ ์์ฑ
: CREATE TABLE ํ ์ด๋ธ ์ด๋ฆ(... ๊ฐ column ์ด๋ฆ๊ณผ ๋ช ๋ น์ด๋ค ...); - ํ
์ด๋ธ ์ญ์
: DROP TABLE ํ ์ด๋ธ ์ด๋ฆ; - ํ
์ด๋ธ ์กฐํ
: SHOW TABLES; TABLES ์ด๋ค!
โป ํ์ฌ ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
: SET PASSWORD = PASSWORD('๋น๋ฐ๋ฒํธ');
- ์๋ฃํ Datatype
->SQL์ ํ ์ด๋ธ์ ์์ฑํ ๋๋ถํฐ ๊ฐ column์ ๋ค์ด๊ฐ datatype์ ์ ํด์ผ ํ๋ค.
์๋ฃํ์ MySQL Datatype์ผ๋ก ๊ตฌ๊ธ๋งํด์ ์ํ๋ ์๋ฃํ ๋ช ๋ น์ด๋ฅผ ๋ฃ๋๋ค. - INT(์ต๋์ถ๋ ฅ์๋ฆฟ์) ์์์ ์๋ ์์, ์์, 0.(=INTEGER)
- (string : ๋ฌธ์์ด , character : ๋ฌธ์)
VARCHAR(์ต๋๋ฌธ์์=size) ๊ฐ๋ณ์ ์ธ(var) ๋ฌธ์(*character). ๊ดํธ ์์ ๊ธ์์ ์ ํ์ ์ค์ ํ๋ค.
VARCHAR(10) → 10๊ธ์ ์ด์์ด๋ฉด 11์๋ถํฐ๋ ์ ์ฅX.
TEXT(size) / MEDIUMTEXT(size) / LONGTEXT(size) ๋ฌธ์์ด์ ์ ์ฅํจ. ๊ดํธ ์์ ๊ธ์์ ์ ํ.
์ปดํจํฐ์ ์ ์ฅ๊ณต๊ฐ์ ์ ํด์ ธ ์์ผ๋ฏ๋ก, ํญ์ column์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์ต๋๊ฐ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ผ ํจ! - DATE / TIME / DATETIME .. : ๋ ์ง(์ฐ์์ผ) / ์๊ฐ / ๋ ์ง,์๊ฐ ์๋ฃํ์ ์ ์ฅ
- NOT NULL ํ์ ์ ๋ณด. ์์ด์ (NULL) ์ ๋๋ ๋ฐ์ดํฐ. ํด๋น ๊ฐ์ด ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
NULL ์ ํ ์ ๋ณด. ์์ด๋ ๋๋ ๋ฐ์ดํฐ. ๊ฐ์ด ์์ด๋ ๋ฐ์ดํฐ ์ถ๊ฐ ๊ฐ๋ฅ. - AUTO_INCREMENT ์๋์ผ๋ก 1์ฉ ๊ฐ์ด ์ฆ๊ฐํ๊ฒ ํ๋ค. 1,2,3,4,5,6..
id์ ๊ฐ์ด ์ ๋ ์ค๋ณต๋์ด์ ์ ๋๋ ํญ๋ชฉ์ ๋ํด ์ค์ ํ๋ ๋ช ๋ น์ด.
โ ๏ธ PRIMARY KEY(ํน์ column๋ช
) : ํ
์ด๋ธ์ ์์ฑํ๋ ๋ช
๋ น์ ๋ฐ๋์ ์ง์ , ํฌํจํด์ผ ํ๋ ๋ช
๋ น์ด.
: primary key๋ฅผ ์ง์ ํ๋ ์ด์ ๋ '์ฑ๋ฅ'๊ณผ '์ค๋ณต์ ๋ฐฉ์งํ๋ ๊ธฐ๋ฅ'๋๋ฌธ. ์ง๊ธ์ ํ์๋ง ์๋ฉด ์ถฉ๋ถํ๋ค.
์๋ฅผ ๋ค์ด id column๊ณผ ๊ฐ์ ์๋ณ์(uniqueํ column)์ ์ง์ ํ๋ค. : PRIMARY KEY(id)
⇒
์๋ฅผ ๋ค์ด..
'topic'์ด๋ผ๋ ์ด๋ฆ์ ์์ ํ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด,
CREATE TABLE topic(
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(1000) NOT NULL,
description TEXT NULL,
created DATETIME NOT NULL,
author VARCHAR(15) NULL,
profile VARCHAR(200) NULL,
PRIMARY KEY(id)
);
์ด๋ ๊ฒ ๋ช ๋ น์ด๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
๐ cheatsheet : =์ปจ๋ํ์ดํผ. ํ๋ง๋๋ก ์์ฝ์ ๋ฆฌ๋ ๋ฌธ์. ๊ตฌ๊ธ๋งํ ๋ ์ด ๋จ์ด๋ฅผ ๋ฃ์ผ๋ฉด ์์ฝ์ ๋ฆฌ๋ ๋ฌธ์๋ฅผ ๋ณผ ์ ์๋ค!
โป ์คํ๋ ๋์ํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐจ์ด ์ค ํ๋ : ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ์ ๋ํ ๊ฐ์ ์ฑ์ด ๊ฐํ๋ค.
MySQL CRUD
CRUD = ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ์ 4๊ฐ์ง ๊ธฐ๋ฅ.
→ Create ๋ฐ์ดํฐ ์์ฑ, Read ๋ฐ์ดํฐ ์กฐํ, Update ๋ฐ์ดํฐ ์์ , Delete ๋ฐ์ดํฐ ์ญ์
์ด ์ค์์๋ DB๋ผ๋ฉด ๋ฐ๋์ ๊ฐ์ง๊ณ ์๋๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์? Create์ Read.
์ด๋ค ๋ถ์ผ(ํ๊ณ, ์ญ์ฌ ๋ฑ)์์๋ ๋ฐ์ดํฐ ์์ ๊ณผ ์ญ์ ๊ธฐ๋ฅ์ ์ ํ ์ฌ์ฉํ์ง ์๊ธฐ๋ ํ๋ค.
โป DESC ํ ์ด๋ธ์ด๋ฆ; : ํด๋น ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ช ๋ น์ด.
Create : SQL์ INSERT ๊ตฌ๋ฌธ
ํ์ ํ์ '์ฝ์
'ํ๋ค๋ ์ ์์ INSERT๋ฅผ ์ฌ์ฉํ๋ค.
auto_increment ์ธ ๊ฐ๋ง ์ ์ธํ๊ณ ํญ๋ชฉ๋ค์ ์ ์ด๋ฃ์ผ๋ฉด ๋๋ค.
→ INSERT INTO ํ
์ด๋ธ์ด๋ฆ (์ด1์ด๋ฆ,์ด2์ด๋ฆ...) VALUES('์ด1๊ฐ','์ด2๊ฐ',...);
Read : SQL์ SELECT๊ตฌ๋ฌธ
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ SQL๋ช
๋ น์ด.
๋ฐ์ดํฐ๋ฒ ์ด์ค= ์ต๋ ์ต ๋จ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์. ๋ฐ๋ผ์ ์ํ๋ ๋ฐ์ดํฐ๋ง ๊ณจ๋ผ์(select) ์กฐํํ๋ ๊ฒ์ด ์ค์.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ค๋ฃฌ๋ค = select๋ฌธ์ ์ ๋ค๋ฃฌ๋ค.
SELECT๋ฌธ์ ์กฐ๊ฑด์ด ๋ณต์กํด์ง์๋ก ์ฌ์คํด์ง๋ฏ๋ก, ๊ตฌ๊ธ๋ง์ ํตํด ๊ทธ๋๊ทธ๋ ํ์ํ ๋ช
๋ น์ด&๋ช
๋ น์ด ์์๋ฅผ ์ฐพ์ ์จ์ผ ํ๋ค.
SELECT~ FROM~ ๋ฅผ ์ฌ์ฉํ๋ค.
FROM ๋ค์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ํ ์ด๋ฆ์ด ์จ๋ค.
SELECT ์ FROM ์ฌ์ด = Projection = ํ์ํ๊ณ ์ถ์ column์ด๋ฆ์ด ์จ๋ค. (* = ์ ๋ถ)
- ํน์ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋.
→ SELECT * FROM ํ ์ด๋ธ์ด๋ฆ; - ํน์ ํ
์ด๋ธ์ ํน์ column๋ค๋ง ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋.
→ SELECT column1์ด๋ฆ, column2์ด๋ฆ,.. FROM ํ ์ด๋ธ์ด๋ฆ; - ํน์ ํ
์ด๋ธ์ ํน์ column์ ํน์ ์กฐ๊ฑด ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋.
→ SELECT * FROM ํ ์ด๋ธ์ด๋ฆ WHERE ํน์ column๋ช =์กฐ๊ฑด; - ํน์ ํ
์ด๋ธ ํน์ column ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ์ ๋.
โปascending order = ์ค๋ฆ์ฐจ์ = ์ ๋ฐฉํฅ ์ ๋ ฌ. 123, ๊ฐ๋๋ค, ABC..
descending order = ๋ด๋ฆผ์ฐจ์ = ์ญ๋ฐฉํฅ ์ ๋ ฌ. 987, ํํํ, ZYX...
ascending → SELECT * FROM ํ ์ด๋ธ์ด๋ฆ ORDER BY ํน์ column๋ช ASC; (ASC ๋ ์๋ต๊ฐ๋ฅ-๊ธฐ๋ณธ์ต์ )
descending → SELECT * FROM ํ ์ด๋ธ์ด๋ฆ ORDER BY ํน์ column๋ช DESC;
Update : SQL์ UPDATE ๊ตฌ๋ฌธ
→ UPDATE ํ
์ด๋ธ์ด๋ฆ SET column๋ช
=์์ ํ ๊ฐ, column๋ช
=์์ ํ ๊ฐ.. WHERE ์์ ๋์;
์์ ๋์์๋ ์ฃผ๋ก id=__ ์ ๊ฐ์ด ์๋ณ์๋ฅผ ์
๋ ฅํ๋ค. (์์ ํ ๋ฐ์ดํฐ์ uniqueํ ๊ฐ)
โ ๏ธUPDATE ๊ตฌ๋ฌธ์์ WHERE ~ ๋ฅผ ๋น ๋จ๋ฆฌ๋ฉด ์ฌ์์ด ์จ๋ค.. ๋ชจ๋ ๋ฐ์ดํฐ์ ๊ฐ์ด ๋ฐ๋ ์๋ ์๋ค.
Delete : SQL์ DELETE ๊ตฌ๋ฌธ
→ DELETE FROM ํ
์ด๋ธ์ด๋ฆ WHERE ์ญ์ ๋์;
์ญ์ ๋์์๋ ์ฃผ๋ก id=__ ์ ๊ฐ์ด ์๋ณ์๋ฅผ ์
๋ ฅํ๋ค. (์ญ์ ํ ๋ฐ์ดํฐ์ uniqueํ ๊ฐ)
โ ๏ธDELETE ๊ตฌ๋ฌธ์์ WHERE ~ ๋ฅผ ๋น ๋จ๋ฆฌ๋ฉด ์ฌ์์ด ์จ๋ค.. ํด๋น ํ
์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด ์ญ์ ๋ ์๋ ์๋ค.
์์ ์ ์ ์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ์ ์ ๋ณธ์ง๊ณผ ํ์ ์ ๊ตฌ๋ถํด ๋ณด๋ฉด..
๋ณธ์ง=๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ =๊ด๊ณํ.
→๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณธ์ง์ CRUD.
์ด์ ๋ณธ์ง์ ๋์ด์ ํ์ ์ ๋ํด ๋ฐฐ์ธ ๊ฒ์ด๋ค.
→'๊ด๊ณํrelational' ์ด ์ ํ์ ์ธ๊ฐ? (์ดํ)
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์์ฑ
๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ํ์ํ๊ฐ?
๋ฐ์ดํฐ๋ค์ ์ค๋ณต์ด ๋ง์์๋ก ์ข์ง ์๋ค. (์ค๋ณต์ ์
์ทจ)
selectํ๊ธฐ ์ด๋ ค์์ ธ์ ๋ฐ์ดํฐ ์กฐํ, ๊ด๋ฆฌ(์ ์ง๋ณด์)๊ฐ ์ด๋ ค์์ง๊ธฐ ๋๋ฌธ.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ๊ฐ์ ํ๋ค.
์๋ฅผ ๋ค์ด ์์ ํtopic์ author, profileํญ๋ชฉ์ ์ค๋ณต์ด ๋๋ฌด ๋ง๋ค.
๊ทธ๋์ ์๋์ฒ๋ผ author, topic ์ ๋ ๊ฐ์ ํ๋ก ๋๋์ด ์ ์ฅํ๋ค.
๊ทธ๋ฌ๋ฉด..
→ egoing ์ ์ด๋ฆ์ด ์ด๊ณ ์์ผ๋ก ๋ฐ๋์ด๋ authorํ์์๋ง ๋ฐ๊พธ๋ฉด ๋์ด ํธ๋ฆฌ.
→ ๊ธฐ์กด ์ ์์ ์ด๋ฆ, ํ๋กํ์ด ๊ฐ์ ๋ค๋ฅธ ์๊ฐ๊ฐ ์ถ๊ฐ๋์ด๋ ์๋ณ ๊ฐ๋ฅ.
(์ด๋ฆ์ด egoing, ํ๋กํ์ด developer์ธ ๋๋ช
์ด์ธ์ด ์ถ๊ฐ๋์ด๋ author id๋ ๋ค๋ฅผ ๊ฒ์ด๊ธฐ ๋๋ฌธ)
ํ์ง๋ง ๋จ์ ๋ ์๋ค.
์์ ํ๋ ๋ ์ง๊ด์ ์ด๋ค (ํ๋์ ํ๋ง ๋ณด๋ฉด ๋๋ค).
์๋์ ๋ ํ๋ ์ฐธ์กฐํ๊ฐ ํ์ํ๊ณ , ๋งค๋ฒ ๋น๊ตํด์ ๋ด์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
⇒ ์ด ๋ถํธํจ์ ํด๊ฒฐํ ๊ฒ์ด ๋ฐ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค. " ์ ์ฅ์ ๋ถ์ฐํด์, ๋ณด์ฌ์ค ๋ ํฉ์ณ์ ๋ณด์ฌ์ค๋ค ". ( JOIN )
ํ ์ด๋ธ ๋ถ๋ฆฌํ๊ธฐ
์์ ์์ ์ฒ๋ผ ํฐ ํ๋์ ํ ์ด๋ธ์ ๋๋ก ๋ถ๋ฆฌํ๋ ์ฐ์ต์ ๋จผ์ ํด ๋ณผ ๊ฒ์ด๋ค.
ํฐ ํ๋์ ํ
์ด๋ธ์์ ์๋ก ๊ด๊ณ์๋ ์ด์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ๋ค.
์๋ฅผ ๋ค์ด..
ํฐ ํ
์ด๋ธ : id, title, description, created, author, profile ์ ์ด์ด ์์
→๊ฐ์ฅ ๊ด๊ณ์ฑ ๋์์ ๋ถ๋ฆฌํ๊ธฐ ์ข์ author, profile ์ ๋ถ๋ฆฌํ๋ค.
->topic : id, title, description, created, author→author_id
->author : id, author, profile
(์ค์ต ๋ฐ์ดํฐ ์ฝ๋๋ ์ธ๊ฐ ์์
์๋ฃ์ ์์!)
JOIN - ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฝ
JOIN = ๊ฒฐํฉ.
๋ ํ
์ด๋ธ์ joinํ๊ธฐ ์ํด์๋ ๊ฒฐํฉํ '๊ธฐ์ค'์ด ํ์ํ๋ค.
์ด '๊ธฐ์ค'์ ๋ ํ
์ด๋ธ ๊ฐ์ ๊ฒฐํฉ๊ณ ๋ฆฌ(์ฐ๊ด์ ) ์ ํด๋นํ๋ค.
์๋ฅผ๋ค์ด, ์ ์์ ์ topic-author_id ์ author-id ๊ฐ ์๋ก ์ฐ๊ด๋์ด ์์ผ๋ฉฐ, JOIN ๋ช
๋ น์ด๋ฅผ ์์ฑํ ๋ ์ด๋ฅผ ์ฐธ์กฐํด ๋ช
๋ นํ ์ ์๋ค.
→ SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;
์ฆ SELECT * FROM ํ
์ด๋ธ1 LEFT JOIN ํ
์ด๋ธ2 ON ๊ฒฐํฉ๊ธฐ์ค;
๋จ์ํ ๋ ํ
์ด๋ธ๋ง ์ฐ๊ด์ง๊ณ ๊ฒฐํฉํ๋ ๊ฒ์ด ์๋, ์ฌ๋ฌ ๊ฐ์ ํ
์ด๋ธ์ ์ฐ๊ด์ง๊ณ ๊ฒฐํฉํ ์ ์๋ค.
์ด๊ฒ์ด ๋ฌด๊ถ๋ฌด์งํ๊ฒ ์์ฉ ๊ฐ๋ฅํ '๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค'์ ํ!
JOIN ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ฅ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ต๊ฒ ํ๋ ๊ฝ์ด๋ค.
JOIN ์ ์ดํดํด์ผ ๋น๋ก์ '๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค'์ ์๋ฏธ๋ฅผ ์ดํดํ ์ ์๋ค.
โป** AS ## → ** ๋ฅผ ## ๋ก ๋ฐ๊พผ๋ค.
์ธํฐ๋ท๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค
์ธํฐ๋ท๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ๋ฅผ ์ค๋ช
ํ ๊ฒ.
MySQL์ ์ธํฐ๋ท์ ํ์ฉ๊ฐ๋ฅํ๊ฒ ๊ณ ์๋ ์์คํ
์ด๋ค.
'์ธํฐ๋ท' ์ ๋ํ์ฌ
์ธํฐ๋ท์ด ๋์ํ๊ธฐ ์ํด์๋ ์ปดํจํฐ๊ฐ ์ต์ ๋ช ๋๋ ํ์ํ ๊น? → ๋ ๋.
'์ธํฐ๋ท'์ ์๋ฏธ : ์๋ก ๋ค๋ฅธ ์ปดํจํฐ๋ค์ด ์ธํฐ๋ท์ผ๋ก ์ฐ๊ฒฐ๋จ.
→ 'ํ ๋์ ์ปดํจํฐ'๊ฐ ๊ฐ์ง ํ๊ณ๋ฅผ ๋ฐ์ด๋๊ฒ ๋์๋ค.
์๋ฅผ ๋ค์ด.. (WEB)
ํ ๋์ ์ปดํจํฐ(A)๋ ์ ๋ณด๋ฅผ ์์ฒญํ๊ณ , (์น๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด)
๋ค๋ฅธ ์ปดํจํฐ(B)๋ ์์ฒญํ ์ ๋ณด๋ฅผ ์๋ตํ๋ค.
์ด ๋ ์ปดํจํฐ(A,B)์ ๊ฐ๋
์ ํํํ๊ธฐ ์ํด ๊ณ ์๋ ๋ง์ด 'ํด๋ผ์ด์ธํธ'์ '์๋ฒ'์ด๋ค.
A = ์ ๋ณด์์ฒญ = client(๊ณ ๊ฐ, ๊ฐ) . (A์ปดํจํฐ์ ์ค์น๋ ์น์ ์ํ ํ๋ก๊ทธ๋จ = web client=์น๋ธ๋ผ์ฐ์ )
B = ์์ฒญ์๋ต = server(์ฌ์
์, ์) (B์ปดํจํฐ์ ์ค์น๋ ์น์ ์ํ ํ๋ก๊ทธ๋จ = web server์น์๋ฒ)
'๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ'์ ์๋ฏธ๋ ๋ฌด์์ธ๊ฐ?
MySQL์ ์ค์นํ๋ฉด ๋ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์ค์น๋๋ค.
→ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธdatabase client,
๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒdatabase server.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ : ์ค์ ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ :๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ ์ํ๋ ์๋จ..(์น๋ธ๋ผ์ฐ์ ์ฒ๋ผ)
์ฐ๋ฆฌ๋ ์ง๊ธ๊น์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ '์ง์ ' ๋ค๋ฃฌ ๊ฒ ๊ฐ์์ง๋ง,
์ฌ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ๋ฅผ 'ํตํด์' ๋ค๋ฃฌ ๊ฒ์ด๋ค.
์? ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ ๋ฐ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํด ๋ค๋ค์ผ ํ๊ธฐ ๋๋ฌธ.
→ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ = MySQL monitor
(MySQL์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ)
MySQL monitor ๋ ๋ช
๋ น์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ฒ๋ฅผ ์ ์ดํ๋ ํ๋ก๊ทธ๋จ์ด์๋ ๊ฒ์.
๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ๋ฅผ 2๊ฐ ํ์ฉํ๋ ์๊ฐ ๊ทธ DB๋ฅผ ๋ ์ ์ดํดํ ์ ์๊ณ , ๋ ์์ ๋กญ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
โป ํฐ ๋
ธ์ด๋ง(์ปดํจํฐ๋ฅผ ๋ง๋ ์์ง๋์ด&๊ณผํ์) ์..
"๊ฒฐ๊ตญ ์ํ์ ์ดํดํ๋ ๊ฒ์ด ์๋ ์ต์ํด์ง๋ ๊ฒ์ด๋ผ๋ค."
์ฐ๋ฆฌ์ ๊ณต๋ถ์ ๋ชฉํ๋ '์ดํด'๊ฐ ์๋ '์ต์ํด์ง๋ ๊ฒ' ์ด๋ค. '์ต์ํด์ง๋' ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ ์ดํด์ด๋ค.
๋ฐฉ๊ธ ๋ฐฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ๋ผ๋ ์ถ์์ ์ธ ๊ฐ๋ ๋ ์ต์ํด์ง๋ฉด ๊ด์ฐฎ์ ์ง ๊ฒ์ด๋ค.
'๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ'์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๊ฐ๋ถํฐ..
์ ์ธ๊ณ์ ์๋ง์ ์ปดํจํฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ ๋ณด๋ฅผ ๋ฃ๊ณ ๋นผ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง๋ค.
→ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
MySQL ํด๋ผ์ด์ธํธ
๋ง์ MySQL ํด๋ผ์ด์ธํธ๊ฐ ์กด์ฌํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ์ฌ์ฉํ ๊ฒ์ MySQL monitor ์.
- MySQL monitor
-MySQL์ ์ค์นํ๋ฉด ์๋์ผ๋ก ํจ๊ป ์ค์น๋๋ ๋ฒ๋ค ํ๋ก๊ทธ๋จ.
-์ด๋ค ์กฐ๊ฑด, ์ด๋ ํ๊ฒฝ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ.
-CLI(๋ช ๋ น ์ค ์ธํฐํ์ด์ค Command-Line Interface) ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋จ.
-์ฅ์ ) ์์ ์ ์ด๊ณ ์์์ ๋ ์๋ชจํ๋ค.
-๋จ์ ) ๋ช ๋ น์ด๋ฅผ ๊ธฐ์ตํด์ผ ํ๋ค. - MySQL Workbench
-๋ฐ๋ก ์ค์นํด์ผ ํ๋ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ.
-MySQL์ด ๊ณต์์ ์ผ๋ก ์ ๊ณตํ๋ ํ๋ก๊ทธ๋จ.
-GUI ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋จ.
-์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๊ธฐ๊ฐ ์ข ๋ ํธํ๋ค. ํค๋ณด๋, ๋ง์ฐ์ค๋ฅผ ํตํด ์กฐ์ ๊ฐ๋ฅํ๋ค.
์ด์ธ์ MySQL client๋ MySQL client ๋ก ๊ตฌ๊ธ๋งํ๋ฉด ๋์จ๋ค.
๊ฐ ํด๋ผ์ด์ธํธ์ ์ฅ๋จ์ ์ด ๊ฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
MySQL Workbench
MySQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ ์ค ํ๋. MySQL์ด ๊ณต์์ ์ผ๋ก ์ ๊ณต (mongoDB์ robo3T์ ํด๋น)
MySQL monitor ์์๋..
→ -uroot -p -hlocalhost (-hlocalhost๋ ์๋ต ๊ฐ๋ฅ)
(-u์ ์ =root, -pํจ์ค์๋ ์ ๋ ฅ, -hํธ์คํธ =๋ก์ปฌํธ์คํธ)
โปํธ์คํธhost = ์ปดํจํฐ ๋คํธ์ํฌ(์ธํฐ๋ท)์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฐ๊ฐ์ ์ปดํจํฐ๋ฅผ ์ง์นญํ๋ ๋ง. ๋ง์ฝ MySQL monitor ๋ก ์ธํฐ๋ท์ ํตํด, ๋ค๋ฅธ ์ปดํจํฐ์ MySQL์๋ฒ์ ์ ์ํ๋ ค๋ฉด -h ๋ค์ ๊ทธ ์๋ฒ์ปดํจํฐ์ ์ฃผ์๋ฅผ ์ ์ผ๋ฉด ๋๋ค.(-hgoogle.com ์ฒ๋ผ) ์ง๊ธ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์ฒ๋ผ MySQLํด๋ผ์ด์ธํธ์ MySQL ์๋ฒ๊ฐ ๊ฐ์ ์ปดํจํฐ์ ์์ผ๋ฉด -hlocalhost ๋ผ๊ณ ์ ๋๋ค.
โป [localhost](<http://localhost>) : ํด๋ผ์ด์ธํธ๊ฐ ์ค์น๋ ๊ทธ ์ปดํจํฐ ์์ ์ ๋ํ๋ด๋ ํน์ํ ๋๋ฉ์ธ. [localhost](<http://localhost>) ์ ๊ฐ์ ์๋ฏธ์ IP์ฃผ์ = 127.0.0.1
## 4:10 ๊น์ง ๋ณด๋ค๊ฐ ์ค๋จ! (C++ ์ค์นํด์ผ ํ๋ค๊ณ ๋์์..) ๋์ค์ ํ์ํด์ง๋ฉด ๋ค์ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
DATABASE 2 - MySQL ์์ ์ ๋ง์น๋ฉฐ
์ด์ ๋ ๊ฐ์ง ๊ธธ๋ก ๊ฐ ์ ์๋ค.
- ์ง๊ธ๊น์ง ๋ฐฐ์ด ๊ฑธ ์ฌ์ฉํด ํ์ค์ ๋ฌธ์ ํด๊ฒฐํ๊ธฐ.
- ์ง๊ธ ๋ฐฐ์ด ๊ธฐ์ ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ์ด๋ก &๊ธฐ์ (ํ์ )์ ๋ฐฐ์ฐ๊ธฐ.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฒ์ ๋ฐฐ์ฐ๊ธฐ ๋๋ฌธ์, 1. ๋ก ๊ฐ๋ ๊ฒ์ด ์ง๊ธ ๋จ๊ณ์์๋ ํ๋ช ํ ์ ํ์ด๋ค.
2.๋ก ๊ฐ๊ธฐ ์ ๋นํ ๋๋ 1.์ ๊ธธ์ ๊ฐ๋ค๊ฐ ํ๊ณ๋ฅผ ๋๋ผ๊ณ ์ถฉ๋ถํ ์ ๋งํ์ ๋์ด๋ค.
์๋๋ 1.์ ๊ธธ์ ์ ๊ฐ๊ธฐ ์ํ ์กฐ์ธ๋ค.
- ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ค๋ฃจ๋ ์ฌ๋ =SQL์ ์ ์ดํดํ๊ณ ์ ๋ค๋ฃจ๋ ์ฌ๋.
ํนํ CRUD์, R์ ํด๋นํ๋ SELECT ๊ตฌ๋ฌธ.
SELECT๊ตฌ๋ฌธ์ ์ฐ์ตํ๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์ญ๋์ ๊ธฐ๋ฅด๋ ์ฒซ๊ฑธ์์ด๋ค. - ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์์ ์ด ํ์ํ ์ ๋ณด๋ฅผ ๊บผ๋ด๊ธฐ๊ฐ ํ๋ค๋ค.
→ ์ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ๋๋ ๋ฐ์ดํฐ๊ฐ ๋ง์ง ์์ ์๊ด์์ง๋ง, ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์ ๋ฆฌ์ ๋์ ํ์์ฑ์ ๋์์ง๋ค.
์ด ์ ๋ฆฌ์ ๋์ ๋์์ฃผ๋ ๊ฒ์ด ์์ธindex ์ด๋ค.
์ฌ๋๋ค์ด ์์ฃผ ์ฐพ๋ ํญ๋ชฉ์ index๋ฅผ ์ค์ ํด ๋์ผ๋ฉด ์ปดํจํฐ๋ ๊ทธ ํญ๋ชฉ์ ๋ฏธ๋ฆฌ ์ฐพ์ ์ค๋นํด๋๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๊ฒ์ํ์ ๋ ๋ ๋น ๋ฅด๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ค ์ ์๋ค.
๋ฐ์ดํฐ๊ฐ ๋ง์์ก์ ๋ '์์ธindex'๋ฅผ ๊ตฌ๊ธ๋งํด ์ ์ฉํด ๋ณด๋ผ. - ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์์ ์ด ํ์ํ ์ ๋ณด๋ฅผ ๊บผ๋ด๊ธฐ๊ฐ ํ๋ค๋ค.
→ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๊ธฐ๊ฐ ํ๋ค๋ค.
ํนํ ์ฒ์์ ํ ์ด๋ธ์ ์๋ชป ์ค๊ณํ์ ๋.
→์ด๋ป๊ฒ ํ ์ด๋ธ์ ๋ ํจ์จ์ ์ผ๋ก, ์ค๋ณต ์์ด, ๋ ๋์ ์ฑ๋ฅ์ ๋ฐํํ๋๋ก ์ค๊ณํ ๊ฒ์ธ๊ฐ : ๋ชจ๋ธ๋งmodeling.
์ ๊ทํ, ๋น์ ๊ทํ, ์ญ์ ๊ทํ... ๋ก ๊ตฌ๊ธ๋งํด ๋ณด๋ผ. - ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ์ค์๋ก ๋ ์๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ผ ํ๋ค.
→ ๋ฐฑ์ backup ๊ฐ์ฅ ์ค์ํ๋ค.
์) ํ๋๋์คํฌ์ ๋ํด ์์ธกํ ์ ์๋ ๊ฒ : ์ธ์ ๊ณ ์ฅ๋ ์ง ์ ์ ์๋ค.
ํ๋๋์คํฌ์ ๋ํด ์์ธกํ ์ ์๋ ๊ฒ : ์ธ์ ๊ฐ ๋ฐ๋์ ๊ณ ์ฅ๋๋ค.
(๋ง์น ์ธ๊ฐ์ ์ธ์ ์ฃฝ์์ง ์ ์ ์์ง๋ง, ๋ฐ๋์ ์ฃฝ๋ ๊ฒ์ฒ๋ผ)
→ ๋ฐฑ์ backup ์ ์๋ฆฌ? ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํด์ ๋ณด๊ดํ๋ ๊ฒ.
๋ด ์ปดํจํฐ ์ ๋ค๋ฅธ ๋ณ๋์ ์ปดํจํฐ์ ์ ์ฅํ๋ฉด ๋ฐ์ดํฐ ์ ์ค ๊ฐ๋ฅ์ฑ์ ํจ์ฌ ๋ฎ์์ง๋ค.
mysqldump , binary log .. ๋ฑ์ ํค์๋๋ก ๊ตฌ๊ธ๋งํ๋ฉด ๋๋ค. - ํด๋ผ์ฐ๋์ปดํจํ
์์คํ
.
์๋ง์กด, ๊ตฌ๊ธ, ๋ง์ดํฌ๋ก์ํํธ ๊ฐ์ ๊ฑฐ๋IT๊ธฐ์ ์ด ์๋ํ๋ ์ปดํจํฐ๋ฅผ ๋น๋ ค ์ฐ๋ ๊ฒ (์๊ฒฉ ์ ์ด).
์ฅ์ ) ์ ๋ฌธ ์์ง๋์ด๊ฐ ๋ฐฑ์ ์ ๊ด๋ฆฌํด์ฃผ๋ฏ๋ก DB๋ณธ๋์ ๊ธฐ๋ฅ์๋ง ์ง์คํ ์ ์๋ค, ์ง์ MySQL DB๋ฅผ ๋ง๋๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ๋ค.
AWS RDS , Google Cloud SQL for MySQL , AZURE Database for MySQL .. - ํ๋ก๊ทธ๋๋ฐprogramming.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๋ ์ด์ ? ๊ทธ ๋ฐ์ดํฐ๋ค์ ๋ถ์ํด ๊ฐ์์ ๋ชฉ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํด.
์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ๋ ์ ๋ณด๋ค์ ํ์ฉํ ์ ์๋ค.
Python mysql api, PHP mysql api, Java mysql api.. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ด๋ฆ + 'mysql api' ๋ก ๊ตฌ๊ธ๋ง.
์ค๋์ ์์๊ณต๋ถ์๊ฐ : ์ฝ 7์๊ฐ!
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋งํฌ๋ค์ด ๋ฌธ๋ฒ] ๋งํฌ๋ค์ด์ผ๋ก ์ฝ๋ ์ฝ์ ํ๊ธฐ - inline๊ณผ block ๋ฐฉ์ (0) | 2020.11.12 |
---|---|
[20.10.09] mypick31 ๋ฏธ๋ฏธํ ์์ / ๋ง์คํฐ์ฆ์ฝ์ฝ์ ๋ฌธ์ ํ์ด๋ณด๊ธฐ! (0) | 2020.10.09 |
TIL - [20.09.21] ์ทจ์ , ๊ณต๋ถ๊ณํ๊ณผ ์ ํ๋ก์ ํธ ๊ฐ๋ฐ๊ณํ๐ง (0) | 2020.09.21 |
TIL - [20.09.17] ํ๊ณ ์ ๊ณํ (0) | 2020.09.17 |
TIL - [20.09.10] ์ฐ์ฐ์ฐ๋ง - ์ ์ถ ! (0) | 2020.09.10 |