■ DDL
- 데이터 정의어
- 오라클에서 제공하는 객체 생성, 변경, 삭제 등 데이터의 구조 정의어(데이터가 아닌 객체 정의)
1. CREATE
- 데이터베이스 객체(테이블, 뷰, 사용자 등) 생성 구문
CREATE TABLE 테이블명 (
컬럼명 자료형(크기) [DEFAULT 기본값] [제약조건],
컬럼명 자료형(크기) [DEFAULT 기본값] [제약조건],
컬럼명 자료형(크기) [DEFAULT 기본값] [제약조건],
...
);
2. DROP
- 데이터베이스 객체 삭제 구문
DROP TABLE MEMBER;
■ 기타
1. 데이터 딕셔너리 : 데이터베이스에 의해 자동으로 갱신되는 객체 정보 저장 시스템 테이블
- USER_TABLES : 사용자가 가지고 있는 테이블의 구조를 확인하는 뷰 테이블
- USER_TAB_COLUMNS : 테이블, 뷰의 컬럼과 관련된 정보를 조회하는 뷰 테이블
SELECT * FROM USER_TABLES;
SELECT * FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'MEMBER';
SELECT UC.CONSTRAINT_NAME,
UC.TABLE_NAME,
UCC.COLUMN_NAME,
UC.CONSTRAINT_TYPE
FROM USER_CONSTRAINTS UC
JOIN USER_CONS_COLUMNS UCC ON (UC.CONSTRAINT_NAME = UCC.CONSTRAINT_NAME)
WHERE UC.TABLE_NAME = 'MEMBER';
2. 컬럼 주석 : 데이터 컬럼에 대한 설명 작성할 수 있는 구문
3. 샘플 데이터 추가 : 만들어진 테이블에 샘플 데이터 추가
4. COMMIT : 추가한 데이터를 실제 데이터베이스에 반영(반영 전에는 메모리 버퍼에 임시저장 됨)
-- 컬럼 주석
-- COMMENT ON COLUMN 테이블.컬럼명 IS '주석 내용';
COMMENT ON COLUMN MEMBER.ID IS '회원 아이디';
-- 샘플 데이터 추가
-- INSERT INTO 테이블명[(컬럼명, ..., 컬럼명)] VALUES (값, ..., 값)
INSERT INTO MEMBER VALUES('USER1', '1234', '김땡땡', '2022-05-12');
INSERT INTO MEMBER(ID, PASSWORD) VALUES('USER3', '1234');
-- 테이블의 구조를 표시해 주는 구문
DESC MEMBER;
COMMIT;
ROLLBACK;
■ 제약조건
1. NOT NULL 제약조건
- 컬럼에 NULL 값을 허용하지 않음
- 컬럼 레벨에서만 설정 가능
2. UNIQUE 제약조건
- 컬럼 입력 값이 중복된 값을 가질 수 없음
- 컬럼 레벨, 테이블 레벨 모두 설정 가능
- 여러 컬럼 묶어서 하나의 UNIQUE 제약조건으로 설정 가능
(테이블 레벨로만 설정 가능,
제약조건이 설정되어 있는 컬럼 값이 모두 중복되는 경우에만 오류 발생)
3. CHECK 제약조건
- 컬럼에 기록되는 값의 조건 설정(비교 값은 리터럴만 가능, 변하는 값 또는 함수 불가)
- 컬럼 레벨, 테이블 레벨 모두 설정 가능
CHECK (비교연산자)
CHECK(컬럼 [NOT] IN(값, 값, ...))
CHECK(컬럼 BETWEEN 값 AND 값)
CHECK(컬럼 LIKE '_문자')
...
4. PRIMARY KEY(기본 키) 제약조건
- 한 행의 정보 식별을 위한 제약조건
- 기본 키 설정 시 자동으로 NOT NULL, UNIQUE 제약조건 설정됨
- 한 테이블 당 한 개만 설정 가능 (한 개 이상의 컬럼 묶어서 기본 키 설정 가능 -> 복합키)
- 컬럼 레벨, 테이블 레벨 모두 설정 가능
5. FOREIGN KEY(외래 키) 제약조건
- 다른 테이블에 존재하는 값만 가져야 하는 제약조건 ( NULL 값 가능)
- 외래 키로 참조한 컬럼의 값만 기록 가능
- 컬럼 레벨, 테이블 레벨 모두 설정 가능
1) 컬럼 레벨
컬럼명 자료형(크기) [CONSTRAINT 제약조건명] REFERENCES 참조할테이블명[(기본 키)] [삭제룰]
2) 테이블 레벨
[CONSTRAINT 제약조건명] FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명[(기본 키)] [삭제룰]
CREATE TABLE MEMBER (
NO NUMBER,
ID VARCHAR2(20) NOT NULL, -- NOT NULL 제약조건
PASSWORD VARCHAR2(20) NOT NULL,
NAME VARCHAR2(15)NOT NULL,
GENDER CHAR(3),
AGE NUMBER,
GRADE_ID NUMBER CONSTRAINT MEMBER_GRADE_ID_FK
REFERENCES MEMBER_GRADE (GRADE_CODE), --FOREIGN KEY 제약조건
ENROLL_DATE DATE DEFAULT SYSDATE,
CONSTRAINT MEMBER_NO_PK PRIMARY KEY(NO), -- PRIMARY KEY 제약조건
CONSTRAINT MEMBER_ID_UQ UNIQUE(ID), -- UNIQUE 제약조건
CONSTRAINT MEMBER_GENDER_CK CHECK(GENDER IN ('남', '여')), -- CHECK 제약조건
-- CONSTRAINT MEMBER_GRADE_ID_FK FOREIGN KEY(GRADE_ID)
-- REFERENCES MEMBER_GRADE /*(GRADE_CODE)*/, -- 생략가능
CONSTRAINT MEMBER_AGE_CK CHECK(AGE > 0)
'국비과정 > Oracle' 카테고리의 다른 글
| 국비 35일차 - [DDL, DML] ALTER(컬럼 삭제, 이름 변경), DROP, INSERT, UPDATE, TRUNCATE (0) | 2022.05.17 |
|---|---|
| 국비 34일차 - [DDL] 외래 키 삭제룰, 서브 쿼리 이용한 테이블 생성, ALTER (0) | 2022.05.14 |
| 국비 32일차 - [SUBQUERY] 서브 쿼리(단일행, 다중행, 다중열, 다중행 및 다중열), 인라인 뷰, WITH, RANK 함수 (0) | 2022.05.12 |
| 국비 31일차 - [JOIN] OUTER JOIN, CROSS JOIN, NON EQU JOIN, SELF JOIN, 다중 JOIN (0) | 2022.05.10 |
| 국비 30일 차 - [평가] 데이터베이스 구현 (0) | 2022.05.09 |
댓글