2022.08.16 SQL

sofiaยท2022๋…„ 8์›” 21์ผ
0

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
9/13
post-thumbnail

๐Ÿ“š๋ณต์Šต

๐Ÿ“–๋ฌธ์ œ 1

SELECT
    email,
    decode(instr(email,'@'),8,(replace(email,substr(email,1,7),'???????'))
    ,7
    ,(replace(email,substr(email,1,7),'??????'))
    ,5
    ,(replace(email,substr(email,1,4),'????'))
    )"EMAIL)?"
    ,HPAGE
    ,DECODE(INSTR(HPAGE,'.',1,2)-(INSTR(HPAGE,'.',1,1)),4
     ,(replace(HPAGE,substr(HPAGE,INSTR(HPAGE,'.',1,1)+1,3),'***'))
     ,(replace(HPAGE,substr(HPAGE,INSTR(HPAGE,'.',1,1)+1,5),'*****'))
     )"HPAGE_*"
     FROM PROFESSOR
     WHERE HPAGE IS NOT NULL;

๐Ÿ“–๋ฌธ์ œ 2

SELECT EMPNO,
       ENAME,
       COMM,
       CASE 
           WHEN NVL(COMM,0) > 0 THEN '์ˆ˜๋‹น : '||NVL(COMM,0)
           WHEN COMM IS NULL THEN 'ํ•ด๋‹น์‚ฌํ•ญ ์—†์Œ'
           WHEN NVL(COMM,0) = 0 THEN '์ˆ˜๋‹น์—†์Œ'
       END "COMM_TEXT"
       FROM EMP;

๐Ÿ“–๋ฌธ์ œ 3

SELECT
    NAME,
    HEIGHT,
    RANK() OVER(ORDER BY HEIGHT DESC)"RANK",
    DENSE_RANK() OVER(ORDER BY HEIGHT DESC)"RANK2",
    ROW_NUMBER() OVER(ORDER BY HEIGHT DESC)"RANK3"
FROM
    STUDENT
    WHERE HEIGHT >= 170;

๐Ÿ“–๋ฌธ์ œ 4

SELECT NAME,
       JUMIN,
       DEPTNO1,
       DECODE(SUBSTR(JUMIN,7,1),1,'M','F')"MF",
       WEIGHT,
       SUM(WEIGHT)OVER(PARTITION BY DEPTNO1, SUBSTR(JUMIN,7,1) ORDER BY WEIGHT DESC) "TOTAL"
FROM
    STUDENT;

๐Ÿ“–๋ฌธ์ œ 5

SELECT SUBSTR(EMAIL,INSTR(EMAIL,'@')+1)"DOMAIN",
        COUNT(*)"EA",
        SUM(COUNT(*)) OVER()"SUM_DOMAIN",
        COUNT(*)/SUM(COUNT(*))OVER()*100"%"
FROM PROFESSOR
group by SUBSTR(EMAIL,INSTR(EMAIL,'@')+1)
ORDER BY SUBSTR(EMAIL,INSTR(EMAIL,'@')+1);

๐Ÿ“–๋ฌธ์ œ 6

SELECT NAME,
       TEL,
       TO_CHAR(PAY,'999,999,999')"PAY",
       TO_CHAR(SUM(PAY)OVER(PARTITION BY SUBSTR(TEL,1,INSTR(TEL,')')-1)),'999,999,999')"TOTAL_AREA",
       ROUND(PAY/SUM(PAY)OVER(PARTITION BY SUBSTR(TEL,1,INSTR(TEL,')')-1))*100,2) "RATIO(%)"
FROM EMP2
GROUP BY NAME,TEL,PAY;

๐Ÿ“–๋ฌธ์ œ 7

CREATE TABLE PROFESSOR2
(PROFNO NUMBER(8)
,NAME VARCHAR2(30)
,ID VARCHAR2(20)
,POSITION VARCHAR2(50)
,PAY NUMBER(5)
,HIREDATE DATE
,BONUS NUMBER(5)
,DEPTNO NUMBER(3)
,EMAIL VARCHAR2(100)
,HPAGE VARCHAR2(100)
);

๐Ÿ“–๋ฌธ์ œ 8

CREATE TABLE PROFESSOR3
AS 
SELECT PROFNO
     , NAME
     , EMAIL FROM PROFESSOR;

๐Ÿ“–๋ฌธ์ œ 9

๐Ÿ“–๋ฌธ์ œ 10

ALTER TABLE PROFESSOR3
RENAME COLUMN CARD_YN TO CHECK_CARD_YN;

๐Ÿ“–๋ฌธ์ œ 11

ALTER TABLE PROFESSOR3
RENAME COLUMN CARD_YN TO CHECK_CARD_YN;

๐Ÿ“–๋ฌธ์ œ 12

ALTER TABLE PROFESSOR3
DROP COLUMN CHECK_CARD_YN;

๐Ÿ“š๋ฐ์ดํ„ฐ ์‚ฌ์ „

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง
  • ์˜ค๋ผํด์€ DDL๋ช…๋ น์–ด(์˜ˆ. CREATE DATABASE, ALTER TABLE...)์‹คํ–‰ ๋ ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์‚ฌ์ „์„ Access
  • DB์ž‘์—… ๋™์•ˆ ์˜ค๋ผํด์€ ๋ฐ์ดํ„ฐ ์‚ฌ์ „์„ ์ฝ์–ด ๊ฐ์ฒด์˜ ์กด์žฌ์—ฌ๋ถ€์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ํ•ฉํ•œ Access ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ
  • ์˜ค๋ผํด์€ ๋ฐ์ดํ„ฐ ์‚ฌ์ „์„ ๊ณ„์† ๊ฐฑ์‹ ํ•˜์—ฌ DB๊ตฌ์กฐ, ๊ฐ์‚ฌ, ์‚ฌ์šฉ์ž๊ถŒํ•œ, ๋ฐ์ดํ„ฐ๋“ฑ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•œ๋‹ค.

๐Ÿ“˜๋ฐ์ดํ„ฐ ์‚ฌ์ „์˜ ์ข…๋ฅ˜

  1. ALL_XXXX
    : ์ ‘์†ํ•œ ๊ณ„์ •์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ์ฒด ์ •๋ณด
    (ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ๊ฐ์ฒด ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ๊ฐ์ฒด ์ค‘ ์‚ฌ์šฉ ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›์€ ๊ฐ์ฒด)

  2. USER_XXXX
    : ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ๊ฐ์ฒด ์ •๋ณด

  3. DBA_XXXX
    : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ •๋ณด(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ๊ถŒํ•œ์„ ๊ฐ€์ง„ SYSTEM, SYS ์‚ฌ์šฉ์ž๋งŒ ์—ด๋žŒ ๊ฐ€๋Šฅ)

๐Ÿ“˜SYSTEM ๊ณ„์ • ๋งŒ๋“ค๊ธฐ ๋ฐ ์˜ˆ์ œ

SELECT * FROM dba_tablespaces;



๋“ฑ๋“ฑ์„ ๋ณผ์ˆ˜์žˆ์Œ

SELECT * FROM USER_TABLES;

๐Ÿ“šํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค(TableSpace)

  • ํ…Œ์ด๋ธ”์ด ์ €์žฅ๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ณต๊ฐ„(ํŒŒ์ผ์€ ๋ฌผ๋ฆฌ์ ์ธ ๊ณต๊ฐ„)

-ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ •์˜๋œ ์šฉ๋Ÿ‰๋งŒํผ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•œ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๊ฐ€ ์ƒ์„ฑ

-๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ”

  • ๊ธฐ๋ณธ์šฉ๋Ÿ‰/ ์ž๋™ํ™•์žฅ
  • ๊ฒŒ์‹œํŒ ๋ฐ์ดํ„ฐ ์ €์žฅ
  • ์šฉ๋Ÿ‰ ์ดˆ๊ณผ์‹œ ์ž๋™์ ์œผ๋กœ ํ™•์žฅ
  • TABLESPACE๋Š” ์ž์‹ ์˜ ์šฉ๋Ÿ‰ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋ฉด ์ž๋™ ํ™•์žฅ์„ ํ•จ. ์ž๋™ ํ™•์žฅ๋œ ์šฉ๋Ÿ‰์€ ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์ด ์ค„์–ด๋„ ๋Š˜์–ด๋‚œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
  • ๊ธฐ๋ณธ์  ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค, ํ…œํ”„ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค
  • Create tablespace ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค DATAFILE โ€˜๊ฒฝ๋กœ/ํŒŒ์ผ๋ช…โ€™

๐Ÿ“˜๊ณต๊ฐ„ ๊ด€๋ฆฌ

