DBMS alter, index, view - swkim0128/PARA GitHub Wiki
-
column ์ถ๊ฐ
alter table table_name add column col1 int not null auto_increment first, add primary key(col1); -- ํ๋๋ช col1์ ํ๋๋ช col2 ๋ค์์ ์๋ก ์๊น๋๋ค. alter table table_name add column col1 varchar after col2;
first, second, third, fourth, ..., last (mysql์์๋ ์ง์๋์ง ์์ต๋๋ค.)
-
ํ ์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ
alter table table_name1 rename to table_name2;
-
์ด ์ด๋ฆ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ
alter table table_name change column col1 col2 varchar(80) ... change column col3 col4 varchar(20);
๊ธฐ์กด์ ์ปฌ๋ผ1์ ์ปฌ๋ผ2๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๋ฌด์์ด์ ์ซ์ํ ํ์ ์ผ๋ก ๋ณ๊ฒฝํ๊ฑฐ๋ ๊ธธ์ด๋ฅผ 80์ ๊ธธ์ด 20์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ฐ์ดํฐ์ ์ผ๋ถ๋ถ์ ์์คํ ์ ์์ต๋๋ค.
alter table table_name modify column col1 varchar(20);
ํ ์ด๋ธ์ ์ปฌ๋ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ง ์๊ณ ํ์ ๊ณผ ๊ธธ์ด๋ง ๋ณ๊ฒฝํฉ๋๋ค.
-
์ด ์ญ์ ๋ฐฉ๋ฒ
alter table table_name drop column col1;
-
๊ธฐ๋ณธ ํค ์ญ์ ๋ฐฉ๋ฒ
alter table table_name drop primary key; -- auto_increment๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. alter table table_name modify column col1 int; alter table table_name drop primary key; -- 2๋จ๊ณ ๋ช ๋ น์ด๋ก ์๋ ์ฆ๊ฐ๋ฅผ ์ทจ์ ํ ๊ธฐ๋ณธํค๋ฅผ ์ญ์ ํฉ๋๋ค.
-
๊ธฐ๋ณธ ํค ์ถ๊ฐ ๋ฐฉ๋ฒ
alter table table_name change column col1 col2 int not null auto_increment, add primary key(col1); -- ๋๋ alter table table_name modify column col1 int not null auto_increment, add primary key(col1);
์ถ์ฒ:
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=50after&logNo=220929419535
์ธ๋ฑ์ค๋ ์ถ๊ฐ์ ์ธ ์ฐ๊ธฐ ์์ ๊ณผ ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ํฌํจํ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฑํ์ฌ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๋๋ก ๋๊ณ ์๋ค.
B-Tree ์ธ๋ฑ์ค ๊ตฌ์กฐ
- ์ธ๋ฑ์ค ํ์์ Root โ branch โ leaf โ ๋์คํฌ ์ ์ฅ์ ์์ผ๋ก ์งํ๋ฉ๋๋ค.
- ์ธ๋ฑ์ค์ ๋ ๋ฒ์งธ ์ปฌ๋ผ์ ์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ์์กดํด์ ์ ๋ ฌ๋์ด ์์ต๋๋ค.
- ๋์คํฌ์์ ์ฝ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ๋ ๊ฒ ๋ณด๋ค ์ฑ๋ฅ์ด ํจ์ฌ ๋จ์ด์ง๋๋ค.
- ์ธ๋ฑ์ค ๊ฐฏ์๋ 3~4๊ฐ ์ ๋๊ฐ ์ ๋นํฉ๋๋ค.
dbms๋ index๋ฅผ ํญ์ ์ต์ ์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํด์ผ ์ํ๋ ๊ฐ์ ๋น ๋ฅด๊ฒ ํ์ํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋ ์ปฌ๋ผ์ insert, update, delete๊ฐ ์ํ๋๋ค๋ฉด ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ฐ์ ์ถ๊ฐ์ ์ผ๋ก ํด์ฃผ์ด์ผ ํ๋ฉฐ ๊ทธ์ ๋ฐ๋ฅธ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
- insert : ์๋ก์ด ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํจ.
- delete : ์ญ์ ํ๋ ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์์ ์ ์งํํจ.
- update : ๊ธฐ์กด์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์์ ์ฒ๋ฆฌํ๊ณ , ๊ฐฑ์ ๋ ๋ฐ์ดํฐ์ ๋ํด ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํจ.
์ฅ์
- ํ ์ด๋ธ์ ์กฐํํ๋ ์๋์ ๊ทธ์ ๋ฐ๋ฅธ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
- ์ ๋ฐ์ ์ธ ์์คํ ์ ๋ถํ๋ฅผ ์ค์ผ ์ ์๋ค.
๋จ์
- ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด DB์ ์ฝ 10%์ ํด๋นํ๋ ์ ์ฅ๊ณต๊ฐ์ด ํ์ํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ถ๊ฐ ์์ ์ด ํ์ํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ์๋ชป ์ฌ์ฉํ ๊ฒฝ์ฐ ์คํ๋ ค ์ฑ๋ฅ์ด ์ ํ๋๋ ์ญํจ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๊ท๋ชจ๊ฐ ์์ง ์์ ํ ์ด๋ธ
- INSERT, UPDATE, DELETE๊ฐ ์์ฃผ ๋ฐ์ํ์ง ์๋ ์ปฌ๋ผ
- JOIN์ด๋ WHERE ๋๋ ORDER BY์ ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ
- ๋ฐ์ดํฐ์ ์ค๋ณต๋๊ฐ ๋ฎ์ ์ปฌ๋ผ
1๊ฐ์ ์ปฌ๋ผ๋ง ์ธ๋ฑ์ค๋ฅผ ๊ฑธ์ด์ผ ํ๋ค๋ฉด, ํด๋น ์ปฌ๋ผ์ ์นด๋๋๋ฆฌํฐ(Cardinality)๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ์ก์์ผ ํ๋ค๋ ์ .
์นด๋๋๋ฆฌํฐ(Cardinality)๋ ํด๋น ์ปฌ๋ผ์ ์ค๋ณต๋ ์์น๋ฅผ ๋ํ๋ ๋๋ค.
์๋ฅผ ๋ค์ด ์ฑ๋ณ, ํ๋ ๋ฑ์ ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ๋ค๊ณ ์๊ธฐํฉ๋๋ค.
๋ฐ๋๋ก ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ๊ณ์ข๋ฒํธ ๋ฑ์ ์นด๋๋๋ฆฌํฐ๊ฐ ๋๋ค๊ณ ์๊ธฐํฉ๋๋ค.
์ฌ๋ฌ ์ปฌ๋ผ์ผ๋ก ์ธ๋ฑ์ค ๊ตฌ์ฑ ์ ๊ธฐ์ค
๊ฒฐ๋ก ์ ์ผ๋ก ์ฌ๋ฌ ์ปฌ๋ผ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ก๋๋ค๋ฉด ์นด๋๋๋ฆฌํฐ๊ฐ ๋์ ์์์ ๋ฎ์ ์์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋ฉ๋๋ค.
์ฌ๋ฌ ์ปฌ๋ผ์ผ๋ก ์ธ๋ฑ์ค ์ ์กฐ๊ฑด ๋๋ฝ
์กฐํ ์ฟผ๋ฆฌ ์ฌ์ฉ ์ ์ธ๋ฑ์ค๋ฅผ ์ก์ผ๋ ค๋ฉด ์ต์ํ ์ฒซ๋ฒ ์งธ ์ธ๋ฑ์ค ์กฐ๊ฑด์ ์กฐํ์กฐ๊ฑด์ ํฌํจ๋์ด์ผ๋ง ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค ์ปฌ๋ผ์ด ์กฐํ ์ฟผ๋ฆฌ์ ์์ผ๋ฉด ์ธ๋ฑ์ค๋ฅผ ํ์ง ์๋๋ค๋ ์ ์ ๊ธฐ์ตํ์๋ฉด ๋ฉ๋๋ค.
-- ์ธ๋ฑ์ค ์ถ๊ฐ๋ก ์์ฑ
create index idx on table_name (col1, col2, ..., colN);
-- ํ
์ด๋ธ ์์ฑ ์ ์ธ๋ฑ์ค ์์ฑ
create table `table_name` (
...
...
index idx_name (col1, col2)
-- or
unique index idx_name (col1) -- ํญ์ ์ ์ผ ํด์ผํจ.
);
-- ํ
์ด๋ธ์ ์ถ๊ฐ
alter table table_name
add index idx_name (col1);
-- ์ธ๋ฑ์ค ๋ณด๊ธฐ
show index from table_name;
-- ์ธ๋ฑ์ค ์ญ์
alter table table_name drop index idx_name
select col1, col2, ... colN
from idx_name
where table_name = 'table_name';
์ธ๋ฑ์ค๋ฅผ ๋ฆฌ๋น๋ํ๋ ์ด์
์ธ๋ฑ์ค ํ์ผ์ ์์ฑ ํ insert, update, delete๋ฑ์ ๋ฐ๋ณตํ๋ค๋ณด๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๋ค.
์์ฑ๋ ์ธ๋ฑ์ค๋ ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ฐ, ์ฝ์ , ์์ , ์ญ์ ๋ฑ์ด ์ค๋ซ๋์ ์ผ์ด๋๋ค๋ณด๋ฉด ํธ๋ฆฌ์ ํ์ชฝ์ด ๋ฌด๊ฑฐ์์ ธ ์ ์ฒด์ ์ผ๋ก ํธ๋ฆฌ์ ๊น์ด๊ฐ ๊น์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
-- ์ธ๋ฐ์ค ๋ฆฌ๋น๋
alter index idx_name rebuild;
-- ์ ์ฒด ์ธ๋ฑ์ค ๋ฆฌ๋น๋ ์ฟผ๋ฆฌ๋ฌธ
SELECT 'ALTER INDEX '||INDEX_NAME||' REBUILD; 'FROM USER_INDEXES;
์ถ์ฒ:
https://mangkyu.tistory.com/96 [MangKyu's Diary]
https://huskdoll.tistory.com/605
https://jojoldu.tistory.com/243
https://velog.io/@gillog/SQL-Index์ธ๋ฑ์ค
๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ์ ๊ทผ์ด ํ์ฉ๋ ์๋ฃ๋ง์ ์ ํ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ๋ ์ด์์ ๊ธฐ๋ณธ ํ ์ด๋ธ๋ก๋ถํฐ ์ ๋๋ ์ด๋ฆ์ ๊ฐ์ง๋ ๊ฐ์ ํ ์ด๋ธ์ด๋ค.
๋ทฐ๋ ์ ์ฅ์ฅ์น ๋ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ์ง ์์ง๋ง ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฃผ๋๋ค.
๋ทฐ๋ ๋ฐ์ดํฐ ๋ณด์ ์์ , ์ฒ๋ฆฌ๊ณผ์ ์ํ ๋ฑ ์์์ ์ธ ์์ ์ ์ํ ์ฉ๋๋ก ํ์ฉ๋๋ค.
๋ทฐ๋ ์กฐ์ธ๋ฌธ์ ์ฌ์ฉ ์ต์ํ๋ก ์ฌ์ฉ์์ ํธ์์ฑ์ ์ต๋ํ ํ๋ค.
๋ทฐ๋ ๊ธฐ๋ณธํ ์ด๋ธ๋ก๋ถํฐ ์ ๋๋ ํ ์ด๋ธ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ํ ์ด๋ธ๊ณผ ๊ฐ์ ํํ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์กฐ์๋ ๊ธฐ๋ณธ ํ ์ด๋ธ๊ณผ ๊ฑฐ์ ๊ฐ๋ค.
๋ทฐ๋ ๊ฐ์ ํ ์ด๋ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ตฌํ๋์ด ์์ง ์๋ค.
๋ฐ์ดํฐ์ ๋ ผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ์ ์ ๊ณตํ ์ ์๋ค.
ํ์ํ ๋ฐ์ดํฐ๋ง ๋ทฐ๋ก ์ ์ํด์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๊ณ ๋ช ๋ น๋ฌธ์ด ๊ฐ๋จํด์ง๋ค.
๋ทฐ๋ฅผ ํตํด์๋ง ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ํ๋ฉด ๋ทฐ์ ๋ํ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๋ ํจ์จ์ ์ธ ๊ธฐ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๊ธฐ๋ณธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ํฌํจํ ์์ฑ(์ด) ์งํฉ์ผ๋ก ๋ทฐ๋ฅผ ๊ตฌ์ฑํด์ผ์ง๋ง ์ฝ์ , ์ญ์ , ๊ฐฑ์ , ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
์ผ๋จ ์ ์๋ ๋ทฐ๋ ๋ค๋ฅธ ๋ทฐ์ ์ ์์ ๊ธฐ์ด๊ฐ ๋ ์ ์๋ค.
๋ทฐ๊ฐ ์ ์๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ด๋ ๋ทฐ๋ฅผ ์ญ์ ํ๋ฉด ๊ทธ ํ ์ด๋ธ์ด๋ ๋ทฐ๋ฅผ ๊ธฐ์ด๋ก ์ ์๋ ๋ค๋ฅธ ๋ทฐ๋ ์๋์ผ๋ก ์ญ์ ๋๋ค.
์ฅ์
๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ ๋ฆฝ์ฑ์ ์ ๊ณตํ๋ค.
๋์ผ ๋ฐ์ดํฐ์ ๋ํด ๋์์ ์ฌ๋ฌ์ฌ์ฉ์์ ์์ดํ ์์ฉ์ด๋ ์๊ตฌ๋ฅผ ์ง์ํด ์ค๋ค.
์ฌ์ฉ์์ ๋ฐ์ดํฐ๊ด๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ฒ ํด์ค๋ค.
์ ๊ทผ ์ ์ด๋ฅผ ํตํ ์๋ ๋ณด์์ด ์ ๊ณต๋๋ค.
๋จ์
๋ ๋ฆฝ์ ์ธ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์ ์๋ค.
ALTER VIEW๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค. ์ฆ ๋ทฐ์ ์ ์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ทฐ๋ก ๊ตฌ์ฑ๋ ๋ด์ฉ์ ๋ํ ์ฝ์ , ์ญ์ , ๊ฐฑ์ , ์ฐ์ฐ์ ์ ์ฝ์ด ๋ฐ๋ฅธ๋ค.
์์ฃผ ์ฐ๋ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฐ๊ณ ํ ์ด๋ธ๋ง ์กฐํํ๋ฉด ๋๋ค.
๋ณด์์ ์ ๋ฆฌํ๋ค.
๋ทฐ ํ ์ด๋ธ์ ์๋ฃ๊ฐ ์ถ๊ฐ๋๋ ๊ฒ์ ์ค์ฒด ํ ์ด๋ธ์ ๋ฐ์๋์ง ์๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ฅผ ์ํ๋ค.
-- ์์ฑ
create view view_name as select ๊ตฌ๋ฌธ;
create view view_name
as select col1, col2, ..., colN
from table_name
where condition;
-- * ์ฌ๋ฌ ํ
์ด๋ธ์ ์นผ๋ผ์ ๋ชจ์์ (join) ํ๋์ ํ
์ด๋ธ์ฒ๋ผ ์ง์ํ ์ ์์.
-- ์ญ์
drop view view_name;
with check option
-
์กฐ๊ฑด ์ปฌ๋ผ๊ฐ์ ๋ณ๊ฒฝํ์ง ๋ชปํ๊ฒ ํ๋ ์ต์
๋ทฐ๋ฅผ ์ ์ํ๋ ์๋ธ ์ฟผ๋ฆฌ๋ฌธ์ where ์ ์ ์ถ๊ฐํ์ฌ ๊ธฐ๋ณธ ํ ์ด๋ธ ์ค ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ก์ฐ(ํ)๋ง์ผ๋ก ๊ตฌ์ฑ๋ ๋ทฐ๋ฅผ ์์ฑํ ์ ์๋ค.
์ด๋ where ์ ์ with check option์ ๊ธฐ์ ํ๋ฉด ๊ทธ ์กฐ๊ฑด์ ์ํด ๊ธฐ๋ณธ ํ ์ด๋ธ์์ ์ ๋ณด๊ฐ ์ถ์ถํ๋ ๊ฒ์ผ๋ก ์กฐ๊ฑด์ ์ฌ์ฉ๋์ด์ง ์ปฌ๋ผ ๊ฐ์ ๋ทฐ๋ฅผ ํตํด์๋ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค.
create or replace view view_name
as select col1, col2, ..., colN
from table_name
where col1='' with check option;
with read only
- ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์ด๋ค ์ปฌ๋ผ์ ๋ํด์๋ ๋ทฐ๋ฅผ ํตํ ๋ด์ฉ ์์ ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ์ต์ .
create or replace view view_name
as select col1, col2, ..., colN
from table_name
where col1='' with read only;
์ถ์ฒ: