๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Boost Course Web

1.2 SQL

1) SQL์ด๋ž€?

SQL(Structured Query Language)

  • SQL์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ • ๊ฐ™์€ ์กฐ์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์•ˆ๋œ ์ปดํ“จํ„ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ์ฟผ๋ฆฌํ•˜๋Š” ํ‘œ์ค€ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.

  • DML (Data Manipulation Language): ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    INSERT, UPDATE, DELETE, SELECT ๋“ฑ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

  • DDL (Data Definition Language): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    CREATE, DROP, ALTER ๋“ฑ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

  • DCL (Data Control Language) : ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
    ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ ๋“ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
    GRANT, REVOKE ๋“ฑ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

Database ์ƒ์„ฑํ•˜๊ธฐ

์ฝ˜์†”์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

MySQL ๊ด€๋ฆฌ์ž ๊ณ„์ •์ธ root๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ์ ‘์†ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

mysql –uroot  -p

window ์‚ฌ์šฉ์ž๋Š” ์„ค์น˜ ์‹œ์— ์ž…๋ ฅํ–ˆ๋˜ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

MySQL DBMS์— ์ ‘์†ํ•˜๋ฉด “mysql>” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ MySQL์— ์ ‘์†ํ–ˆ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

mysql> create database DB์ด๋ฆ„;
mysql> create database connectdb;

Database ์‚ฌ์šฉ์ž ์ƒ์„ฑ๊ณผ ๊ถŒํ•œ ์ฃผ๊ธฐ

  • Database๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณ„์ •์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋˜ํ•œ, ํ•ด๋‹น ๊ณ„์ •์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์„ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์ƒ์„ฑ๊ณผ ๊ถŒํ•œ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • db์ด๋ฆ„ ๋’ค์˜ * ๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • @’%’๋Š” ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ , @’localhost’๋Š” ํ•ด๋‹น ์ปดํ“จํ„ฐ์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

  • flush privileges๋Š” DBMS์—๊ฒŒ ์ ์šฉ์„ ํ•˜๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

  • ํ•ด๋‹น ๋ช…๋ น์„ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

grant all privileges on db์ด๋ฆ„.* to ๊ณ„์ •์ด๋ฆ„@'%' identified by ๏ผ‡์•”ํ˜ธ’;
grant all privileges on db์ด๋ฆ„.* to ๊ณ„์ •์ด๋ฆ„@'localhost' identified by ๏ผ‡์•”ํ˜ธ’;
flush privileges;
  • ์‚ฌ์šฉ์ž ๊ณ„์ •์ด๋ฆ„์€ 'connectuser', ์•”ํ˜ธ๋Š” 'connect123!@#', ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” 'connectdb'๋กœ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
grant all privileges on connectdb.* to connectuser@'%' identified by 'connect123!@#';
grant all privileges on connectdb.* to connectuser@'localhost' identified by 'connect123!@#';
flush privileges;

๊ฐ•์˜์—์„œ๋Š” mysql 5 ๋ฒ„์ „์œผ๋กœ ์„ค๋ช…ํ•˜๋Š”๋ฐ

mysql 8๋ฒ„์ „์—์„œ๋Š” create user๋ฅผ ๋จผ์ € ํ•ด์ฃผ๊ณ  grant๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ใ…ก error log

๋ฐฉ๋ฒ• 1

CREATE user connectuser @'%' identified by 'connect123!@#';
GRANT ALL privileges on connectdb.* to connectuser @'%';

๋ฐฉ๋ฒ• 2

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
flush privileges;

์ƒ์„ฑํ•œ Database์— ์ ‘์†ํ•˜๊ธฐ

์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mysql –hํ˜ธ์ŠคํŠธ๋ช… –uDB๊ณ„์ •๋ช… –p ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฆ„

db์ด๋ฆ„์ด connectdb, db๊ณ„์ •์ด connectuser, ์•”ํ˜ธ๊ฐ€ connect123!@# ์ผ ๊ฒฝ์šฐ ์ฝ˜์†”์ฐฝ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

mysql –h127.0.0.1 –uconnectuser –p connectdb

MySQL ์—ฐ๊ฒฐ๋Š๊ธฐ

ํ”„๋กฌํ”„ํŠธ์—์„œ quitํ˜น์€ exit๋ผ๊ณ  ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

mysql> QUIT
mysql> exit

Bye๋ผ๊ณ  ๋‚˜์˜ค๋ฉด ์—ฐ๊ฒฐ ๋Š๊ธฐ์— ์„ฑ๊ณตํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MySQL ๋ฒ„์ „๊ณผ ํ˜„์žฌ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ

mysql> SELECT VERSION(), CURRENT_DATE;

ํ”„๋กฌํ”„ํŠธ์—์„œ๋Š” SQL์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

SQL์€ semicolon (;)์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

SQL์€ ์ฟผ๋ฆฌ(Query)๋ผ๊ณ  ์ฝ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๋Š” DBMS์—๊ฒŒ ๋ช…๋ น์„ ๋‚ด๋ฆด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์žฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.

SELECT๋Š” ์–ด๋–ค ๋‚ด์šฉ์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.

MySQL์€ ์ฟผ๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฐ๊ณผ์˜ ์ „์ฒด row๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋งˆ์ง€๋ง‰์— ์ „์ฒด row ์ˆ˜์™€ ์ฟผ๋ฆฌ์‹คํ–‰์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฟผ๋ฆฌ๋“ค์€ ๋ชจ๋‘ ๊ฐ™์Šต๋‹ˆ๋‹ค.

mysql> SELECT VERSION(), CURRENT\_DATE;
mysql> select version(), current\_date;
mysql> SeLeCt vErSiOn(), current\_DATE;

์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๊ณ„์‚ฐ์‹์˜ ๊ฒฐ๊ณผ๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ๋ฐ ์ˆ˜์‹ ์‚ฌ์šฉ ์˜ˆ์ œ

mysql> SELECT SIN(PI()/4), (4+1)\*5;

์—ฌ๋Ÿฌ ๋ฌธ์žฅ์„ ํ•œ ์ค„์— ์—ฐ์†์œผ๋กœ ๋ถ™์—ฌ์„œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฌธ์žฅ์— semicolon(;)๋งŒ ๋ถ™์—ฌ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

mysql> SELECT VERSION(); SELECT NOW();

ํ•˜๋‚˜์˜ SQL์€ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž…๋ ฅ๊ฐ€๋Šฅํ•˜๋‹ค.

MySQL์€ ๋ฌธ์žฅ์˜ ๋์„ ๋ผ์ธ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ semicolon(;)์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์ค„์— ๊ฑฐ์ณ ๋ฌธ์žฅ์„ ์“ฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

mysql> SELECT
   -> USER()
   -> ,
   -> CURRENT\_DATE;

SQL์„ ์ž…๋ ฅํ•˜๋Š” ๋„์ค‘์— ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธด ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๊ฐ€ ์ค‘๊ฐ„์— ์ทจ์†Œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฆ‰์‹œ \c๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

mysql> SELECT
   -> USER()
   -> \c
mysql>

DBMS์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์ธํ•˜๊ธฐ

์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์„œ๋ฒ„์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฐพ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ SHOW statement์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

mysql> show databases;

์‚ฌ์šฉ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „ํ™˜ํ•˜๊ธฐ

Database์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด, “use” command ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

mysql> use mydb;

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ „ํ™˜ํ•˜๋ ค๋ฉด, ์ด๋ฏธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ ํ˜„์žฌ ์ ‘์† ์ค‘์ธ ๊ณ„์ •์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ ํ…Œ์ด๋ธ”(Table)

  • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ์—‘์…€(Excel)์„ ์‹คํ–‰ํ•˜๋ฉด ํ‘œ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ‘œ์— ๊ฐ์ข… ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋„ ์—‘์…€์˜ ํ‘œ์™€ ์œ ์‚ฌํ•œ ํ…Œ์ด๋ธ”์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—‘์…€๊ณผ ๋‹ค๋ฅธ ์ ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•ด๋„ ํ…Œ์ด๋ธ”์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” SQL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ , ํ…Œ์ด๋ธ”์— ๊ฐ’์„ ์ €์žฅํ•˜๋ ค๋ฉด ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ SQL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”(table)์˜ ๊ตฌ์„ฑ์š”์†Œ

