SQLD

๐Ÿ‘‰ Table of Contents

๐Ÿ‘‰ PK, FK CONSTRAINT

in CREATE TABLE

Oracle, SQL Server ๋™์ผ

CREATE TABLE PLAYER (
  PLAYER_ID CHAR(7) NOT NULL,
  PLAYER_NAME VHARCHAR2(20) NOT NULL,
  TEAM_ID CHAR(3) NOT NULL,
  NICKNAME VHARCHAR2(30),
  CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID),
  CONSTRAINT TEAM_ID FOREIGN KEY (PLAYER) REFERENCES TEAM(TEAM_ID)
);

in ALTER TABLE

Oracle, SQL Server ๋™์ผ ```sql โ€“ PRIMARY KEY ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID);

โ€“ FOREIGN KEY ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);


# ๐Ÿ‘‰ CREATE TABLE & INDEX
```sql
-- Option 1)
CREATE TABLE EMP (
  EMP_NO      VARCHAR2(10) PRIMARY KEY,
  EMP_NM      VARCHAR2(30) NOT NULL,
  DEPT_CDODE  VARCHAR2(4) DEFAULT '0000' NOT NULL,
  JOIN_DATE   DATE NOT NULL,
  REGIST_DATE DATE NULL
);
CREATE INDEX IDX_EMP_01 ON EMP (JOIN_DATE);
-- Option 2)
CREATE TABLE EMP (
  EMP_NO      VARCHAR2(10) NOT NULL,
  EMP_NM      VARCHAR2(30) NOT NULL,
  DEPT_CDODE  VARCHAR2(4) DEFAULT '0000' NOT NULL,
  JOIN_DATE   DATE NOT NULL,
  REGIST_DATE DATE NULL
);
ALTER TABLE EMP ADD CONSTRAINT EMP_PK PRIMARY KEY (EMP_NO);
CREATE INDEX IDX_EMP_01 ON EMP (JOIN_DATE);

๐Ÿ‘‰ CONSTRAINT

CONSTRAINT (์ œ์•ฝ์กฐ๊ฑด) ์ด๋ž€ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์— ์„ค์ •ํ•˜๋Š” ์ œ์•ฝ์œผ๋กœ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋œ๋‹ค.

UNIQUE KEY (๊ณ ์œ ํ‚ค)

FOREIGN KEY (์™ธ๋ž˜ํ‚ค)

[FK] DELETE / UPDATE RULE


[FK] INSERT RULE

NOT NULL

CHECK

๐Ÿ‘‰ TABLE & COLUMN NAME

A-Z a-z 0-9 _ $ # ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

๐Ÿ‘‰ RENAME

RENAME TABLE

STADIUM ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ STADIUM_JSC๋กœ ๋ณ€๊ฒฝํ•˜๋Š” SQL์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. (ANSI ํ‘œ์ค€ ๊ธฐ์ค€)

Oracle

RENAME STADIUM TO STADIUM_JSC;


SQL Server

sp_rename 'dbo.STADIUM', 'STADIUM_JSC';

RENAME COLUMN

Oracle

ALTER TABLE STADIUM RENAME COLUMN STADIUM_ID TO STD_ID;


SQL Server

sp_rename 'dbo.STADIUM.STADIUM_ID', 'STD_ID', 'COLUMN';

๐Ÿ‘‰ DROP / TRUNCATE / DELETE

| DROP | TRUNCATE | DELETE | | โ€”โ€”โ€”โ€”- | โ€”โ€”โ€”โ€”- | โ€”โ€”โ€”โ€”- | | DDL | DDL
(์ผ๋ถ€ DML ์„ฑ๊ฒฉ ๊ฐ€์ง) | DML | | Rollback ๋ถˆ๊ฐ€๋Šฅ | Rollback ๋ถˆ๊ฐ€๋Šฅ | Commit ์ด์ „ Rollback ๊ฐ€๋Šฅ | | Auto Commit | Auto Commit | ์‚ฌ์šฉ์ž Commit | | ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ Storage๋ฅผ ๋ชจ๋‘ release | ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ Storage ์ค‘ ์ตœ์ดˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ํ• ๋‹น๋œ Storage๋งŒ ๋‚จ๊ธฐ๊ณ  release | ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ Deleteํ•ด๋„ ์‚ฌ์šฉํ–ˆ๋˜ Storage๋Š” release๋˜์ง€ ์•Š์Œ | | ํ…Œ์ด๋ธ”์˜ ์ •์˜ ์ž์ฒด๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•จ | ํ…Œ์ด๋ธ”์„ ์ตœ์ดˆ ์ƒ์„ฑ๋œ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ฌ | ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œ

๐Ÿ‘‰ DATABASE TRANSACTION

ํŠธ๋žœ์žญ์…˜์˜ 4๊ฐ€์ง€ ํŠน์ง•

ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ์„ฑ์ด ๋‚ฎ์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ 

ROLLBACK

ROLLBACK ๊ตฌ๋ฌธ์€ COMMIT๋˜์ง€ ์•Š์€ ์ƒ์œ„์˜ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์„ rollackํ•œ๋‹ค.

