[ Oracle ] Oracle scott 스키마 설치하기 | 제약 조건 설정하기 | 제약조건 스키마 | 제약 조건 확인하기

2021. 3. 8. 16:56·Archive/Develop
728x90
반응형

 

 

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

 

스키마 구조 확인은 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)

 

 

 

제약조건 확인하기

 

우선 어떤 제약조건이 있는지 확인해본다.

 

 

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 스키마를 조인하여

제약조건이 어떤 컬럼에 걸려있는지도 확인할 수 있다.

 

 

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;

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ Oracle ] 변환함수 (to_char, to_number, to_date)  (0) 2021.03.08
[ 인공지능 ] Google Colab 이란? | Colab 사용하기 | Colab 기초 사용법  (3) 2021.03.08
[ Oracle ] Oracle DB SQL 사용자 정보 확인| 오늘 날짜 확인하기 | 환경 변수 확인&변경하기 | 시스템 뷰  (0) 2021.03.08
[ CodeUp ] Python 기초 100제 | 6006 번 풀이  (0) 2021.03.08
[ CodeUp ] Python 기초 100제 | 6005 번 풀이  (0) 2021.03.08
'Archive/Develop' 카테고리의 다른 글
  • [ Oracle ] 변환함수 (to_char, to_number, to_date)
  • [ 인공지능 ] Google Colab 이란? | Colab 사용하기 | Colab 기초 사용법
  • [ Oracle ] Oracle DB SQL 사용자 정보 확인| 오늘 날짜 확인하기 | 환경 변수 확인&변경하기 | 시스템 뷰
  • [ CodeUp ] Python 기초 100제 | 6006 번 풀이
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    Git
    Oracle
    Django
    백준
    파이썬 알고리즘
    비박스
    코드업 기초
    백준 파이썬
    파이썬
    Python
    카카오 100일 프로젝트
    백준 문제풀이
    docker
    자바스크립트 객체
    파이썬 문제
    코드업 파이썬 기초 100제
    파이썬 기초
    C++
    오라클
    Codeup
    자바스크립트
    oracle db
    코드업
    보안뉴스
    javascript
    백준 풀이
    파이썬 기초 문제
    장고
    자바스크립트 API
    파이썬 백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Oracle ] Oracle scott 스키마 설치하기 | 제약 조건 설정하기 | 제약조건 스키마 | 제약 조건 확인하기
상단으로

티스토리툴바