์ƒˆ์†Œ์‹

IT & Security/DB

[ Oracle DB] scott ์Šคํ‚ค๋งˆ ์„ค์น˜ํ•˜๊ธฐ, ์ œ์•ฝ ์กฐ๊ฑด ์„ค์ •ํ•˜๊ธฐ ,์ œ์•ฝ์กฐ๊ฑด ์Šคํ‚ค๋งˆ , ์ œ์•ฝ ์กฐ๊ฑด ํ™•์ธํ•˜๊ธฐ

  • -
๋ฐ˜์‘ํ˜•
scott ์Šคํ‚ค๋งˆ ์„ค์น˜

 

๋จผ์ € scott.sql ๋ถˆ๋Ÿฌ์˜ค์ž.์•„๋ž˜๋Š” scott.sql ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด๋‹ค.

 

--
-- Copyright (c) Oracle Corporation 1999. All Rights Reserved.
--
-- NAME
-- demobld_scott.sql
--
-- DESCRIPTION
-- This script creates the SQL*Plus demonstration tables.
--
-- USAGE
-- SQL> @demobld_scott.sql
--
-- 
-- scott/tiger ๊ณ„์ • ์ƒ์„ฑ

-- system ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•œ๋‹ค.
SET FEEDBACK 1
SET NUMWIDTH 10
SET LINESIZE 80
SET TRIMSPOOL ON
SET TAB OFF
SET PAGESIZE 999
SET ECHO OFF
SET CONCAT '.'
SET SHOWMODE OFF

-- PROMPT 
-- PROMPT specify password for SYSTEM as parameter 1:
-- DEFINE password_system     = &1

-- CONNECT system/&&password_system
-- ๋ณธ์Šคํฌ๋ฆฝํŠธ๋Š” system ๊ณ„์ •์—์„œ ์‹คํ–‰์‹œ์ผœ์•ผํ•œ๋‹ค.

DROP USER scott CASCADE;

create user scott identified by tiger default tablespace users temporary tablespace temp profile default;
grant connect, resource to scott;
alter user scott account unlock;

-- ์—ฌ๊ธฐ์„œ ๋ถ€ํ„ฐ๋Š” scott ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•œ๋‹ค.
conn scott/tiger;

SET TERMOUT ON
PROMPT Building demonstration tables. Please wait.
SET TERMOUT OFF

DROP TABLE EMP;
DROP TABLE DEPT;
DROP TABLE BONUS;
DROP TABLE SALGRADE;
DROP TABLE DUMMY;

CREATE TABLE EMP (
	EMPNO 		NUMBER(4) NOT NULL,
	ENAME 		VARCHAR2(10),
	JOB 		VARCHAR2(9),
	MGR 		NUMBER(4),
	HIREDATE 	DATE,
	SAL 		NUMBER(7, 2),
	COMM 		NUMBER(7, 2),
	DEPTNO 		NUMBER(2)
	);

INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902,TO_DATE('1980-12-17', 'YYYY-MM-DD'), 800, NULL, 20);
INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698,TO_DATE('1981-02-20', 'YYYY-MM-DD'), 1600, 300, 30);
INSERT INTO EMP VALUES (7521, 'WARD', 'SALESMAN', 7698,TO_DATE('1981-02-22', 'YYYY-MM-DD'), 1250, 500, 30);
INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER', 7839,TO_DATE('1981-04-02', 'YYYY-MM-DD'), 2975, NULL, 20);
INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('1981-09-28', 'YYYY-MM-DD'), 1250, 1400, 30);
INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1981-05-01', 'YYYY-MM-DD'), 2850, NULL, 30);
INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('1981-06-09', 'YYYY-MM-DD'), 2450, NULL, 10);
INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('1982-12-09', 'YYYY-MM-DD'), 3000, NULL, 20);
INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('1981-11-17', 'YYYY-MM-DD'), 5000, NULL, 10);
INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('1981-09-08', 'YYYY-MM-DD'), 1500, 0, 30);
INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('1983-01-12', 'YYYY-MM-DD'), 1100, NULL, 20);
INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('1981-12-03', 'YYYY-MM-DD'), 950, NULL, 30);
INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('1981-12-03', 'YYYY-MM-DD'), 3000, NULL, 20);
INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('1982-01-23', 'YYYY-MM-DD'), 1300, NULL, 10);