๋ธ”๋ก<์ต์Šคํ…ํŠธ<์„ธ๊ทธ๋จผํŠธ < ๋ฐ์ดํ„ฐ์ŠคํŽ˜์ด์Šค
(๋…ผ๋ฆฌ ๋‹จ์œ„์˜ ๊ทœ๋ชจ)

  • ๋ธ”๋ก
    ๋ฐ์ดํ„ฐ ํŒŒ์ผ I/O์˜ ๊ฐ€์žฅ์ž‘์€ ๋‹จ์œ„
    DB๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์ตœ์†Œ ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • ์ต์Šคํ…ํŠธ
    ์ต์Šคํ…ํŠธ๋Š” ์—ฌ๋Ÿฌ ์—ฐ์†์ ์ธ ๋ธ”๋ก์œผ๋กœ ํ•˜๋‚˜์˜ ์„ธ๊ทธ๋จผํŠธ์— ํ• ๋‹น๋œ ๊ณต๊ฐ„์„ ๋งํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
    ๊ฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ์ต์Šคํ…ํŠธ๊ฐ€ ๋ชจ์ธ ๊ฒƒ
    ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด์„œ๋Š” ํ•˜๋‚˜์ด์ƒ์˜ ์ต์Šคํ…ํŠธ๊ฐ€ ๋ชจ์ธ ๊ฒƒ

  • ์„ธ๊ทธ๋จผํŠธ
    ์ต์Šคํ…ํŠธ์˜ ์ง‘ํ•ฉ
    ์„ธ๊ทธ๋จผํŠธ์—์„œ ๊ธฐ์กด ๊ณต๊ฐ„์ด ์™„์ „ํžˆ ์‚ฌ์šฉ๋˜๋ฉด ์ƒˆ๋กœ์šด ์ต์Šคํ…์Šค๋ฅผ ์ƒ์„ฑ

๐Ÿ“˜ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ ๋ช…๋ น

CREATE TABLESPACE storm
DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\app_data.dbf' 
SIZE 100M autoextend on next 10M maxsize 500M
DEFAULT STORAGE 
(
  INITIAL    10K
  NEXT      10K
  MINEXTENTS 2
  MAXEXTENTS 50
  PCTINCREASE 50
);

DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\app_data.dbf' : ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ฅผ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ์ง€์ •

SIZE 100M : ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ์‚ฌ์ด์ฆˆ 100M๋กœ ์ง€์ •ํ•จ

autoextend : ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•  ๋•Œ ์ž๋™์œผ๋กœ ํ™•์žฅ

๐Ÿ“˜USER ์ƒ์„ฑ ๋ช…๋ น

(SYSTEM ๊ณ„์ •์—์„œ ์‹คํ–‰)

CREATE USER [์‚ฌ์šฉ์ž ๊ณ„์ •]
IDENTIFIED BY [๋น„๋ฐ€๋ฒˆํ˜ธ]
DEFAULT TABLESPACE [๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ์ด๋ฆ„]
TEMPORARY TABLESPACE [์ž„์‹œ๋กœ ์‚ฌ์šฉํ•œ ๊ธฐ์–ต๊ณต๊ฐ„](์œ„์˜ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์ด๋ฆ„์ด ๋‚ ์•„๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)
QUOTA [์šฉ๋Ÿ‰] ON [ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ช…];

๐Ÿ“˜ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ์ˆ˜์ • ๋ช…๋ น

์˜ˆ์‹œ

ALTER DATABASE DATAFILE 
'๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ฒฝ๋กœ' 
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

: ์ž๋™ ํ™•์žฅ 100M ์ตœ๋Œ€ ๊ณต๊ฐ„์€ ์ œ์•ฝ ์—†์Œ

ALTER TABLESPACE STORM ADD DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\app_data2.dbf' SIZE 50M;

: ์•ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฝ‰์ฐจ๋ฉด 2๋ฒˆ ํŒŒ์ผ๋กœ ์ด๋™

๐Ÿ” ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ฉด ์Šคํ‚ค๋งˆ ์ƒ์„ฑ ์œ ์ €์˜ default tablespace์— ์ƒ์„ฑ์ด ๋˜๊ณ , ํ•ด๋‹น ๋””ํดํŠธ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๊ฐ€ ์ˆ˜์šฉ๊ฐ€๋Šฅํ•œ ์˜์—ญ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ์ˆ˜์žˆ๋‹ค.

