ํ์ต ๋ด์ฉ
- SUB QUERY : QUERY ์์ QUERY
ํ๊ฐ์ ํ(ROW, RECORD)์์ ๊ฒฐ๊ณผ ๊ฐ์ด ๋ฐํ๋๋ QUERY
SELECT ๋จ์ผ ROW ๋จ์ผ COLUMN ์ด์ด์ผ ํ๋ค (์ฐ์ถ๋๋ ๋ฐ์ดํฐ๋ ํ๊ฐ, ์ปฌ๋ผ๋ ํ๊ฐ)
FROM ๋ค์ค ROW ๋ค์ค COLUMN ๊ฐ๋ฅ
WHERE ๋ค์ค ROW ๋ค์ค COLUMN ๊ฐ๋ฅ
-- SELECT
SELECT employee_id, first_name,
(SELECT first_name
FROM employees
WHERE employee_id = 100)
FROM employees;
-- FROM
SELECT employee_id, first_name
FROM (SELECT employee_id, first_name
FROM employees
WHERE department_ID = 100)
WHERE salary > 8000;
-- WHERE
-- ํ๊ท ๊ธ์ฌ๋ณด๋ค ๋ง์ด ๋ฐ๋ ์ฌ์
SELECT
*
FROM employees
WHERE SALARY > (SELECT AVG(SALARY)
FROM employees);
- ํน์ ์ฟผ๋ฆฌ
- CASE (== SWITCH ๋ฌธ์ด๋ ๊ฐ๋ค. )
์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ๊ฐ์ด๋ ์ปฌ๋ผ์ผ๋ก ์ถ์ถ ํ ์ ์๋๋ก ๋์์ค๋ค.
CASE~ WHEN~ THEN~ ELSE (END๋ก ๋๋ด์ผ ํ๋ค.)
SELECT employee_id, first_name, phone_number,
CASE SUBSTR(PHONE_NUMBER, 1, 3)
WHEN '515' THEN '์์ธ'
WHEN '590' THEN '๋ถ์ฐ'
WHEN '650' THEN '๊ด์ฃผ'
ELSE '๊ธฐํ'
END AS ์ง์ญ
FROM employees;
-- WHEN ์์ชฝ์ ๋ชจ๋ ์์ฑ๋ ๊ฐ๋ฅ (์, ์๋ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.)
SELECT employee_id, first_name, phone_number,
CASE
WHEN SUBSTR(PHONE_NUMBER, 1, 3) = '515' THEN '์์ธ'
WHEN SUBSTR(PHONE_NUMBER, 1, 3) = '590' THEN '๋ถ์ฐ'
WHEN SUBSTR(PHONE_NUMBER, 1, 3) = '650' THEN '๊ด์ฃผ'
ELSE '๊ธฐํ'
END AS ์ง์ญ
FROM employees;
- DECODE
CASE ๋ฌธ๊ณผ ๊ฐ์ ์ด์ ๋ก ์ฌ์ฉ๋๋ฉฐ ๋ง์ด ์ฐ์ธ๋ค.
SELECT employee_id, first_name, phone_number,
DECODE(SUBSTR(PHONE_NUMBER, 1, 3),
'515', '์์ธ',
'590', '๋ถ์ฐ',
'650', '๊ด์ฃผ',
'๊ธฐํ') AS ์ง์ญ
FROM employees;
- UNION (ํฉ์งํฉ)
SELECT job_id
FROM employees
WHERE job_id IN('AD_VP', 'FI_ACCOUNT')
UNION ALL
SELECT job_id
FROM JOBS
WHERE job_id IN('AD_VP', 'FI_ACCOUNT');
- INTERSECT (๊ต์งํฉ)
SELECT employee_id -- ๋งค๋์ ๋ง
FROM employees
INTERSECT
SELECT manager_id
FROM employees;
- MINUS (์ฐจ์งํฉ)
SELECT employee_id -- ์ฌ์๋ค๋ง
FROM employees
MINUS
SELECT manager_id
FROM employees;
- ๋ถ์ ํจ์
์์ ํจ์
RANK() | 1 2 3 3 5 6 (๊ณต๋ 3๋ฑ์ด 2๋ช ์ด๋ฉด ๊ทธ ๋ค์์ 5๋ฑ์ผ๋ก) |
DENSE_RANK() | 1 2 3 3 4 5 |
ROW_NUMBER() | 1 2 3 4 5 6 |
ROWNUM |
์ฌ์ฉ ์ด์ : ์์๋ฅผ ๋ฒํธ๋ก ์ค์ ํ๊ธฐ ์ํด
- ๋์ค์ ๊ฒ์ํ 10๊ฐ , 20๊ฐ ์๋ผ์ฌ๋ ์ฌ์ฉํ๋ ๊ตฌ๋ฌธ ํ์์ด๋ค.
SELECT RNUM, employee_id, first_name, salary -- 3. ๋ฒ์ ์ง์
FROM
(SELECT ROWNUM AS RNUM, employee_id, first_name, salary -- 2. ๋ฒํธ ์ค์
FROM
(SELECT employee_id, first_name, salary -- 1. ๊ธ์ฌ์ ์์ ์ ๋ ฌ
FROM employees
ORDER BY salary DESC)
)
WHERE RNUM > 10 AND RNUM <= 20;
- JOIN
๋๊ฐ ์ด์์ ํ
์ด๋ธ์ ์ฐ๊ฒฐํด์ ๋ฐ์ดํฐ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ณดํต ๋ ๊ฐ์ด์์ ํ(ROW)๋ค์ ๊ณตํต๋ ๊ฐ ๊ธฐ๋ณธํค, ์ธ๋ํค๋ฅผ ์ฌ์ฉํด์ Joinํ๋ค.
๊ธฐ๋ณธ ํค(Primary Key) : ํ
์ด๋ธ์์ ์ค๋ณต์ด ๋์ง ์๋ ํค
์ธ๋ ํค(Foreign Key) : ๋ค๋ฅธ ํ
์ด๋ธ์์ PK, UK์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
JOIN ์ข
๋ฅ (์ค์๋)
inner Join = ๊ต์งํฉ *****
full outer Join = ํฉ์งํฉ
cross Join
outer Join
Left ***
Right ***
self Join *****
- INNER JOIN (๋ด๋ถ์กฐ์ธ)
SELECT employee_id, first_name,
e.department_id, d.department_id,
department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id;
- CROSS JOIN : ํ๋ํ๋ ์กฐ์ธ์ ๋ค ์ํจ๋ค. ์์ด ๋ฐฉ๋ํด์ง. (๊ฑฐ์ ์ฐ์ง ์์)
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees E, departments D;
- FULL OUTER JOIN : ์ ์ฒด๋ฅผ ์ถ๋ ฅ(ํฉ์งํฉ)
ANSI ์ฟผ๋ฆฌ
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees E FULL OUTER JOIN departments D
ON E.DEPARTMENT_ID = d.department_id;
ORACLE์๋ ๋ฌธ๋ฒ์ด ๋ฐ๋ก์๋ค. ๊ทธ๋์ LEFT OUTER JOIN + RIGHT OUTER JOIN ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋๋ค.
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees E, departments D
WHERE E.department_id = D.department_id(+) -- LEFT OUTER JOIN
UNION -- ๊ณต์
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees E, departments D
WHERE E.department_id(+) = D.department_id; -- RIGHT OUTER JOIN
- OUTER JOIN (์ธ๋ถ์กฐ์ธ)
LEFT : ์ผ์ชฝ์ ์๋ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ๊ณผ ๋งค์นญํ๊ณ , ๋งค์นญ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ NULL๋ก ํ์ํ๋ค.
(์ฝ๊ฒ ๋งํด, ์ค๋ฅธ์ชฝ ํ ์ด๋ธ ๊ฐ์ด NULL์ด์ด๋ ์ผ์ชฝ ํ ์ด๋ธ ๊ฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ค.)
( LEFT ๋ฉด ๋ฑํธ์ ์ค๋ฅธ์ชฝ์ (+) )
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees E, departments D
WHERE E.department_id = D.department_id(+);
RIGHT๋ (+) ๋ฅผ ์ผ์ชฝ์ผ๋ก!
- ์ฐจ์งํฉ
OUTER JOIN์ ์ด์ฉํ ๋ฐฉ๋ฒ์ผ๋ก,
์งํฉ A(์ผ์ชฝ ํ ์ด๋ธ) - B(์ค๋ฅธ์ชฝ ํ ์ด๋ธ)์
LEFT OUTER JOIN + IS NULL๋ก ๊ตฌํ ์ ์๋ค.
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees E, departments D
WHERE E.department_id = D.department_id(+)
AND D.department_id IS NULL; -- NULL๊ฐ์ด๋ผ๋๊ฑด ๊ฒฐ๊ตญ ๊ต์งํฉ์ ์ฑ๋ฆฝ๋์ง ์์ ๊ฒ์ด๋ฏ๋ก ์ฐจ์งํฉ์ ๊ตฌํ๊ฒ ๋๋ค.
- SELF JOIN : ๋์ผํ ํ ์ด๋ธ์์ JOIN
SELECT a.employee_id, a.first_name,
a.manager_id, b.employee_id,
b.first_name
FROM employees A, employees B -- A:์ฌ์ B:์์ฌ (๊ฐ์ ํ
์ด๋ธ์ด์ง๋ง ๋ค๋ฅธ ํ
์ด๋ธ์ด๋ผ ์๊ฐํ๊ณ ์กฐ์ธ)
WHERE a.manager_id = b.employee_id;
- ๊ณ์ธตํ ๊ตฌ์กฐ ์ค๋ฆ, ๋ด๋ฆผ
CONNECT BY ๋ฌธ์ ๋ฑํธ๊ธฐ์ค PRIOR์ ์์น์ ๋ฐ๋ผ ์ํฅ์, ํํฅ์์ด ๊ฒฐ์ ๋๋ค.
(์ด ๋ถ๋ถ์ ์ฐ๊ด๋ ๋ฌธ๋ฒ START WITH~ , LEVEL ๋ฑ์ด ์์ผ๋ ๋ ๊ณต๋ถํ ๊ฒ)
SELECT a.employee_id, a.first_name AS "์ฌ์",
a.manager_id AS "์ฌ์์ ์์ฌ" , b.employee_id,
b.first_name AS "์์ฌ"
FROM employees A, employees B
WHERE a.manager_id = b.employee_id(+) -- LEFT
--CONNECT BY PRIOR A.manager_id = A.employee_id; -- ์ํฅ์
CONNECT BY A.manager_id = PRIOR A.employee_id; -- ํํฅ์
- ํ ์ด๋ธ ์คํ์ด์ค ์์ฑ
์ค๋ผํด ํ๋ก๊ทธ๋จ์ ํตํด ์ฟผ๋ฆฌ๋ฌธ ์์ด๋ ์ฝ๊ฒ ์์ฑ ๊ฐ๋ฅํ์ง๋ง, ๊ธฐ๋ก์ฑ์ ์ํด ์ฟผ๋ฆฌ๋ฌธ์ ๋ ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
CREATE TABLESPACE TABLESPACE2
DATAFILE 'D:\TMP\TEST_TEST1.DBF' SIZE 10M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED -- ์ถ๊ฐ๋๋ ์ฉ๋
LOGGING
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
DDL(Data Definition Language) : ๋ฐ์ดํฐ ์ ์ ์ธ์ด
ํ ์ด๋ธ์ด๋ ๊ด๊ณ์ ๊ตฌ์กฐ๋ฅผ ์์ฑ
CREATE, ALTER, DROP
- ์ด๋ฆ ๋ณ๊ฒฝ
ALTER TABLESPACE TABLESPACE2
RENAME TO TEST_TBS_NEW;
- ์ฉ๋ ๋ณ๊ฒฝ
ALTER DATABASE
DATAFILE 'D:\tmp\TEST_TEST1.DBF' RESIZE 7M;
- ํ ์ด๋ธ ์์ฑ
CREATE TABLE TB_TEST01(
COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
COL3 VARCHAR2(10)
);
-* ํ ์ด๋ธ ๋ณต์ : ๋ฐ์ดํฐ ํฌํจ
CREATE TABLE TB_TEST03
AS
SELECT *
FROM JOBS;
-* ํ ์ด๋ธ ๋ณต์ : ๋ฐ์ดํฐ ๋ฏธํฌํจ
CREATE TABLE TB_TEST04
AS
SELECT *
FROM JOBS
WHERE 1=2;
- ํ ์ด๋ธ ๋ณต์ : N๊ฐ์ ์ปฌ๋ผ๋ง
CREATE TABLE TB_TEST05("์
๋ฌด๋ฒํธ", "์
๋ฌด๋ช
")
AS
SELECT JOB_ID, JOB_TITLE
FROM JOBS;
- ํ ์ด๋ธ๋ช ์์
ALTER TABLE TB_TEST04
RENAME
TO
TB_TEST99;
- ์ปฌ๋ผ 1๊ฐ ์ถ๊ฐ
ALTER TABLE TB_TEST99
ADD
COL_NEW1 VARCHAR2(30);
- ์ปฌ๋ผ ์ฌ๋ฌ๊ฐ ์ถ๊ฐ
ALTER TABLE TB_TEST99
ADD
(COL_NEW2 NUMBER, COL_NEW3 DATE);
- ์ปฌ๋ผ 1๊ฐ ์์
ALTER TABLE TB_TEST99
MODIFY
COL_NEW1 VARCHAR2(20);
- ์ปฌ๋ผ ์ฌ๋ฌ๊ฐ ์์
ALTER TABLE TB_TEST99
MODIFY
(COL_NEW2 VARCHAR2(10), COL_NEW3 NUMBER);
- ์ปฌ๋ผ ์ญ์
ALTER TABLE TB_TEST99
DROP
COLUMN COL_NEW1;
- ๋ค์ค ์ปฌ๋ผ ์ญ์
ALTER TABLE TB_TEST99
DROP
(COL_NEW2, COL_NEW3);
- ์ปฌ๋ผ๋ช ์์
ALTER TABLE TB_TEST99
RENAME
COLUMN
JOB_ID TO JOBNUM;
- ํ ์ด๋ธ ์ญ์
(CASCADE CONSTRAINTS ๋ ์๊ณ ์์.)
DROP TABLE TB_TEST99;
DROP TABLE TB_TEST
CASCADE CONSTRAINTS; -- ๋ฌด๊ฒฐ์ฑ๊น์ง ์์ ํ ์ง์์ง๋ค.
- (์ฐธ๊ณ ) ํด์งํต ๋น์ฐ๊ธฐ
PURGE RECYCLEBIN;
DML (Data Manipulation Language) : ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด
ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๊ฒ์, ์ฝ์ , ์์ , ์ญ์
SELECT, UPDATE, DELETE, INSERT
SELECT (๋ฐ์ดํฐ ๊ฒ์)
(SELECT ๋ฌธ๋ฒ์ ๋๋ฌด ๋ง์ด ์จ๋์์ ์๋ต)
- INSERT (๋ฐ์ดํฐ ์ฝ์ )
์ปฌ๋ผ์ ๊ฐ์, ์๋ฃํ๋ง ์ ๊ฒฝ์ฐ๋ฉด ์ด๋ ต์ง ์๋ค.
INSERT INTO TB_TEST(DEPTNO, DEPTNAME, MGRID, LOCID)
VALUES(10, '๊ธฐํ๋ถ', 100, 120);
INSERT INTO TB_TEST(DEPTNO, DEPTNAME)
VALUES(20, '๊ด๋ฆฌ๋ถ');
INSERT INTO TB_TEST -- ์ปฌ๋ผ์ด๋ฆ์ ์ ์ด์ฃผ์ง ์์๋๋ ์๋์ผ๋ก ๋ง์ถฐ์ ๋ค์ด๊ฐ๋ค.
VALUES(30, '์ ์ฐ๋ถ', 300, 230); --ํ์ง๋ง ๋ฐ๋์ ์ปฌ๋ผ์ ๊ฐ์์ ๋ง์ถฐ์ ์ ์ด์ค์ผ ์ฝ์
์ด ๊ฐ๋ฅํ๋ค.
INSERT INTO TB_TEST(DEPTNAME, DEPTNO, LOCID, MGRID) -- ์์๊ฐ ๋ฐ๋์ด๋ ์ฝ์
๊ฐ๋ฅ
VALUES('๊ฒฝ๋ฆฌ๋ถ', 40, 210, 150);
INSERT INTO TB_TEST(DEPTNO, DEPTNAME, MGRID, LOCID)
VALUES('50', '๊ฐ๋ฐ๋ถ', 250, 110); -- ์ซ์๊ฐ ๋ฌธ์์ด๋ก ๋ค์ด๊ฐ๋ ์ฝ์
๊ฐ๋ฅ
- DELETE (๋ฐ์ดํฐ ์ญ์ )
DELETE FROM TB_TEST
WHERE DEPTNAME = '์ ์ฐ๋ถ';
DELETE FROM TB_TEST
WHERE MGRID IS NULL;
- UPDATE (๋ฐ์ดํฐ ์์ )
UPDATE TB_TEST
SET MGRID = 120
WHERE DEPTNO = 40;
UPDATE TB_TEST
SET MGRID = 300, LOCID = 270
WHERE DEPTNAME = '๊ฐ๋ฐ๋ถ';
๋ฌด๊ฒฐ์ฑ(Integrity)
DB์ ์ ์ฅ๋ ๊ฐ๋ค์ด ์ ํํ๊ณ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ์์ ๋ํ๋ด๋ ์๋ฏธ.
DB๋ ๋ฌด๊ฒฐ์ฑ์ด ๋ณด์ฅ๋๋๋ก ์ฌ๋ฌ ๊ฐ์ฒด์ ๊ท์ ์ ๋ถ์ฌํ์ฌ ์ด์ํ๋ค.
์ ์ฝ ์กฐ๊ฑด(Constraint) : COLUMN์ ์ง์ ํ๋ ์ฑ์ง.
1. Primary key (PK) : ๊ธฐ๋ณธ ํค. NULL๊ฐ X. ์ค๋ณต๊ฐ X. ex) ID, ์ฃผ๋ฏผ๋ฒํธ
2. Unique key : ๊ณ ์ ํค. NULL๊ฐ ํ์ฉ. ์ค๋ณต๊ฐ X. ex) ์ด๋ฉ์ผ์ฃผ์
3. Foreign key (FK) : ์ธ๋ ํค. NULL๊ฐ ํ์ฉ. ํ
์ด๋ธ๊ณผ ํ
์ด๋ธ์ ์ฐ๊ฒฐ(JOIN)ํ๋ ๋ชฉ์ .
(์ธ๋ ํค๋ก ์ค์ ๋ ์ปฌ๋ผ์ ์ฐ๊ฒฐ๋ ํ
์ด๋ธ์์ PK๋ UK๋ก ์ค์ ๋์ด ์์ด์ผ ํ๋ค.)
4. CHECK : ๋ฒ์๋ฅผ ์ค์ . NULL๊ฐ ํ์ฉ. ์ง์ ๋ ๊ฐ ์ธ์ ์ฌ์ฉํ ์ ์๋ค.
5. NOT NULL : NULL๊ฐ X.
- Primary key = Unique + NOT NULL
CREATE TABLE TB_TEST01(
PKCOL VARCHAR2(10) CONSTRAINT PK_TEST_01 PRIMARY KEY, -- PKCOL ์ปฌ๋ผ์ PK๋ก ์ง์
COL1 VARCHAR2(20),
COL2 VARCHAR2(20)
);
INSERT INTO TB_TEST01(PKCOL, COL1, COL2)
VALUES ('AAA', 'aaa', '111');
INSERT INTO TB_TEST01(PKCOL, COL1, COL2)
VALUES ('BBB','', '');
INSERT INTO TB_TEST01(PKCOL, COL1, COL2) -- PKCOL๊ฐ 'BBB'๊ฐ ์ค๋ณต๋๋ฏ๋ก ERROR
VALUES ('BBB','bbb', '222');
INSERT INTO TB_TEST01(PKCOL, COL1, COL2) -- PKCOL๊ฐ์ด NULL ์ด๋ฏ๋ก ERROR
VALUES ('','bbb', '222');
ํ ํ ์ด๋ธ์ PK 2๊ฐ ์ด์ ๋ง๋ค๊ธฐ
CREATE TABLE TB_TEST01( -- ํ ํ
์ด๋ธ์ PK๊ฐ 1๊ฐ ์์ด์ผ ํ๋ค๋ ERROR๊ฐ ๋ฌ๋ค.
PKCOL VARCHAR2(10) CONSTRAINT PK_TEST_01 PRIMARY KEY,
COL1 VARCHAR2(20) CONSTRAINT PK_TEST_02 PRIMARY KEY,
COL2 VARCHAR2(20)
);
CREATE TABLE TB_TEST01( -- ํ ํ
์ด๋ธ์ PK 2๊ฐ ์ด์ ๋ง๋๋ ๋ฐฉ๋ฒ
PKCOL VARCHAR2(10),
COL1 VARCHAR2(20),
COL2 VARCHAR2(20),
CONSTRAINT PR_TEST_01 PRIMARY KEY(PKCOL, COL1)
);
- Unique : ๊ณ ์ ํค. NULL๊ฐ ํ์ฉ. ์ค๋ณต๊ฐ X.
CREATE TABLE TB_TEST01(
UKCOL VARCHAR2(10) CONSTRAINT UK_TEST_01 UNIQUE,
COL1 VARCHAR2(20),
COL2 VARCHAR2(30)
);
INSERT INTO TB_TEST01(ukcol, COL1, COL2)
VALUES('AAA','aaa','111');
INSERT INTO TB_TEST01(ukcol, COL1, COL2) -- NULL๊ฐ ํ์ฉ
VALUES('','aaa','111');
-- UNIQUE KEY๋ฅผ ์ญ์ ํด์ผ ํ ๊ฒฝ์ฐ
ALTER TABLE TB_TEST01
DROP CONSTRAINT UK_TEST_01;
INSERT INTO TB_TEST01(ukcol, COL1, COL2) -- UNIQUE KEY๊ฐ ์ญ์ ๋์ด ์ค๋ณต๊ฐ ์ฝ์
์ด ๊ฐ๋ฅํด์ง๋ค.
VALUES('AAA','aaa','111');
- FOREIGN KEY : ์ธ๋ ํค
CREATE TABLE TB_DEPT( -- PK๊ฐ ์๋ ํ
์ด๋ธ ์์ฑ
DEPARTMENT_ID VARCHAR2(10),
DEPARTMENT_NAME VARCHAR2(20),
LOCATION_ID NUMBER,
CONSTRAINT PK_DEPT_TEST PRIMARY KEY(DEPARTMENT_ID)
);
CREATE TABLE TB_EMP( -- FK๊ฐ ์๋ ํ
์ด๋ธ ์์ฑ
EMPNO VARCHAR2(10),
ENAME VARCHAR2(20),
DEPARTMENT_ID VARCHAR2(10), -- PK์ ์๋ฃํ, ์ฉ๋ ํฌ๊ธฐ๋ ๋๊ฐ์ด ๋ง์ถฐ์ค์ผ ํ๋ค.
CONSTRAINT FK_EMP_TEST FOREIGN KEY(DEPARTMENT_ID) REFERENCES TB_DEPT(DEPARTMENT_ID)
);
INSERT INTO TB_DEPT(DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_ID)
VALUES ('10', '๊ธฐํ๋ถ', '120');
INSERT INTO TB_DEPT(DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_ID)
VALUES ('20', '๊ด๋ฆฌ๋ถ', '150');
INSERT INTO TB_DEPT(DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_ID)
VALUES ('30', '๊ฐ๋ฐ๋ถ', '180');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID)
VALUES (100, 'ํ๊ธธ๋', '10');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID)
VALUES (110, '์ฑ์ถํฅ', '20');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID) -- '40'์ด FK์ ์์ผ๋ฏ๋ก ERROR
VALUES (120, '์ผ์ง๋งค', '40');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID)
VALUES (120, '์ผ์ง๋งค', '30');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID) -- NULL๊ฐ ํ์ฉ
VALUES (130, '์ ์๋', '');
- CHECK : ์ง์ ๋ ๊ฐ๋ง ๋ฃ์ ์ ์๋ค. NULL, ์ค๋ณต ํ์ฉ
CREATE TABLE TB_CHECK(
COL1 VARCHAR2(10),
COL2 VARCHAR2(20),
CONSTRAINT CHK_01 CHECK(COL1 IN ('์ฌ๊ณผ', '๋ฐฐ', '๋ฐ๋๋')), -- ์ปฌ๋ผ์ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ ๋ฒ์๋ฅผ ์ ํด์ค๋ค.
CONSTRAINT CHK_02 CHECK(COL2 > 0 AND COL2 <= 100)
);
INSERT INTO TB_CHECK(COL1, COL2)
VALUES('์ฌ๊ณผ', 50);
INSERT INTO TB_CHECK(COL1, COL2) -- ERROR
VALUES('๊ทค', 50);
INSERT INTO TB_CHECK(COL1, COL2) -- NULL ๊ฐ ๊ฐ๋ฅ
VALUES('', 50);
INSERT INTO TB_CHECK(COL1, COL2) -- ERROR
VALUES('๋ฐ๋๋', 0);
INSERT INTO TB_CHECK(COL1, COL2) -- NULL ๊ฐ ๊ฐ๋ฅ
VALUES('๋ฐ๋๋', '');
- NOT NULL
CREATE TABLE TB_TEST01(
COL1 VARCHAR2(10) NOT NULL, -- COL1 ์ NULL๊ฐ์ ๋ฐ์ ์ ์๊ฒ ๋๋ค.
COL2 VARCHAR2(20)
);
INSERT INTO TB_TEST01(COL1, COL2)
VALUES ('AAA', '111');
INSERT INTO tb_test01(COL1, COL2) -- ์ฝ์
๊ฐ๋ฅ
VALUES ('BBB', '');
INSERT INTO tb_test01(COL1, COL2) -- CO1์ NOT NULL์ด๋ฏ๋ก ERROR
VALUES ('', '222');
INSERT INTO tb_test01(COL1) -- ์ฝ์
๊ฐ๋ฅ
VALUES ('333');
'๐ป ๊ฐ๋ฐ > ๐ TIL (Today I Learned)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
21.02.19 TIL(D+28 JDBC์ ํตํ DML ๊ตฌํ) (0) | 2021.02.19 |
---|---|
21.02.18 TIL (D+27 ORACLE PL/SQL) (0) | 2021.02.18 |
21.02.09 TIL (D+22 Oracle Select) (0) | 2021.02.09 |
21.02.09 TIL (D+22 Oracle DDL, ์๋ฃํ , ํ์ค ํจ์) (0) | 2021.02.09 |
21.02.01 TIL (D+16 JAVA ArrayList, ์ ๋ค๋ฆญ) (0) | 2021.02.01 |