CREATE TABLE DEPT(
	DEPTNO 		NUMBER(2),
	DNAME 		VARCHAR2(14),
	LOC 		VARCHAR2(13) 
	);

INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');

CREATE TABLE BONUS(
	ENAME 		VARCHAR2(10),
	JOB 		VARCHAR2(9),
	SAL 		NUMBER,
	COMM 		NUMBER
	);

CREATE TABLE SALGRADE(
	GRADE NUMBER,
	LOSAL NUMBER,
	HISAL NUMBER
	);

INSERT INTO SALGRADE VALUES (1, 700, 1200);
INSERT INTO SALGRADE VALUES (2, 1201, 1400);
INSERT INTO SALGRADE VALUES (3, 1401, 2000);
INSERT INTO SALGRADE VALUES (4, 2001, 3000);
INSERT INTO SALGRADE VALUES (5, 3001, 9999);

CREATE TABLE DUMMY (DUMMY NUMBER);

INSERT INTO DUMMY VALUES (0);

COMMIT;

SET TERMOUT ON
PROMPT Demonstration table build is complete.
EXIT

 

 

์œ„ ์†Œ์Šค๋ฅผ sql ํ™•์žฅ์ž๋กœ ์ €์žฅํ•ด์ค€๋‹ค.

 

 

 

 

oracle sql developer  ์—์„œ ํŒŒ์ผ > ์—ด๊ธฐ๋ฅผ ์ด์šฉํ•ด sql ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜จ ํ›„, ๊ทธ ํŒŒ์ผ์„ ctrl + enter ํ‚ค๋ฅผ ์ด์šฉํ•ด ์‹คํ–‰์‹œํ‚จ๋‹ค.

 

 

 

์‹คํ–‰์‹œํ‚ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ๋‹ค.

 

์ด์ „ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, 

 

๋‘˜๋‹ค ๋œฌ๋‹ค.

 

scott_user ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ๋ณด์ž.

 

 

 

 

scott_user ๋งŒ๋“ค๊ธฐ

 

์ขŒ์ธก ์ดˆ๋ก์ƒ‰ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ scott_user ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

 

์œ„ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ๊ณ  ํ…Œ์ŠคํŠธ ํ•ด์„œ ์ƒํƒœ๊ฐ€ ์„ฑ๊ณต์ด๋ฉด ์ €์žฅํ•œ๋‹ค.

 

 

๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” "tiger" ์ด๋‹ค.

 

 ์„ค์น˜ ํ™•์ธ

 

๋งŒ๋“ค์–ด์ง„ scott_user๋ฅผ ๋”๋ธ” ํด๋ฆญํ•ด ์›Œํฌ์‹œํŠธ๋ฅผ ์—ด๊ณ  show user; ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

scott ์Šคํ‚ค๋งˆ ์„ค์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

SCOTT ์„ ํ™œ์„ฑํ™” ์‹œ์ผœ๋ณด์ž.

 

alter user scott identified by tiger account unlock;

 

์ด์ œ ๋งˆ์ง€๋ง‰ ํ™•์ธ๋งŒ ํ•ด๋ณด์ž

 

select username, account_status from dba_users where username in ('HR','SCOTT');

 

์œ„ select ๋ฌธ์€ sys_user ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

 

HR ์€ ๋‹ค๋ฅธ ์Šคํ‚ค๋งˆ์ด๋ผ์„œ ์ƒ๊ด€ ํ•˜์ง€ ๋ง๊ณ , SCOTT ์˜ ์ƒํƒœ๊ฐ€ OPEN ์ด๋ฉด ๋จ.

 

SCOTT ์Šคํ‚ค๋งˆ ํ™•์ธํ•˜๊ธฐ

 

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ๋‹ˆ ์•Œ์•„๋‘๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

 

  • user_objects
  • user_tables
  • user_constraints -> ์–œ ์ปฌ๋Ÿผ์ด ์•ˆ๋‚˜์˜ด
  • user_tab_columns
  • user_cons_columns -> ์–˜๋Š” ์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ์ •๋ณด๊ฐ€ ์•ˆ๋‚˜์˜ด

๊ทธ๋ž˜์„œ ์œ„ ๋‘๊ฐœ๋ฅผ joinํ•ด์„œ ์‚ฌ์šฉํ•ด์„œ ์œ ์ถ”ํ•˜์—ฌ ์“ฐ๋ฉด ๋œ๋‹ค. ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ ํ™•์ธ์€ desc ๋ฅผ ์ด์šฉํ•œ๋‹ค.

 

 

 

 

 