SAVEPOINT

SAVEPOINT(์ €์žฅ์ ) ์„ ์ •์˜ํ•˜๋ฉด ๋กค๋ฐฑํ•  ๋•Œ ํŠธ๋žœ์žญ์…˜์— ํฌํ•จ๋œ ์ „์ฒด ์ž‘์—…์„ ๋กค๋ฐฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ˜„ ์‹œ์ ์—์„œ SAVEPOINT๊นŒ์ง€ ํŠธ๋žœ์žญ์…˜์˜ ์ผ๋ถ€๋งŒ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Oracle

SAVEPOINT SVPT1;
...
ROLLBACK TO SVPT1


SQL Server

SAVE TRANSACTION SVTR1;
...
ROLLBACK TRANSACTION SVTR1;

๐Ÿ‘‰ ๋‚ด์žฅ ํ•จ์ˆ˜ (Built-in Function)

๋ฒค๋” ์ œ๊ณต ํ•จ์ˆ˜/
โ”œโ”€โ”€ ๋‚ด์žฅ ํ•จ์ˆ˜/
โ”‚   โ”œโ”€โ”€ ๋‹จ์ผํ–‰ ํ•จ์ˆ˜
โ”‚   โ””โ”€โ”€ ๋‹ค์ค‘ํ–‰ ํ•จ์ˆ˜
โ””โ”€โ”€ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜

๋‹จ์ผํ–‰ ํ•จ์ˆ˜

๋‹จ์ผํ–‰ ๊ฐ’์ด ์ž…๋ ฅ๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

๋‹จ์ผํ–‰ ํ•จ์ˆ˜๋Š” SELECT, WHERE, ORDER BY, UPDATE์˜ SET์ ˆ์— ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹ค์ค‘ํ–‰ ํ•จ์ˆ˜

์—ฌ๋Ÿฌ ํ–‰์˜ ๊ฐ’์ด ์ž…๋ ฅ๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

๋‹ค์ค‘ํ–‰ ํ•จ์ˆ˜๋Š” ๋‹จ์ผํ–‰ ํ•จ์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ๋‹จ์ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ‘‰ NULL

INSERT NULL

Oracle์—์„œ๋Š” ๊ณต๋ฐฑ ๋ฌธ์ž('')๋ฅผ INSERT ์‹œ์— ๋ฐ์ดํ„ฐ๊ฐ€ NULL๋กœ ์ž…๋ ฅ๋œ๋‹ค.

(SQL Server๋Š” ๊ณต๋ฐฑ ๋ฌธ์ž๋กœ INSERT ๋œ๋‹ค.)

INSERT INTO ์„œ๋น„์Šค VALUES ('999', '', '2015-11-11');

๋”ฐ๋ผ์„œ SELECT ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒ€์ƒ‰ํ•˜๋ฉด ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

-- ๐Ÿฅฒ BAD
SELECT * FROM ์„œ๋น„์Šค WHERE ์„œ๋น„์Šค๋ช… = '';

-- ๐Ÿ˜Ž GOOD 
SELECT * FROM ์„œ๋น„์Šค WHERE ์„œ๋น„์Šค๋ช… IS NULL;


NULL ๊ด€๋ จ ํ•จ์ˆ˜

NVL / ISNULL

Oracle: NVL / SQL Server: ISNULL

NVL(exp1, exp2)
ISNULL(exp1, exp2)

exp1 ์˜ ๊ฐ’์ด NULL์ด๋ฉด exp2 ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๋‹จ, exp1, exp2 ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์ด ๊ฐ™์•„์•ผ ํ•จ)

NULLIF

IFNULL ์ด ์•„๋‹˜์— ์ฃผ์˜

NULLIF(exp1, exp2)

๋ฐ˜ํ™˜ํ•œ๋‹ค.

COALESCE

COALESCE(exp1, exp2, ...)

NULL์ด ์•„๋‹Œ ์ตœ์ดˆ์˜ ํ‘œํ˜„์‹์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ชจ๋“  ํ‘œํ˜„์‹์ด NULL์ด๋ผ๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


NULL์ธ์ง€ ๊ฒ€์‚ฌํ•  ๋•Œ๋Š” IS NULL

NULL์ธ์ง€ ๊ฒ€์‚ฌํ•  ๋•Œ๋Š” IS NULL ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ๋‚š์ด์ง€ ๋ง์ž!

SELECT COUNT(C0L1) FROM TAB1 WHERE COL2 = NULL;


NULL์˜ ORDER BY ์ˆœ์„œ


๐Ÿ‘‰ STANDARD SQL

์ผ๋ฐ˜ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž

  1. UNION UNION
  2. INTERSECTION INTERSECT
  3. DIFFERENCE MINUS / EXCEPT
  4. PRODUCT CROSS JOIN

image

์ˆœ์ˆ˜ ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž

  1. SELECT WHERE
  2. PROJECT SELECT ๐Ÿ‘‰ CARTESIAN PRODUCT ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค
  3. JOIN JOIN
  4. DIVIDE (ํ˜„์žฌ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)

image