๐์ ์ฝ์กฐ๊ฑด์ ์ข ๋ฅ
1. primary key(๊ธฐ๋ณธํค)
2. unique key(๊ณ ์ ํค)
3. not null
4. check
5. foreign key(์ธ๋ํค)
๐ํ ์ด๋ธ ์นผ๋ผ์ ๋ํ ์ ์ ๋ณ๊ฒฝ
1. oracle
ALTER TABLE ํ ์ด๋ธ๋ช MODIFY (์ปฌ๋ผ๋ช 1 ๋ฐ์ดํฐ์ ํ [DEFAULT ์ : ADD CONSTRAIN ์ ์ฝ์กฐ๊ฑด๋ช PRIMARY KEY] [NOT NULL], ์ปฌ๋ผ๋ช 2...)
- REFERENCE ์ฐธ์กฐํ ์ธ๋ถํค ON DELET CASCADE : ๋ถ๋ชจํ ์ด๋ธ์์ ์ธ๋ถํค๊ฐ ์ญ์ ๋๋ฉด ๊ฐ์ด ์ญ์
- REFERENCE ์ฐธ์กฐํ ์ธ๋ถํค ON DELET SET NULL : ๋ถ๋ชจํ ์ด๋ธ์์ ์ธ๋ถํค๊ฐ ์ญ์ ๋๋ฉด ๋๊ฐ์ผ๋ก ์ฒ๋ฆฌ
[delete]์ ๊ฒฝ์ฐ
- casecade : ๋ถ๋ ธ ์ญ์ ์ ๊ฐ์ด ์ญ์
- set null : ๋ถ๋ชจ ์ญ์ ์ ๋๊ฐ
- set default : ๋ถ๋ชจ ์ญ์ ์ ํด๋น ํ๋ default
- restrict : ์๋ ํ ์ด๋ธ์ PK ๊ฐ์ด ์๋ ๊ฒฝ์ฐ๋ง ๋ถ๋ชจ์ญ์ ๊ฐ๋ฅ
- not action : ์ฐธ์กฐ๋ฌด๊ฒฐ์ฑ์ ์๋ฐํ๋ ์ญ์ /์์ ๋ถ๊ฐ
[insert]์ ๊ฒฝ์ฐ
- automatic : ๋ถ๋ชจํ ์ด๋ธ์ PK๊ฐ ์๋ ๊ฒฝ์ฐ PK๋จผ์ ์์ฑ ํ ์๋ ํ ์ด๋ธ์ ์ ๋ ฅ
- set null : ๋ถ๋ชจํ ์ด๋ธ์ PK๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ ๋๊ฐ
- set default : ๋ถ๋ชจํ ์ด๋ธ์ PK๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ
- dependent : ๋ถ๋ชจํ ์ด๋ธ์ PK๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ๋ ฅ ๋ถ๊ฐ(์กด์ฌํ ๋๋ง ์ ๋ ฅ๊ฐ๋ฅ)
- not action : ์ฐธ์กฐ๋ฌด๊ฒฐ์ฑ์ ์๋ฐํ๋ ์ญ์ /์์ ๋ถ๊ฐ
2. SQL SERVER
ALTER TABLE ํ ์ด๋ธ ๋ช ALTER (์ปฌ๋ผ๋ช 1 ๋ฐ์ดํฐ์ ํ [DEFAULT ์] [NOT NULL])
๐ํ ์ด๋ธ ์์ฑ์ ์ฃผ์์ฌํญ
1. ํ ์ด๋ธ๋ช ์ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ ์ ์๋ ์ด๋ฆ์ ์ฌ์ฉํ๊ณ ๋จ์ํ์ ๊ถ๊ณ ํ๋ค
2. ํ ์ด๋ธ๋ช ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ด๋ฆ๊ณผ ์ค๋ณต๋์ง ์๋๋ค
3. ํ ํ ์ด๋ธ ๋ด์์๋ ์ปฌ๋ผ๋ช ์ด ์ค๋ณต๋์ง ์๋๋ค
4. ํ ์ด๋ธ์ ์ด๋ฆ์ ์ง์ ํ๊ณ ๊ฐ ์ปฌ๋ผ๋ค์"( )"๊ดํธ๋ก ๋ฌถ์ด ์ง์ ํ๋ค
5. ๊ฐ ์ปฌ๋ผ๋ค์ ์ฝค๋ง ","๋ก ๊ตฌ๋ถ๋๊ณ , ํ ์ด๋ธ ์์ฑ๋ฌธ์ ๋์ ์ธ๋ฏธ์ฝ๋ก ; ์ผ๋ก ๋๋๋ค
์นผ๋ผ์ ๋ํด์๋ ๋ค๋ฅธ ํ ์ด๋ธ๊น์ง ๊ณ ๋ คํ์ฌ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ด์์๋ ์ผ๊ด์ฑ์๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค(๋ฐ์ดํฐ ํ์คํ)
6. ์นผ๋ผ ๋ค์ ๋ฐ์ดํฐ์ ํ์ ๊ผญ ์ง์ ๋์ด์ผ ํ๋ค
7. ํ ์ด๋ธ๋ช ๊ณผ ์นผ๋ผ๋ช ์ ๋ฐ๋์ ๋ฌธ์๋ก ์์ํด, ๋ฒค๋๋ณ๋ก ๊ธธ์ด์ ๋ํ ํ๊ณ๊ฐ ์๋ค
8. ๋ฒค๋์์ ์ฌ์ ์ ์ ์ํ ์์ฝ์ด๋ ์ธ ์์๋ค
9. A-Z, a-z, 0-9,_,$,# ๋ง ์ฌ์ฉ ๊ฐ๋ฅ
๐ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ ๋ ฅ ๋ฐฉ๋ฒ
1. INSERT INTO ํ ์ด๋ธ๋ช (COLUMN LIST) VALUES (COLUMN LIST์ ๋ฃ์ ๋ฐ์ดํฐ ๋ค)
2. INSERT INTO ํ ์ด๋ธ๋ช VALUES (COLUMN ์์์ ๋ง๋ ๋ฐ์ดํฐ ๋ค)
-> ์ฝ์ ์ปฌ๋ผ์ ๋ช ์ํ์ง ์์๋๋ ๊ผญ ๋ชจ๋ ์ปฌ๋ผ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋์ด์ผ ํ๋ค
๐์ ๋ ฅ๋ ๋ฐ์ดํฐ์ ์์
UPDATE ํ ์ด๋ธ๋ช SET ์์ ๋์ด์ผ ํ ์ปฌ๋ผ๋ค(=์ ๋ ฅ๋๋ ์๋ก์ด ๊ฐ)
๐๋ถํ์ํ ์นผ๋ผ ์ญ์
ALTER TABLE ํ ์ด๋ธ๋ช DROP COLUMN
๐TURNCATE TABLE
ํ ์ด๋ธ ์์ฒด๊ฐ ์ญ์ ๋๋ ๊ฒ์ด ์๋๊ณ , ํด๋น ํ ์ด๋ธ์ ๋ค์ด์๋ ๋ชจ๋ ํ๋ค์ด ์ ๊ฑฐ๋๊ณ ์ ์ฅ๊ณต๊ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์์ ํ ์ญ์ ํ๊ธฐ ์ํด์๋ DROP TABLE์ ์ํํด์ผ ํ๋ค
1. ์ ์ฝ์กฐ๊ฑด ์์ฑ
produce ํ ์ด๋ธ ์ ์ฝ ์กฐ๊ฑด
- ๊ธฐ๋ณธํค : prod_id : varchar2(10) not null
- prod_nm : varchar2(100) not null
- reg_dt : date not null
- regr_no : number(10) null
CREATE TABLE PRODUCT #PRODUCT ํ
์ด๋ธ ๋ง๋ค๊ธฐ
(PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100) NOT NULL,
REG_DT DATE NOT NULL,
REGR_NO NUBER(10),
CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID)); #PROD_ID๋ฅผ ๊ณ ์ ํค๋ก PRODUCT_PK์ด๋ฆ์ ์ ์ฝ์กฐ๊ฑด ๋ง๋ค๊ธฐ
2. ์ ์ฝ์กฐ๊ฑด ๋ณ๊ฒฝ ver. SQL server
(๊ธฐ๊ด๋ถ๋ฅ) ๋ถ๋ฅID : varchar(10) not null |
(๊ธฐ๊ด๋ถ๋ฅ) ๋ถ๋ฅID : varchar(10) not null |
๋ถ๋ฅ๋ช
: varchar(10) not null ๋ฑ๋ก์ผ์ : varchar(10) null |
๋ถ๋ฅ๋ช
: varchar(30) not null ๋ฑ๋ก์ผ์ : varchar(10) not null |
ALTER TABLE ๊ธฐ๊ด๋ถ๋ฅ ALTER COLUMN ๋ถ๋ฅ๋ช
VARCHAR(30) NOT NULL;
#๊ธฐ๊ด๋ถ๋ฅ์ ํ
์ด๋ธ์ ๋ถ๋ฅ๋ช
์ปฌ๋ผ์ ๋ฐ๊ฟ๊บผ์ผ, VARCHAR(30) NOT NULL
ALTER TABLE ๊ธฐ๊ด๋ถ๋ฅ ALTER COLUMN ๋ฑ๋ก์ผ์ DATE NOT NULL
๊ฐ ์ปฌ๋ผ๋ณ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํจ
์ด์ not null์ ์ ์ฝ์กฐ๊ฑด์ ์ ์งํ๋ค๊ณ ํด๋ ํ๋ฒ๋ ์ง์ ํด ์ค์ผ ํจ
3. ์ธ๋ํค
- ํ ์ด๋ธ์์ฑ์ ์ค์ ํ ์ ์๋ค
- ์ธ๋ํค ๊ฐ์ ๋ ๊ฐ์ ๊ฐ์ง ์ ์๋ค
- ํ ํ ์ด๋ธ์ ํ๋ ์ด์ ์์ฑํ ์ ์๋ค
- ์ธ๋ํค ๊ฐ์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ ๋ฐ์ ์ ์๋ค
4. ์ธ๋ํค์ ๋ถ๋ชจํ ์ด๋ธ(๊ธฐ๋ณธํค) ์ญ์ ์กฐ๊ฑด -> ์์ํ ์ด๋ธ ๋ฐ์
- REFERENCE ์ฐธ์กฐํ ์ธ๋ถํค ON DELET + ~~~
- Cascade : ๋ถ๋ชจ์ญ์ ์ ์์๋ ๊ฐ์ด ์ญ์
- set null : ๋ถ๋ชจ ์ญ์ ์ ์์์ ํด๋น ํ๋ ๋๊ฐ
- set default : ๋ถ๋ชจ ์ญ์ ์ ์์์ ํด๋น ํ๋ default
- restrict : ์์ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๊ฐ์ด ์๋๊ฒฝ์ฐ๋ง ๋ถ๋ชจํค ์ญ์ (์ผ๋ถ๋ง ์ญ์ ๊ฐ๋ฅ)
- no action : ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์๋ฐํ๋ ์ญ์ /์์ ์ก์ ์ ์ทจํ์ง ์์
5. ์ธ๋ํค์ ์์ํ ์ด๋ธ(๊ธฐ๋ณธํค) ์ถ๊ฐ์กฐ๊ฑด -> ๋ถ๋ชจํ ์ด๋ธ ๋ฐ์
- Automatic : ๋ถ๋ชจ ํ ์ด๋ธ์์ ๊ธฐ๋ณธํค๊ฐ ์๋ ๊ฒฝ์ฐ ๋ถ๋ชจํค์์ ์์ฑ ํ ์์ํ ์ด๋ธ์ ์ ๋ ฅ
- set null : ๋ถ๋ชจํ ์ด๋ธ์์ ๊ธฐ๋ณธํค๊ฐ ์๋ ๊ฒฝ์ฐ ์์ ์ธ๋ถํค๋ฅผ ๋๊ฐ์ผ๋ก ์ฒ๋ฆฌ
- ser default : ๋ถ๋ชจ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๊ฐ ์๋ ๊ฒฝ์ฐ ์์ ์ธ๋ถํค๋ฅผ ์ง์ ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ๋ ฅ
- dependent : ๋ถ๋ชจํ ์ด๋ธ์ ๊ธฐ๋ณธํค๊ฐ ์กด์ฌํ ๋๋ง ์์ํ ์ด๋ธ์ ์ ๋ ฅ
- no action : ์ฐธ์กฐ๋ฌด๊ฒฐ์ฑ์ ์๋ฐํ๋ ์ก์ ์ ์ทจํ์ง ์์
6. DELET, TURNCATE, DROP ๋ช ๋ น
- DROP ๋ช ๋ น์ด๋ ํ ์ด๋ธ ์ ์ ์์ฒด๋ฅผ ์ญ์ ํ๊ณ , TRUNCATE ๋ช ๋ น์ด๋ ํ ์ด๋ธ์ ์ด๊ธฐ ์ํ๋ก ๋ง๋ ๋ค
- TURNCATE ๋ช ๋ น์ด๋ UNDO๋ฅผ ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ผ ๋ฐ์ดํฐ๋ ์ญ์ ์ DELET๋ณด๋ค ๋น ๋ฅด๋ค
- DROP ๊ณผ TURNCATE๋ auto commit๋๊ณ , DELETE๋ ์ฌ์ฉ์ COMMIT์ผ๋ก ์ํ๋๋ค
DROP | TURNCATE | DELETE |
DDL | DDL(์ด์ง๋ง DML ์ฑ๊ฒฉ๋ ์์) | DML |
ROLLBACK ๋ถ๊ฐ๋ฅ -> auto commit | ROLLBACK ๋ถ๊ฐ๋ฅ -> auto commit | ROLLBACK ๊ฐ๋ฅ |
ํ ์ด๋ธ์ด ์ฌ์ฉํ๋ Storage ๋ชจ๋ release | ํ ์ด๋ธ์ด ์ฌ์ฉํ๋ storage ์ค ์ต์ด ํ ์ด๋ธ ์์ฑ์ด ํ ๋น๋ storage ๋ง ๋จ๊ธฐ๊ณ release | release ๋ถ๊ฐ |
ํ ์ด๋ธ์ ์ ์ ์์ฒด๋ฅผ ์์ ํ ์ญ์ | ํ ์ด๋ธ์ ์ต์ด ์์ฑ๋ ์ด๊ธฐ์ํ๋ก ๋ง๋ฆ | ๋ฐ์ดํฐ๋ง ์ญ์ |
๐ํธ๋์ญ์ ์ ํน์ง -> ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ฐ์ฐ๋จ์
1. ์์์ฑ = ํธ๋์ญ์ ์์ ์ ์๋ ์ฐ์ฐ๋ค์ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ ์ง ์๋๋ฉด ์ ํ ์คํ๋์ง ์์ ์ํ๋ก ๋จ์ ์์ด์ผ ํ๋ค
2. ์ผ๊ด์ฑ = ํธ๋์ญ์ ์ด ์คํ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ฉ์ด ์๋ชป๋์ด ์์ง ์์ผ๋ฉด ํธ๋์ญ์ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๋ชป์ด ์์ผ๋ฉด ์๋๋ค
3. ๊ณ ๋ฆฝ์ฑ = ํธ๋์ญ์ ์ด ์คํ๋๋ ๋์ค์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํฅ์ ๋ฐ์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์๋ ์๋๋ค
4. ์ง์์ฑ = ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด ๊ทธ ํธ๋์ญ์ ์ด ๊ฐฑ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ค
๐ROLLBACK
๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์ทจ์๋์ด ๋ฐ์ดํฐ์ ์ด์ ์ํ๋ก ๋ณต๊ท๋๋ฉฐ, ๊ด๋ จ๋ ํ์ ๋ํ ์ ๊ธ์ด ํ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋๋ค
-> ํ ์ด๋ธ ๋ด ์ ๋ ฅํ ๋ฐ์ดํฐ๋, ์์ ํ ๋ฐ์ดํฐ์ ๋ํ์ฌ commit ์ด์ ์๋ ๋ณ๊ฒฝ์ฌํญ์ ์ทจ์ํ ์ ์๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ
๐BEGIN TRANSACTION(TRAN)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ฐ์ฐ๋จ์
ํธ๋์ญ์ ์ ์์ํ๊ณ ์ปค๋ฐ ๋๋ ๋กค๋ฐฑ์ผ๋ก ์ข ๋ฃํ๋ค.
๋กค๋ฐฑ๊ตฌ๋ฌธ์ ๋ง๋๋ฉด ์ต์ด์ begin transaction์์ ๊น์ง rollback์ด ์ํ๋๋ค
๐์ ์ฅ์ savepoint
์ ์ํ๋ฉด ๋กค๋ฐฑํ ๋ ํธ๋์ญ์ ์ ํฌํจ๋ ์ ์ฒด ์์ ์ ๋กค๋ฐฑํ๋ ๊ฒ์ด ์๋๋ผ ํ ์์ ์์ ์ ์ฅ์ ๊น์ง ํธ๋์ญ์ ์ ์ผ๋ถ๋ง ๋กค๋ฐฑ๊ฐ๋ฅ
[ORACLE]
savepoint svpt1 ;
rollback to svpt1 ;
[SQL server]
save transaction svpt1;
rollback transaction svpnt1;
๐TOP(n) with ties ์ปฌ๋ผ
select top(2) with ties enmane, sal
from emp
order by sal desc
-> empํ ์ด๋ธ์์ sal ๋ด๋ฆผ์ฐจ์์ผ๋ก ์์ 2๊ฐ์ enmane๊ณผ sal ์ถ๋ ฅ
* ๋์ ์ด ์์ ๊ฒฝ์ฐ ๋ชจ๋ ์ถ๋ ฅ
1. ์ค๋ผํด๊ณผ SQL server์ ROLLBACK
์ต์ข val์ ID 100์ ๊ฐ์ด ์ค๋ผํด์์๋ 200, server์์๋ 100์ผ๋ก ์ถ๋ ฅ
UPDATE A SET VAL = 200 WHERE ID ='001';
ID(PK) VAL 001 100 002 200
CREATE TABLE B (ID CHAR(3) PRIMARY KEY);
ROLLBACK;
- ์ค๋ผํด์์๋ DDL๋ฌธ์ฅ ์ํ ์ ์๋์ปค๋ฐ๋๋ค
- SQL server์์๋ DDL๋ฌธ์ฅ์ํ ํ ์๋์ปค๋ฐ๋์ง ์๋๋ค
- ์ค๋ผํด์์ DDL์ํ์ ๋ด๋ถ์ ์ผ๋ก ํธ๋์ญ์ ์ ์ข ๋ฃํ๋ฏ๋ก Bํ ์ด๋ธ์ด ์์ฑ๋๋ค
- SQL server์์ CREAT TABLE ๋ฌธ์ฅ๋ TRANSACTION์ ๋ฒ์ฃผ์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ROLLBACK๋ฌธ์ฅ์ ์ํด์ ์ต์ข ์ ์ผ๋ก Bํ ์ด๋ธ์ด ์์ฑ๋์ง ์๋๋ค
์ถ์ฒ : https://hobbylists.tistory.com/entry/SQL๋ฌธ๋ฒ-3์ข ๋ฅ-์งง๊ณ -๊ตต๊ฒ-์ ๋ฆฌ-DDL-DML-DCL
'์๊ฒฉ์ฆ > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค๋ต๋ ธํธ] 1. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด2 (0) | 2024.03.09 |
---|---|
SQL ๋์ผ์ฐ์ฐ (0) | 2024.03.04 |
[์ค๋ต๋ ธํธ] 2-2. SQL ํ์ฉ (0) | 2024.03.04 |
[์ค๋ต๋ ธํธ] 2-1. SQL ๊ธฐ๋ณธ (0) | 2024.03.03 |
[์ค๋ต๋ ธํธ] 1. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด (0) | 2024.03.02 |