img

  • ํ…Œ์ด๋ธ” : RDBMS์˜ ๊ธฐ๋ณธ์  ์ €์žฅ๊ตฌ์กฐ ํ•œ ๊ฐœ ์ด์ƒ์˜ column๊ณผ 0๊ฐœ ์ด์ƒ์˜ row๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์—ด(Column) : ํ…Œ์ด๋ธ” ์ƒ์—์„œ์˜ ๋‹จ์ผ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ„. ํŠน์ • ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ–‰(Row) : Column๋“ค์˜ ๊ฐ’์˜ ์กฐํ•ฉ. ๋ ˆ์ฝ”๋“œ๋ผ๊ณ  ๋ถˆ๋ฆผ. ๊ธฐ๋ณธํ‚ค(PK)์— ์˜ํ•ด ๊ตฌ๋ถ„. ๊ธฐ๋ณธํ‚ค๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์—†์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

  • Field : Row์™€ Column์˜ ๊ต์ฐจ์ ์œผ๋กœ Field๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ณ  ์—†์„ ๋•Œ๋Š” NULL ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ชฉ๋ก ํ™•์ธํ•˜๊ธฐ

Database๋ฅผ ์„ ํƒ ํ›„, Database์˜ ์ „์ฒด ํ…Œ์ด๋ธ” ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

mysql> show tables;
Empty set (0.02 sec)

“empty set” ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์–ด๋–ค ํ…Œ์ด๋ธ”๋„ ์•„์ง ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ DESCRIBE ๋ช…๋ น

table ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด, DESCRIBE ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์งง๊ฒŒ DESC๋ผ๊ณ  ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

EMPLOYEEํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค.

**mysql> desc EMPLOYEE; 

img


2) DML(select, insert, update, delete)

๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(Data Manipulation Language, DML)์˜ ์ข…๋ฅ˜

๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด๋Š” ๋ชจ๋‘ ๋™์‚ฌ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋Š” ๋™์‚ฌ์— ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 4๊ฐ€์ง€ ์กฐ์ž‘์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • SELECT – ๊ฒ€์ƒ‰
  • INSERT - ๋“ฑ๋ก
  • UPDATE - ์ˆ˜์ •
  • DELETE - ์‚ญ์ œ

SELECT ๊ตฌ๋ฌธ์˜ ๊ธฐ๋ณธ๋ฌธํ˜•

img

์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰

SELECT ๋’ค์— * ๋ฅผ ๊ธฐ์ˆ ํ•จ์œผ๋กœ์จ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

  • ์˜ˆ์ œ : departments ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    SELECT * FROM  DEPARTMENT;

ํŠน์ • ์ปฌ๋Ÿผ ๊ฒ€์ƒ‰

SELECT ๋’ค์— ์ปฌ๋Ÿผ์„ ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ณ„ํ•ด์„œ ๋‚˜์—ด

  • ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(empno), ์ด๋ฆ„(name), ์ง์—…(job)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    select empno, name, job from employee;

(์–ด๋–ค ์ปฌ๋Ÿผ์ด ์žˆ๋Š”์ง€๋Š” desc๋ช…๋ น์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค)

์ปฌ๋Ÿผ์— Alias๋ถ€์—ฌํ•˜๊ธฐ

์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ALIAS(๋ณ„์นญ)์„ ๋ถ€์—ฌํ•ด์„œ ๋‚˜ํƒ€๋‚ด๋Š” ์นผ๋Ÿผ์˜ HEADING์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(empno), ์ด๋ฆ„(name), ์ง์—…(job)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    select empno as ์‚ฌ๋ฒˆ, name as ์ด๋ฆ„, job as ์ง์—… from employee;
    select empno ์‚ฌ๋ฒˆ, name ์ด๋ฆ„, job ์ง์—… from employee; (๊ณต๋ฐฑ ๊ฐ€๋Šฅ)

์ปฌ๋Ÿผ์˜ ํ•ฉ์„ฑ(Concatenation)

๋ฌธ์ž์—ด ๊ฒฐํ•ฉํ•จ์ˆ˜ concat ์‚ฌ์šฉ

  • ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ๋ฒˆ๊ณผ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ํ•˜๋‚˜์˜ ์นผ๋Ÿผ์œผ๋กœ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    SELECT concat( empno, '-', deptno) AS '์‚ฌ๋ฒˆ-๋ถ€์„œ๋ฒˆํ˜ธ' FROM employee;

์ค‘๋ณตํ–‰์˜ ์ œ๊ฑฐ

์ค‘๋ณต๋˜๋Š” ํ–‰์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ, DISTINCT ํ‚ค์›Œ๋“œ๋กœ ์ค‘๋ณตํ–‰์„ ์ œ๊ฑฐ

  • ์˜ˆ์ œ1 : ์‚ฌ์› ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ถ€์„œ๋ฒˆํ˜ธ ์ถœ๋ ฅํ•˜์‹œ์˜ค. (์‚ฌ์› ์ˆ˜๋งŒํผ ์ถœ๋ ฅ๋œ๋‹ค.)

    select deptno from employee;
  • ์˜ˆ์ œ2 : ์‚ฌ์› ํ…Œ์ด๋ธ”์˜ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    select distinct deptno from employee;

์ •๋ ฌํ•˜๊ธฐ

img

  • ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(empno), ์ด๋ฆ„(name), ์ง์—…(job)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ, ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

  • 1 alias๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ
    select empno, name, job from employee order by name;
    select empno, name, job from employee order by 2; (2๋ฒˆ์งธ col ์ด๋ž€ ์†Œ๋ฆฌ)
    2 alias๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ
    select empno as ์‚ฌ๋ฒˆ, name as ์ด๋ฆ„, job as ์ง์—… from employee order by ์ด๋ฆ„;
  • ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(empno), ์ด๋ฆ„(name), ์ง์—…(job)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ, ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

    select empno, name, job from employee order by name desc;

ํŠน์ • ํ–‰ ๊ฒ€์ƒ‰- where์ ˆ

img

  • ์‚ฐ์ˆ ๋น„๊ต ์—ฐ์‚ฐ์ž

    ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ๊ณ ์šฉ์ผ(hiredate)์ด 1981๋…„ ์ด์ „์˜ ์‚ฌ์›์ด๋ฆ„๊ณผ ๊ณ ์šฉ์ผ์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    select name, hiredate from employee where hiredate < '1981-01-01';
  • ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž

    ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ 30์ธ ์‚ฌ์›์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    select name, deptno from employee where deptno = 30;
  • IN ํ‚ค์›Œ๋“œ

    ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ 10๋˜๋Š” 30์ธ ์‚ฌ์›์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    select name, deptno from employee where deptno in (10, 30);
    select * from employee where deptno = 10 or deptno = 30;
  • LIKE ํ‚ค์›Œ๋“œ

    ์™€์ผ๋“œ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ๊ฐ’์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌ

    %: 0์—์„œ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋ƒ„

    _ : ๋‹จ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์™€์ผ๋“œ ์นด๋“œ

    ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์ด๋ฆ„์— 'A'๊ฐ€ ํฌํ•จ๋œ ์‚ฌ์›์˜ ์ด๋ฆ„(name)๊ณผ ์ง์—…(job)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    select name, job from employee where name like '%A%';
    ’A%’   A๋กœ ์‹œ์ž‘ํ•œ ์‚ฌ๋žŒ๋“ค
    ’%A’   A๋กœ ๋๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค
    ‘_A%’ ๋ฐ˜๋“œ์‹œ 2๋ฒˆ์งธ A๊ฐ€ ์˜ค๋Š” ์‚ฌ๋žŒ๋“ค

ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ

  • UCASE, UPPER (from ๋‹ค์Œ์— ํ…Œ์ด๋ธ”์ด ์—†์„ ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.)

  • LCASE. LOWER

    •  SELECT lower(name) FROM employee;
  • substring

  • LPAD, RPAD

    • select LPAD (name, 10, ‘+’) from employee;
  • TRIM, LTRIM, RTRIM

  • ABS(x) : x์˜ ์ ˆ๋Œ€๊ฐ’์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

  • MOD(n,m) % : n์„ m์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • FLOOR(x) : x๋ณด๋‹ค ํฌ์ง€ ์•Š์€ ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. BIGINT๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • CEILING(x) : x๋ณด๋‹ค ์ž‘์ง€ ์•Š์€ ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ROUND(x) : x์— ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • POW(x,y) POWER(x,y) : x์˜ y ์ œ๊ณฑ ์Šน์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • GREATEST(x,y,...) : ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • LEAST(x,y,...) : ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • CURDATE(),CURRENT_DATE : ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ YYYY-MM-DD๋‚˜ YYYYMMDD ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • CURTIME(), CURRENT_TIME : ํ˜„์žฌ ์‹œ๊ฐ์„ HH:MM:SS๋‚˜ HHMMSS ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • NOW(), SYSDATE() , CURRENT_TIMESTAMP : ์˜ค๋Š˜ ํ˜„์‹œ๊ฐ์„ YYYY-MM-DD HH:MM:SS๋‚˜ YYYYMMDDHHMMSS ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • DATE_FORMAT(date,format) : ์ž…๋ ฅ๋œ date๋ฅผ format ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • PERIOD_DIFF(p1,p2) : YYMM์ด๋‚˜ YYYYMM์œผ๋กœ ํ‘œ๊ธฐ๋˜๋Š” p1๊ณผ p2์˜ ์ฐจ์ด ๊ฐœ์›”์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ์‚ฌํ•ญ: mysql์€ ์‹œ์ž‘ idx๊ฐ€ 1d์ด๋‹ค.

