[ 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 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바