๐Ÿ“˜์ ‘์† ๊ถŒํ•œ ๋ถ€์—ฌ์™€ ์‚ญ์ œ

  • ์ ‘์† ๊ถŒํ•œ
--์ ‘์† ๊ถŒํ•œ ๋ถ€์—ฌ
GRANT CREATE SESSION TO TEST1;

๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ์ฝ”๋“œ๋งŒ ์ž…๋ ฅํ•˜๊ณ  ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ณ ์ž ํ•˜๋ฉด ํ…Œ์ด๋ธ” ์ƒ์„ฑ์ด ์•ˆ๋˜๋Š”๊ฑธ ํ™•์ธํ• ์ˆ˜์žˆ์Œ. ๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋‚˜?

ํ…Œ์ด๋ธ”๋„ ๊ถŒํ•œ์„ ์ฃผ๋ฉด ๊ฐ€๋Šฅํ•œ

--ํ…Œ์ด๋ธ” ์ƒ์„ฑ๊ถŒํ•œ ๋ถ€์—ฌ
GRANT CREATE TABLE TO TEST1;
  • ์ ‘์† ๊ถŒํ•œ ํ•ด์ œ
-- ๊ถŒํ•œ ํ•ด์ œ
REVOKE CREATE TABLE FROM TEST1;
  • ๊ถŒํ•œ ํ™•์ธ
SELECT * FROM DBA_SYS_PRIVS 
WHERE GRANTEE = 'TEST1';(๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์€ ํ…Œ์ด๋ธ”๋ช…)

๐Ÿ“š์ œ์•ฝ์กฐ๊ฑด(PPT Chapter 07)โ—

  • ๋งค์šฐ ์ค‘์š”ํ•˜์ง€๋งŒ ์–ด๋ ค์›€. ์ดํ•ด๋ฅผ ์ž˜ํ•ด์•ผํ•จ.

๐Ÿ“˜์ œ์•ฝ ์กฐ๊ฑด์˜ ์ข…๋ฅ˜

  1. NOT NULL(NN)
    NULL ์•ˆ๋จ(ํ•œ๋ฒˆ์€ ํ—ˆ์šฉํ•˜๋‚˜, ๋‘๋ฒˆ๋ถ€ํ„ฐ๋Š” ์•ˆ๋จ)(ํ•„์ˆ˜์ž…๋ ฅ์‚ฌํ•ญ)

  2. CHECK(CK)
    ์ž…๋ ฅ๋ฒ”์œ„์„ ์ง์ ‘ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ
    (์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋งŒ ์ž…๋ ฅ๊ฐ€๋Šฅ)

  3. UNQUE
    ์ค‘๋ณต์„ฑ ๋ฐฐ์ œ, ์ฆ‰ '์œ ์ผํ•œ ๊ฐ’'์œผ๋กœ ์กด์žฌํ•ด์•ผํ•จ.

  4. PRIMARY KEY(PK)
    NOT NULL+UNIQE๋กœ, ํ…Œ์ด๋ธ”์—์„œ ๋Œ€ํ‘œ๋˜๋Š” ์ปฌ๋Ÿผ
    ๋ณดํ†ต ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” PK๋กœ ์„ค์ •ํ•จ
    (PK๋กœ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ์ˆ˜์žˆ๊ธฐ์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ)

  5. FOREIGN KEY
    ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ์กด์žฌํ•˜๋Š” ๊ฐ’๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ
    ๋งŒ์•ฝ์— ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์— ํ•ด๋‹น๋˜๋Š” ๊ฐ’์ด ์—†์„๋• ์˜ค๋ฅ˜๊ฐ€ ๋‚ ์ˆ˜์žˆ์Œ
    ์ค‘๋ณต์ ์œผ๋กœ ์ ์šฉ๊ฐ€๋Šฅ

๐Ÿ“–์˜ˆ์ œ

CREATE TABLE NEW_EMP2
(NO NUMBER(4) PRIMARY KEY
,NAME VARCHAR2(20) NOT NULL
,JUMIN VARCHAR2(13) NOT NULL UNIQUE
,LOC_CODE NUMBER(1) CHECK(LOC_CODE<5)
,DEPTNO VARCHAR2(6) REFERENCES DEPT2(DCODE)
);

๐Ÿ“˜์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€ (ADD,MODIFY)

  1. ADD