CAST ํ˜•๋ณ€ํ™˜

img

cast(expression as type)
convert(____, ____)
convert(____ USING transcoding_name)
  • ์˜ˆ์ œ
mysql> select cast(now() as date);
+---------------------+
| cast(now() as date) |
+---------------------+
| 2003-09-25          |
+---------------------+
1 row in set (0.00 sec)
mysql> select cast(1-2 as unsigned);
+----------------------------+
|   cast(1-2 as unsigned)    |
+----------------------------+
|  18446744073709551615      |
+----------------------------+

๊ทธ๋ฃนํ•จ์ˆ˜

img

ex) count(boss) count(comm)

  • ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ 30์ธ ์ง์›์˜ ๊ธ‰์—ฌ ํ‰๊ท ๊ณผ ์ดํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    SELECT AVG(salary) , SUM(salary) FROM employee WHERE deptno = 30;

๊ทธ๋ฃนํ•จ์ˆ˜์™€ group by ์ ˆ

๊ทธ๋ฃนํ™”ํ•˜์ง€ ์•Š์•„๋„ ๊ทธ๋ฃนํ•ด์ฃผ๊ธฐ์— ๊ทธ๋ฃน ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ณ„ ์ง์›์˜ ๋ถ€์„œ๋ฒˆํ˜ธ, ๊ธ‰์—ฌ ํ‰๊ท ๊ณผ ์ดํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

    SELECT deptno, AVG(salary) , SUM(salary) FROM employee group by deptno;

select๋ฌธ๊ณผ join

select emp_name as  ์‚ฌ์›๋ช… dept_name as ๋ถ€์„œ๋ช… 
where employee as A 
join department as B 
where a.dept_no =b.dept_no;

๋ฐ์ดํ„ฐ ์ž…๋ ฅ (INSERT๋ฌธ)

INSERT INTO ํ…Œ์ด๋ธ”๋ช…(ํ•„๋“œ1, ํ•„๋“œ2, ํ•„๋“œ3, ํ•„๋“œ4, … ) 
    VALUES ( ํ•„๋“œ1์˜ ๊ฐ’, ํ•„๋“œ2์˜ ๊ฐ’, ํ•„๋“œ3์˜ ๊ฐ’, ํ•„๋“œ4์˜ ๊ฐ’, … );
INSERT INTO ํ…Œ์ด๋ธ”๋ช…
    VALUES ( ํ•„๋“œ1์˜ ๊ฐ’, ํ•„๋“œ2์˜ ๊ฐ’, ํ•„๋“œ3์˜ ๊ฐ’, ํ•„๋“œ4์˜ ๊ฐ’, … );
