[SQL-์ค๋ผํด] ํ ์ด๋ธ ์์ฑ create, ๊ตฌ์กฐ ๋ณ๊ฒฝ alter, ์ญ์ drop, ์ฃผ์ ์ถ๊ฐ
๋ฐ์ดํฐ ์ ์์ด DDL(Data Definition Langange)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์๋ ์์ฉ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ธ์ด
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ์์ฑ, ์ญ์
์ข ๋ฅ | ๊ธฐ๋ฅ |
CREATE TABLE | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ ์ด๋ธ ์์ฑ |
ALTER TABLE | ๊ธฐ์กด ํ ์ด๋ธ์ ํ๋, ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ |
DROP TABLE | ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ ์ญ์ |
ํ ์ด๋ธ ์์ฑ CREATE TABLE
- ํ ์ด๋ธ์ ๋ํ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ์ ํ ๋นํ๋ ๊ณผ์
- ํ ์ด๋ธ์ ๋ํ ๊ตฌ์กฐ ์ ์๋ ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ ์นผ๋ผ์ ๋ฐ์ดํฐ ํ์ ๊ณผ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํ๋ ๊ณผ์
create table ํ
์ด๋ธ๋ช
( column ๋ฐ์ดํฐํ์
(๊ธธ์ด) [ ๊ธฐ๋ณธ๊ฐ ] [ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ]
[ , ... ];
ํ ์ด๋ธ ์ด๋ฆ ์ ์
- ๋ฌธ์๋ก ์์, 30์ ์ด๋ด
- ๋ฌธ์, ์ซ์, ํน์๋ฌธ์( _, $, #) ์ฌ์ฉ ๊ฐ๋ฅ
- ๋์๋ฌธ์ ๊ตฌ๋ณ ์์, ์๋ฌธ์๋ก ์ ์ฅํ๋ ค๋ฉด ๋จ์ผ์ธ์ฉ๋ถํธ '' ์ด์ฉ
- ๋์ผ ์ฌ์ฉ์๊ฐ ์์ ํ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ด๋ฆ๊ณผ ์ค๋ณต ๋ถ๊ฐ
- ์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์นผ๋ผ ์ด๋ฆ์ ๊ฐ๋ฅํ๋ฉด ๊ฐ์ ์ด๋ฆ ์ฌ์ฉ
DEFAULT ๊ธฐ๋ณธ๊ฐ
- ์นผ๋ผ์ ์ ๋ ฅ ๊ฐ์ด ์๋ต๋ ๊ฒฝ์ฐ์ NULL ๋์ ์ ๋ ฅ๋๋ ๊ธฐ๋ณธ ๊ฐ์ ์ง์ ํ๋ ๊ธฐ๋ฅ
- ๊ธฐ๋ณธ๊ฐ : ๋ฆฌํฐ๋ด ๊ฐ, ํํ์, SQLํจ์, SYSDATE, USER
- ์นผ๋ผ์ด๋ ์์ฌ์นผ๋ผ์ ์ฌ์ฉํ ์ ์์
ํ ์ด๋ธ ์์ฑ ํ์ธ
DESC
- ํ ์ด๋ธ์ ์์ฑ ์ฌ๋ถ์ ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ํ์ธํ๊ธฐ ์ํ ๋ช ๋ น์ด
- ์นผ๋ผ ์ด๋ฆ, ๋ฐ์ดํฐ ํ์ ๊ณผ ํฌ๊ธฐ, NOT NULL ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด
DESC[RIBE] ํ
์ด๋ธ๋ช
;
์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ ํ ์ด๋ธ ์์ฑ
CREATE TABLE AS ์๋ธ์ฟผ๋ฆฌ
- CREATE TABLE ๋ช ๋ น๋ฌธ์์ ์๋ธ์ฟผ๋ฆฌ ์ ์ ์ด์ฉํ์ฌ ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํด ์๋ก์ด ํ ์ด๋ธ ์์ฑ ๊ฐ๋ฅ
- CREATE TABLE ๋ช ๋ น๋ฌธ์์ ์ง์ ํ ์นผ๋ผ ์, ๋ฐ์ดํฐ ํ์ ๊ณผ ๋ฐ๋์ ์ผ์น
- ์นผ๋ผ ์ด๋ฆ์ ๋ช ์ํ์ง ์์ ๊ฒฝ์ฐ ์๋ธ์ฟผ๋ฆฌ ์นผ๋ผ ์ด๋ฆ๊ณผ ๋์ผ
- ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ NOT NULL ์กฐ๊ฑด๋ง ๋ณต์ฌ
๊ธฐ๋ณธํค, ์ฐธ์กฐํค์ ๊ฐ์ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉ์์ ์ฌ์ ์ ํ์
- DEFAULT ์ต์ ์์ ์ ์ํ ๊ฐ์ ๊ทธ๋๋ก ๋ณต์ฌ
create table ํ
์ด๋ธ๋ช
[ ์นผ๋ผ๋ช
[ , ์นผ๋ผ๋ช
...]]
AS ์๋ธ์ฟผ๋ฆฌ;
๊ธฐ์กด ํ
์ด๋ธ ๊ตฌ์กฐ ๋ณต์ฌ
- ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ ํ ์ด๋ธ ์์ฑ ์ ๋ฐ์ดํฐ๋ ๋ณต์ฌํ์ง ์๊ณ , ๊ธฐ์กด ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ง ๋ณต์ฌ
- ์๋ธ์ฟผ๋ฆฌ์ WHERE ์กฐ๊ฑด์ ์ ๊ฑฐ์ง์ด ๋๋ ์กฐ๊ฑด์ ์ง์ ํ์ฌ ์ถ๋ ฅ๊ฒฐ๊ณผ ์งํฉ์ด ์์ฑ๋์ง ์๋๋ก ์ง์
create table ํ
์ด๋ธ๋ช
as select *
from source_table
where ๊ฑฐ์ง์ด ๋๋ ์กฐ๊ฑด;
๊ฑฐ์ง์ด ๋๋ ์กฐ๊ฑด ์) where 1=2
ํ ์ด๋ธ ๊ตฌ์กฐ ๋ณ๊ฒฝ ALTER TABLE
- ์นผ๋ผ ์ถ๊ฐ, ์ญ์ , ํ์ ์ด๋ ๊ธธ์ด์ ์ฌ์ ์
์นผ๋ผ ์ถ๊ฐ
ALTER TABLE ... ADD
- ์ถ๊ฐ๋ ์นผ๋ผ์ ํ ์ด๋ธ์ ๋ง์ง๋ง ๋ถ๋ถ์ ์์ฑ, ์์น ์ง์ ๋ถ๊ฐ๋ฅ
- ์ถ๊ฐ๋ ์นผ๋ผ์๋ ๊ธฐ๋ณธ ๊ฐ ์ง์ ๊ฐ๋ฅ
- ์์ ํ ํ ์ด๋ธ์ ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ฉด ์นผ๋ผ ๊ฐ์ NULL๋ก ์ ๋ ฅ
alter table ํ
์ด๋ธ๋ช
add ( ์นผ๋ผ ๋ฐ์ดํฐํ์
(๊ธธ์ด) [ ๊ธฐ๋ณธ๊ฐ ] [ , ์นผ๋ผ ๋ฐ์ดํฐํ์
(๊ธธ์ด) ...]);
์นผ๋ผ ์ญ์
ALTER TABLE ... DROP COLUMN
- ํ ์ด๋ธ ๋ด์ ํน์ ์นผ๋ผ๊ณผ ์นผ๋ผ์ ๋ฐ์ดํฐ ์ญ์
- 2๊ฐ ์ด์์ ์นผ๋ผ์ด ์กด์ฌํ๋ ํ ์ด๋ธ์์๋ง ์ญ์ ๊ฐ๋ฅ
- ํ๋์ ์นผ๋ผ๋ง ์ญ์ ๊ฐ๋ฅ
alter table ํ
์ด๋ธ๋ช
drop column ์นผ๋ผ๋ช
;
์นผ๋ผ ๋ณ๊ฒฝ
ALTER TABLE ... MODIFY
- ํ ์ด๋ธ์์ ์นผ๋ผ์ ํ์ , ํฌ๊ธฐ, ๊ธฐ๋ณธ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ๊ธฐ์กด์ ์นผ๋ผ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์นผ๋ผ ํ์ ์ด๋ ํฌ๊ธฐ ๋ณ๊ฒฝ ์์
- ๊ธฐ์กด์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ํ์ ๋ณ๊ฒฝ์ CHAR์ VARCHAR2 ๋ด์์๋ง ๊ฐ๋ฅ
- ๊ธฐ๋ณธ ๊ฐ์ ๋ณ๊ฒฝ์ ๋ณ๊ฒฝ ํ์ ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ๋ถํฐ ์ ์ฉ
alter table ํ
์ด๋ธ๋ช
modify ( ์นผ๋ผ๋ช
๋ฐ์ดํฐํ์
(๊ธธ์ด) [ ๊ธฐ๋ณธ๊ฐ ] [ , ์นผ๋ผ๋ช
๋ฐ์ดํฐํ์
(๊ธธ์ด) ... ]);
ํ ์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ
RENAME ... TO ...
- ๊ฐ์ฒด์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ DDL ๋ช ๋ น๋ฌธ
- ๋ทฐ, ์ํ์ค, ๋์์ด ๋ฑ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ์ด๋ฆ ๋ณ๊ฒฝ ๊ฐ๋ฅ
rename ์ ํ
์ด๋ธ๋ช
to ์ ํ
์ด๋ธ๋ช
ํ ์ด๋ธ ์ญ์ DROP TABLE
ํ ์ด๋ธ ์ญ์
DROP TABLE
- ๊ธฐ์กด ํ ์ด๋ธ๊ณผ ๋ฐ์ดํฐ ๋ชจ๋ ์ญ์
- ์ญ์ ๋ ํ ์ด๋ธ ์นผ๋ผ์ ๋ํด ์์ฑ๋ ์ธ๋ฑ์ค๋ ํจ๊ป ์ญ์
- ์ญ์ ๋ ํ ์ด๋ธ๊ณผ ๊ด๋ จ๋ ๋ทฐ์ ๋์์ด 'invalid' ์ํ
- ์ญ์ ํ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ ๊ณ ์ ํค๋ฅผ ๋ซ๋ฅธ ํ ์ด๋ธ์์ ์ฐธ์กฐํ๊ณ ์๋ ๊ฒฝ์ฐ ์ญ์ ๋ถ๊ฐ๋ฅ
์ฐธ์กฐํ๋ ํ ์ด๋ธ(์์ ํ ์ด๋ธ) ๋จผ์ ์ญ์
DROP TABLE ๋ช ๋ น๋ฌธ ๋ง์ง๋ง์ CASCADE CONSTRAINTS ์ต์ ์ฌ์ฉํ์ฌ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ๋์์ ์ญ์
drop table ํ
์ด๋ธ๋ช
[ cascade constraints ];
- cascade constraints : ์ญ์ ๋์ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ ๊ณ ์ ํค๋ฅผ ์ฐธ์กฐํ๋ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ๋์์ ์ญ์ ํ๊ธฐ ์ํ ์ต์
TRUNCATE ๋ช ๋ น๋ฌธ
- ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๊ทธ๋๋ก ์ ์งํ๊ณ , ํ ์ด๋ธ์ ๋ฐ์ดํฐ์ ํ ๋น๋ ๊ณต๊ฐ๋ง ์ญ์
- ํ ์ด๋ธ์ ์์ฑ๋ ์ ์ฝ์กฐ๊ฑด๊ณผ ์ฐ๊ด๋ ์ธ๋ฑ์ค, ๋ทฐ, ๋์์ด๋ ์ ์ง
truncate table ํ
์ด๋ธ๋ช
;
+ DELETE ๋ช ๋ น๋ฌธ VS TRUNCATE ๋ช ๋ น๋ฌธ
DELETE ๋ช ๋ น๋ฌธ
- ๋ฐ์ดํฐ ์กฐ์์ด DML
- ๊ธฐ์กด ๋ฐ์ดํฐ๋ง ์ญ์ ํ๋ ๋ช ๋ น, ROLLBACK ๊ฐ๋ฅ
- WHERE ์ ์ ์ด์ฉํ์ฌ ํน์ ํ๋ง ์ญ์ ๊ฐ๋ฅ
TRUNCATE ๋ช ๋ น๋ฌธ
- ๋ฐ์ดํฐ ์ ์์ด DDL
- ๊ธฐ์กด ๋ฐ์ดํฐ ์ญ์ ๋ฟ ์๋๋ผ, ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ ๊ณต๊ฐ๊น์ง ๋ฐํ
- DDL์ด๋ฏ๋ก ROLLBACK ๋ถ๊ฐ๋ฅ
- WHERE ์ ์ ์ด์ฉํ์ฌ ํน์ ํ๋ง ์ญ์ ๋ถ๊ฐ๋ฅ
+ ALTER TABLE .. DROP COLUMN VS DROP TABLE
ALTER TABLE ... DROP COLUMN
- ํ ์ด๋ธ ๋ด์ ํน์ ์นผ๋ผ๊ณผ ์นผ๋ผ์ ๋ฐ์ดํฐ ์ญ์
DROP TABLE
- ๊ธฐ์กด ํ ์ด๋ธ๊ณผ ๋ฐ์ดํฐ ๋ชจ๋ ์ญ์
์ฃผ์ ์ถ๊ฐ
์ฃผ์ ์ถ๊ฐ
COMMENT ON TABLE ... IS
- ํ ์ด๋ธ์ด๋ ์นผ๋ผ์ ์ต๋ 2000 ๋ฐ์ดํธ๊น์ง ์ฃผ์ ์ถ๊ฐ ๊ฐ๋ฅ
> ํ ์ด๋ธ์ ์ฃผ์ ์ถ๊ฐ
comment on table ํ
์ด๋ธ๋ช
is '์ฃผ์';
> ์นผ๋ผ์ ์ฃผ์ ์ถ๊ฐ
comment on column ํ
์ด๋ธ๋ช
.์นผ๋ผ๋ช
is '์ฃผ์';
์ถ๊ฐ๋ ์ฃผ์ ํ์ธ
- ALL_COL_COMMENTS, USER_COL_COMMENTS, ALL_TAB_COMMENTS
- ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ ์ง์ -> ๋๋ฌธ์๋ก ๊ฒ์!!
ALL_COL_COMMENTS
- ํ์ฌ ์ฌ์ฉ์๊ฐ ์ก์ธ์ค ํ ์ ์๋ ํ ์ด๋ธ ์นผ๋ผ ์กฐํ (์ด๋ฆ, ์นผ๋ผ๋ช )
select *
from all_col_commnets
where table_name = '๋๋ฌธ์ ํ
์ด๋ธ๋ช
';
USER_COL_COMMENTS
- ํ์ฌ ์ฌ์ฉ์์ ์คํค๋ง์ ์๋ ํ ์ด๋ธ ์นผ๋ผ ์กฐํ
select *
from user_col_commnets
where table_name = '๋๋ฌธ์ ํ
์ด๋ธ๋ช
';
ALL_TAB_COMMENTS
- ๋ชจ๋ ํ ์ด๋ธ ์ด๋ฆ ํ์ธ
select *
from all_tab_comments
where table_name = '๋๋ฌธ์ ํ
์ด๋ธ๋ช
'
์ฐธ๊ณ ๋์ : ์ค๋ผํด ์ค์ฌ์ SQL๋ฐฐ์ํฐ, ์ฐ์ฉํ ์ธ ๊ณต์ , ์๋ฅ์ถํ์ฌ, 2007๋