ALTER TABLE NEW_EMP2
 ADD CONSTRAINT NEW_EMP2_NAME_UK UNIQUE(NAME);
 -- NEW_EMP2_NAME_UK๋Š” EMP2์˜ ๋„ค์ž„์— UK๋ฅผ ๊ฑธ์—ˆ๋‹ค๋ผ๊ณ  ์˜๋ฏธ ๋ถ€์—ฌํ•˜๋Š”๊ฑฐ์ž„(์ž๊ธฐ๊ฐ€ ์•Œ์•„์„œ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ž„)

์ถ”๊ฐ€๋จ์„ ํ™•์ธ ํ• ์ˆ˜์žˆ์Œ

  1. MODIFY
ALTER TABLE NEW_EMP2
MODIFY(LOC_CODE CONSTRAINT NEW_EMP2_LOC_CODE_NN NOT NULL); 
 -- NEW_EMP2_LOC_CODE_NN๋Š” LOC์นผ๋Ÿผ์„ NN์œผ๋กœ ๋ฐ”๊พธ๊ฒ ๋‹ค๋Š” ๋œป

๊ทผ๋ฐ ๋ณด๋ฉด ๋ณ€๊ฒฝ์ด ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ถ”๊ฐ€๋จ์„ ํ™•์ธ ํ•  ์ˆ˜์žˆ๋‹ค.(๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•จ)

๊ทธ ๋ง์€ ์‚ญ์ œ์ฝ”๋“œ๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•จ. ๊ทผ๋ฐ ๊ตณ์ด ๋ฐ์ดํ„ฐ ์‚ญ์ œํ•˜๊ณ  ์ถ•๊ฐ€ํ•˜๊ธฐ ๊ท€์ฐฎ์œผ๋‹ˆ๊น ๋ณดํ†ต์€ ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๊ณ (DROP TABLE ํ…Œ์ด๋ธ”๋ช…;) ๋‹ค์‹œ ์ œ์•ฝ ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ๋งŒ๋“œ๋Š”๊ฒŒ ํšจ์œจ์ ์ž„

๐Ÿ“˜PRIMARY KEY ๋ณต์‚ฌ

CREATE TABLE T_ENABLE2
AS 
SELECT * FROM T_ENABLE;

๋ณด๋ฉด PK๋กœ ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ณต์‚ฌ๋˜์ง€ ์•Š์Œ

๐Ÿ“˜์ œ์•ฝ ์กฐ๊ฑด ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”

์›๋ž˜

INSERT INTO T_ENABLE2 VALUES(3,''); ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ(์ด์œ  : NULL๊ฐ’์ด๋‹ˆ๊น) ํ•˜๋Š”๋ฐ ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ฌ์šฉ๋ชปํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ด„

  1. DISABLE (์ œ์•ฝ์กฐ๊ฑด ์‚ฌ์šฉ๋ชปํ•˜๊ฒŒ ์„ค์ •)
ALTER TABLE T_ENABLE2
DISABLE CONSTRAINT SYS_C007110;
-- ์ œ์•ฝ์กฐ๊ฑด ์‚ฌ์šฉ๋ชปํ•˜๊ฒŒ ๋ณ€๊ฒฝ
INSERT INTO T_ENABLE2 VALUES(3,''); -- ์‹คํ–‰

DELETE FROM T_ENABLE2
 WHERE NO=3;
--๊ธฐ๋ณธ 3๋ฒˆ ๋ฐ์ดํ„ฐ ์‚ญ์ œ

2.ENABLE (์ œ์•ฝ์กฐ๊ฑด ๋‹ค์‹œ ์‚ด๋ฆฌ๊ธฐ)