INSERT INTO employee (empno, name, deptno) VALUES (1111, ‘kang’, 100);

ํ•„๋“œ๋ช…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์€ ๋””ํดํŠธ ๊ฐ’์ด ์„ธํŒ…๋˜๋Š” ํ•„๋“œ๋Š” ์ƒ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ๋ช…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์€ ์ถ” ํ›„, ํ•„๋“œ๊ฐ€ ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์ˆ˜์ • ๋˜๋Š” ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ๋ช…์„ ์ƒ๋žตํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ํ•„๋“œ ๊ฐ’์„ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

null์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด (not-null or primary)์˜ ์ปฌ๋Ÿผ์€ ๋ฐ˜๋“œ์‹œ ๋‚˜์—ดํ•˜์—ฌ ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. (์˜ค๋ฅ˜๋ฐœ์ƒ)

  • ์˜ˆ์ œ : ROLEํ…Œ์ด๋ธ”์— role_id๋Š” 200, description์—๋Š” 'CEO'๋กœ ํ•œ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์‹œ์˜ค.

    insert into ROLE (role_id, description) values ( 200, 'CEO');
    or
    insert into ROLE values (200, 'CEO'); // col์ด 2๊ฐœ๋ผ์„œ ๊ฐ€๋Šฅํ•˜๋‹ค

๋ฐ์ดํ„ฐ ์ˆ˜์ •(UPDATE๋ฌธ)

UPDATE ํ…Œ์ด๋ธ”๋ช…
SET ํ•„๋“œ1=ํ•„๋“œ1์˜๊ฐ’, ํ•„๋“œ2=ํ•„๋“œ2์˜๊ฐ’, ํ•„๋“œ3=ํ•„๋“œ3์˜๊ฐ’, …
WHERE ์กฐ๊ฑด์‹

์กฐ๊ฑด์‹์„ ํ†ตํ•ด ํŠน์ • row๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ๊ฑด์‹(where์ ˆ)์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด ์ „์ฒด ๋กœ์šฐ๊ฐ€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋‹ˆ ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ์ œ : ROLEํ…Œ์ด๋ธ”์— role_id๊ฐ€ 200์ผ ๊ฒฝ์šฐ description์„ 'CTO'๋กœ ์ˆ˜์ •ํ•˜์‹œ์˜ค.

    UPDATE ROLE SET description = 'CTO' WHERE role_id = 200;

๋ฐ์ดํ„ฐ ์‚ญ์ œ(DELETE๋ฌธ)

DELETE FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด์‹

์กฐ๊ฑด์‹์„ ํ†ตํ•ด ํŠน์ • row๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ๊ฑด์‹(where์ ˆ)์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด ์ „์ฒด๊ฐ€ ๋‹ค ์ง€์›Œ์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ์ œ : ROLEํ…Œ์ด๋ธ”์—์„œ role_id๋Š” 200์ธ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜์‹œ์˜ค.

    DELETE FROM ROLE WHERE role_id = 200;

3) DDL(create, drop)

MySQL ๋ฐ์ดํ„ฐ ํƒ€์ž…

imgimg

ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ

create table ํ…Œ์ด๋ธ”๋ช…(
    ํ•„๋“œ๋ช…1 ํƒ€์ž… [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT],
    ํ•„๋“œ๋ช…2 ํƒ€์ž… [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT],
    ํ•„๋“œ๋ช…3 ํƒ€์ž… [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT],    
    ...........
    PRIMARY KEY(ํ•„๋“œ๋ช…)
);

๋ฐ์ดํ„ฐ ํ˜• ์™ธ์—๋„ ์†์„ฑ๊ฐ’์˜ ๋นˆ ๊ฐ’ ํ—ˆ์šฉ ์—ฌ๋ถ€๋Š” NULL ๋˜๋Š” NOT NULL๋กœ ์„ค์ •

DEFAULT ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์ง€์ •

