- 데이터 딕셔너리란?
자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블
데이터 딕셔너리는 사용자 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신된다!
- 오라클에서의 객체란?
테이블(TABLE), 뷰(VIEW), 시퀀스(), 인덱스(), 패키지(), 트리거(), 프로시져(), 함수(), 동의어(), 사용자()
<자료형>
- NUMBER : 숫자형(정수, 실수)
- CHAR(크기) : 고정길이 문자형 (최대 2000 BYTE)
--> EX) CHAR(10) 컬럼에 'ABC' 3 BYTE 문자열만 저장해도 10 BYTE 저장공간을 모두 사용- VARCHAR2(크기) : 가변길이 문자형 (최대 4000 BYTE)
--> EX) VARCHAR2(10) 컬럼에 'ABC' 3 BYTE 문자열만 저장하면 나머지 7BYTE는 자동으로 반환함- DATE : 날짜 타입
- BLOB : 대용량 이진 데이터(4GB)
- CLOB : 대용량 문자 데이터(4GB)
테이블이나 인덱스, 뷰 등 다양한 데이터베이스 객체를 생성하는 구문
CREATE TABLE 테이블명(
컬럼명 자료형(크기)
컬럼명 자료형(크기)
컬럼명 자료형(크기)
);
‼️ 컬럼에 주석 달기
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석내용';COMMENT ON COLUMN MEMBER.MEMBER_ID IS '회원 아이디';
사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약
--> 데이터 무결성 보장을 목적으로 함! 즉, 중복데이터 X
해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
CREATE TABLE USER_USED_NN(
USER_NO NUMBER NOT NULL, -- 사용자 번호(모든 사용자는 사용자 번호가 있어야 한다)
--> 컬럼 레벨 제약 조건 설정
USER_ID VARCHAR2(20),
USER_PWD VARCHAR2(30),
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50)
);
컬럼에 입력값에 대해서 중복을 제한하는 제약조건
단, NULL값은 중복 가능!!
CREATE TABLE USER_USED_UK(
USER_NO NUMBER ,
USER_ID VARCHAR(20) UNIQUE, --컬럼 레벨
USER_PWD VARCHAR2(30),
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50)
);
CREATE TABLE USER_USED_UK(
USER_NO NUMBER ,
USER_ID VARCHAR(20),
USER_PWD VARCHAR2(30),
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
[CONSTRAINT USER_ID_U] UNIQUE(USER_ID) --테이블레벨에서 제약조건 지정
);
CREATE TABLE USER_USED_UK2(
USER_NO NUMBER ,
USER_ID VARCHAR(20),
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
--테이블 레벨 UNIQUE 복합키 지정
CONSTRAINT USER_ID_NAME_U UNIQUE(USER_ID, USER_NAME)
);
테이블에서 한 행의 정보를 찾기 위해 사용할 컬럼을 의미함
--> 테이블에 대한 식별자 역할 !
--> NOT NULL + UNIQUE : 중복되지 않는 값이 필수로 존재해야 함
--> 한 테이블 당 한개만 설정 가능
CREATE TABLE USER_USED_PK(
USER_NO NUMBER [CONSTRAINT USER_NO_PK] PRIMARY KEY, --컬럼 레벨
USER_ID VARCHAR(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50)
);
CREATE TABLE USER_USED_PK(
USER_NO NUMBER ,
USER_ID VARCHAR(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
[CONSTRAINT USER_NO_PK ] PRIMARY KEY(USER_NO)
);
참조된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음
--> FOREIGN KEY 제약조건에 의해서 테이블 간의 관계가 형성됨
CREATE TABLE USER_USED_FK(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
GRADE_CODE NUMBER [CONSTRAINT GRADE_CODE_FK] REFERENCES USER_GRADE [ (GRADE_CODE)]
);
CREATE TABLE USER_USED_FK(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
GRADE_CODE NUMBER,
[CONSTRAINT GRADE_CODE_FK] FOREIGN KEY(GRADE_CODE) REFERENCES USER_GRADE [(GRADE_CODE)]
);
※ 컬럼명 미작성시 USER_GRADE 테이블의 PK를 자동 참조
ON DELETE RESTRICTED (삭제 제한) --> 기본값
: FOREIGN KEY로 지정된 컬럼에서 사용되고 있는 값일 경우 제공하는 컬럼의 값은 삭제하지 못함
ON DELETE SET NULL
: 부모키 삭제 시 자식키를 NULL로 변경하는 옵션
CREATE TABLE USER_USED_FK2(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
GRADE_CODE NUMBER CONSTRAINT GRADE_CODE_FK2 REFERENCES USER_GRADE2 ON DELETE SET NULL
);
CREATE TABLE USER_USED_FK3(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
GRADE_CODE NUMBER,
CONSTRAINT GRADE_CODE_FK3 FOREIGN KEY(GRADE_CODE)
REFERENCES USER_GRADE3(GRADE_CODE) ON DELETE CASCADE
);
USER_TABLES : 사용자가 작성한 테이블을 확인하는 뷰
--> 데이터 딕셔너리에 정의되어 있음
SELECT * FROM USER_TABLES;
USER_CONSTRANINTS : 사용자가 작성한 제약조건을 확인하는 딕셔너리 뷰
SELECT * FROM USER_CONSTRAINTS;