ALTER TABLE T_ENABLE2
ENABLE VALIDATE CONSTRAINT SYS_C007110; --์‹คํ–‰๋จ(๊ธฐ์กด 3๋ฒˆ ๋ฐ์ดํ„ฐ ์‚ญ์ œ์•ˆํ•˜๋ฉด ์˜ค๋ฅ˜๋‚จ

๐Ÿ“˜์ œ์•ฝ์กฐ๊ฑด ์‚ญ์ œ

--์ œ์•ฝ์กฐ๊ฑด ์‚ญ์ œ
ALTER TABLE T_ENABLE2
DROP CONSTRAINT SYS_C007110;

๐Ÿ“˜์ œ์•ฝ์กฐ๊ฑด์„ ๊ฐ€์ง„ ์นผ๋Ÿผ ์ฐพ๊ธฐ

(์กฐ๊ธˆ ๋ณต์žกํ•˜๊ธด ๋ณต์žกํ•œ๋ฐ...

SELECT COLUMN_NAME
    FROM USER_CONS_COLUMNS
WHERE CONSTRAINT_NAME = (SELECT CONSTRAINT_NAME
                           FROM USER_CONSTRAINTS
                        WHERE TABLE_NAME = 'EMP'
                           AND CONSTRAINT_TYPE = 'P');

ํ•œ๋ฒˆ์— ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.(์›๋ž˜๋ผ๋ฉด ์ ‘์† ํ…Œ์ด๋ธ” ์—ด์–ด์„œ ํ•ด๋‹น ํ…Œ์ด๋ธ” ์—ด๊ณ  ์ œ์•ฝ ์กฐ๊ฑด ์—ด๊ณ  ํ•ด๋‹น ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ ๋ˆŒ๋Ÿฌ์•ผ์ง€ ๋ฐ์ดํ„ฐ ํ™•์ธ์ด ๊ฐ€๋Šฅ)

SELECT COLUMN_NAME
    FROM USER_CONS_COLUMNS
WHERE CONSTRAINT_NAME = (SELECT CONSTRAINT_NAME
                           FROM USER_CONSTRAINTS
                        WHERE TABLE_NAME = 'EMP'
                           AND CONSTRAINT_TYPE = 'R');

๐Ÿ“˜๐Ÿ“–์ œ์•ฝ์กฐ๊ฑด ๊ด€๋ จ ์˜ˆ์ œ

CREATE TABLE STUDENT2(
    STU_ID CHAR(5) CONSTRAINT STUDENT_STU_ID_PK PRIMARY KEY
                -- CONSTRAINT STUDENT_STU_ID_CK CHECK(LENGTH(STU_ID) = 5),
                   CONSTRAINT STUDENT_STU_ID_CK CHECK(LENGTH(TRIM(' ' FROM STU_ID)) = 5),
    STU_NAME VARCHAR2(10) CONSTRAINT STUDENT_STU_NAME_NN NOT NULL
);

ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•จ.

INSERT INTO STUDENT2 VALUES('A1','AA');     -- ์‹คํ–‰ ์•ˆ๋จ
INSERT INTO STUDENT2 VALUES('A01','AA');    -- ์‹คํ–‰ ์•ˆ๋จ
INSERT INTO STUDENT2 VALUES('A001','AA');   -- ์‹คํ–‰ ์•ˆ๋จ
INSERT INTO STUDENT2 VALUES('A0001','AA');  -- ์‹คํ–‰๋จ(5์ž ๋งž์ถ”๊ธฐ)
INSERT INTO STUDENT2 VALUES('A00001','AA'); -- ์‹คํ–‰ ์•ˆ๋จ

CREATE TABLE SUBJECT2 (
    SUB_ID NUMBER(3) CONSTRAINT SUBJECT2_SUB_ID_PK PRIMARY KEY,
    SUB_NAME VARCHAR2(20) CONSTRAINT SUBJECT2_SUB_NAME_NN NOT NULL
);
--ํ…Œ์ด๋ธ” ์ƒ์„ฑ

INSERT INTO SUBJECT2 VALUES(100,'A1');
--๋ฐ์ดํ„ฐ ์‚ฝ์ž…

CREATE TABLE SCORE2(
    STU_ID CHAR(5) CONSTRAINT SCORE2_STU_ID_NN NOT NULL,
    SUB_ID NUMBER(3) CONSTRAINT SCORE2_SUB_ID_NN NOT NULL,
    SCORE NUMBER(3) CONSTRAINT SCORE2_SCORE_NN NOT NULL,
    GRADE CHAR(1) CONSTRAINT SCORE2_GRADE_CK CHECK(GRADE IN('A','B','C','D','F')),
    CONSTRAINT SCORE2_PK PRIMARY KEY(STU_ID, SUB_ID),
    CONSTRAINT SCORE2_FK1 FOREIGN KEY (STU_ID) REFERENCES STUDENT2(STU_ID),
    CONSTRAINT SCORE2_FK2 FOREIGN KEY (SUB_ID) REFERENCES SUBJECT2(SUB_ID)
);

๐Ÿ“šReference

์ฐธ๊ณ ํ•œ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ๋ธ”๋กœ๊ทธ ๋˜๋Š” ๊ด€๋ จ ๋งํฌ๋“ค

0๊ฐœ์˜ ๋Œ“๊ธ€