์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์ž๋™์œผ๋กœ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฒˆํ˜ธ๋ฅผ ์œ„ํ•œ AUTO_INCREMENT์ด ์žˆ๋‹ค.

  • ์‹ค์Šต: EMPLOYEE์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ EMPLOYEE2 ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜์‹œ์˜ค.

    CREATE TABLE EMPLOYEE2(
    empno INTEGER NOT NULL PRIMARY KEY,
    name VARCHAR(10),
    job VARCHAR(9),
    boss INTEGER,
    hiredate VARCHAR(12),
    salary DECIMAL(7, 2),
    comm DECIMAL(7, 2),
    deptno INTEGER);

ํ…Œ์ด๋ธ” ์ˆ˜์ • (์ปฌ๋Ÿผ ์ถ”๊ฐ€ / ์‚ญ์ œ)

ALTER TABLE ํ…Œ์ด๋ธ”๋ช…
    ADD ํ•„๋“œ๋ช… ํƒ€์ž… [NULL|NOT NULL][DEFAULT][AUTO_INCREMENT];

ALTER TABLE ํ…Œ์ด๋ธ”๋ช…
    DROP ํ•„๋“œ๋ช…;
  • ์‹ค์Šต_์ปฌ๋Ÿผ์ถ”๊ฐ€ – EMPLOYEE2 ํ…Œ์ด๋ธ”์— ์ƒ์ผ(birthdate)์นผ๋Ÿผ์„ varchar(12)ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€ํ•˜์‹œ์˜ค.

    alter table EMPLOYEE2
    add birthdate varchar(12);
  • ์‹ค์Šต_์ปฌ๋Ÿผ์‚ญ์ œ – EMPLOYEE2 ํ…Œ์ด๋ธ”์˜ ์ƒ์ผ(birthdate)์นผ๋Ÿผ์„ ์‚ญ์ œํ•˜์‹œ์˜ค.

    alter table EMPLOYEE2
    drop birthdate;

ํ…Œ์ด๋ธ” ์ˆ˜์ • (์ปฌ๋Ÿผ ์ˆ˜์ •)

ALTER TABLE  ํ…Œ์ด๋ธ”๋ช…
    CHANGE ํ•„๋“œ๋ช… ์ƒˆํ•„๋“œ๋ช… ํƒ€์ž… [NULL|NOT NULL][DEFAULT][AUTO_INCREMENT];

change ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์นผ๋Ÿผ์„ ์ƒˆ๋กญ๊ฒŒ ์žฌ์ •์˜ (์ด๋ฆ„๋ถ€ํ„ฐ ์†์„ฑ๊นŒ์ง€ ์ „๋ถ€)

  • ์‹ค์Šต – EMPLOYEE2 ํ…Œ์ด๋ธ”์˜ ๋ถ€์„œ๋ฒˆํ˜ธ(deptno)๋ฅผ dept_no๋กœ ์ˆ˜์ •ํ•˜์‹œ์˜ค.

    alter table EMPLOYEE2
    change deptno dept_no int(11);

ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ณ€๊ฒฝ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… RENAME ๋ณ€๊ฒฝ์ด๋ฆ„;
  • ์‹ค์Šต – EMPLOYEE2 ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ EMPLOYEE3๋กœ ๋ณ€๊ฒฝํ•˜์‹œ์˜ค.

    alter table EMPLOYEE2
    rename EMPLOYEE3;

ํ…Œ์ด๋ธ” ์‚ญ์ œํ•˜๊ธฐ

DROP TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„;

์ฐธ๊ณ ๋กœ, ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” drop table ๋ช…๋ น์œผ๋กœ๋„ ํ…Œ์ด๋ธ”์ด ์‚ญ์ œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿด ๊ฒฝ์šฐ๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ ๋ฐ˜๋Œ€ ์ˆœ์„œ๋กœ ์‚ญ์ œ๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

* ํ…Œ์ด๋ธ” ์‚ญ์ œ ํ›„ desc ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • ์‹ค์Šต – EMPLOYEE2 ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜์‹œ์˜ค.

    drop table EMPLOYEE2;

'Spring > Boost Course Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2.2 ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.19
2.1 Web๊ฐœ๋ฐœ์˜ ์ดํ•ด  (0) 2020.11.19
1.5 JDBC  (0) 2020.11.19
1.4 Maven  (0) 2020.11.19
1.3 ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.09
1.1 MySQL  (0) 2020.11.09