๊ฐ๊ฐ์˜ ํ‚ค๋“ค

 

 1)primary key(pk)

 2)foreign key(fk) -> ์ž์‹ํ•œํ…Œ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

   primary key ๋งŒ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, oracle ์—์„œ๋Š” unique ํ‚ค๋„ ์™ธ๋ž˜ํ‚ค๋กœ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•˜๋‹ค.
   (์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค)

 3)unique key(uk)

   ํ•™๊ต์—์„œ ํ•™๋ฒˆ์„ pk๋กœ ์ฃผ๊ณ , uk๋Š” ์ฃผ๋ฏผ๋ฒˆํ˜ธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.(pk ๋Š” ์งง์œผ๋ฉด ์ข‹๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ์˜ˆ์‹œ๋ฅผ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.)

 4)check(ck)

   ์ œํ•œ๋‘๊ธฐ (์ ์ˆ˜๋Š” 0~100์ ๊นŒ์ง€), not null ๋„ check constraint ์— ํฌํ•จ๋œ๋‹ค.

 5)default(df)

   ์˜ค๋ผํด์€ default๋ฅผ ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ์•ˆ๋ณธ๋‹ค.

 

 

์ œ์•ฝ์กฐ๊ฑด ํ™•์ธํ•˜๊ธฐ

 

์šฐ์„  ์–ด๋–ค ์ œ์•ฝ์กฐ๊ฑด์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

desc user_constraints;

 

 

select owner, constraint_name,constraint_type, table_name, search_condition, r_constraint_name
from user_constraints
order by 4;

 

not null ์ด๋ผ๋Š” ์ œ์•ฝ์กฐ๊ฑด์ด ๊ฒฐ๊ณผ๋กœ ๋„์ถœ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์ œ์•ฝ์กฐ๊ฑด ๋งŒ๋“ค๊ธฐ

 

-- dept ๋ผ๋Š” ํ…Œ์ด๋ธ”์— deptno ๋ฅผ pk ๋กœ ์„ค์ •ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด ์ƒ์„ฑ
alter table dept
add constraint pk_dept_deptno primary key(deptno);

-- emp ๋ผ๋Š” ํ…Œ์ด๋ธ”์— empno ๋ฅผ pk ๋กœ ์„ค์ •ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด ์ƒ์„ฑ
alter table emp
add constraint pk_emp_empno
primary key(empno);

-- deptno ๋ฅผ ์™ธ๋ž˜ํ‚ค๋กœ ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด ์ƒ์„ฑ
alter table emp
add constraint fk_emp_deptno foreign key(deptno) references dept(deptno);

-- ์ œ์•ฝ์กฐ๊ฑด ์ƒ์„ฑ ํ™•์ธ
select owner, constraint_name,constraint_type, table_name, search_condition, r_constraint_name
from user_constraints
order by 4;

 

 

๋งˆ์ง€๋ง‰ select ๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

 

user_cons_columns ์Šคํ‚ค๋งˆ์™€ user_constraints ์Šคํ‚ค๋งˆ๋ฅผ joinํ•˜์—ฌ

์ œ์•ฝ์กฐ๊ฑด์ด ์–ด๋–ค ์ปฌ๋Ÿผ์— ๊ฑธ๋ ค์žˆ๋Š”์ง€๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

select a.table_name, a.column_name,a.constraint_name,b.constraint_type 
from user_cons_columns a join user_constraints b 
on a.constraint_name=b.constraint_name;

 

์“ฐ๋ ˆ๊ธฐ ํ†ต ๋น„์šฐ๊ธฐ
show recyclebin --sql+๋ช…๋ น์–ด 
purge recyclebin; -- ํœด์ง€ํ†ต:์˜๊ตฌ์ ์œผ๋กœ ๋ฒ„๋ฆฐ๋‹ค๋Š” ๊ฒƒ.sql๋ช…๋ น์–ด

์ด์ƒํ•œ ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ์ถœ๋ ฅ๋  ๊ฒฝ์šฐ ํœด์ง€ํ†ต์„ ํ•œ๋ฒˆ ๋น„์›Œ์ค€๋‹ค.

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.