DDL(Data Definition Language)
데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하는 구문을 말함
오라클 객체 종류
테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE), 프로시저(PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER)
CREATE
테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성하는 구문
CREATE TABLE 테이블명(컬럼명 자료형(크기), 컬럼명 자료형(크기), …);
CREATE TABLE MEMBER(
MEMBER_ID VARCHAR2(20),
MEMBER_PWD VARCHAR2(20),
MEMBER_NAME VARCHAR2(20)
);
오라클 데이터형
| 데이터형 | 설명 |
| CHAR | 고정길이 문자 데이터 |
| VARCHAR2 | 가변길이 문자 데이터 |
| NUMBER | 숫자 데이터 |
| NUMBER(길이) | 숫자 데이터로, 길이 지정가능 |
| DATE | 날짜 데이터 |
| LONG | 가변 길이 문자형 데이터 최대 2GB |
| LOB | 2GB까지의 가변길이 바이너리 데이터 저장 가능 (이미지, 실행파일 등 저장 가능) |
| ROWID | DB에 저장되지 않는 행을 식별할 수 있는 고유 값 |
| BFILE | 대용량의 바이너리 데이터 저장 가능(최대 4GB) |
| TIMESTAMP | DATE형의 확장된 형태 |
| INTERVAL YEAR TO MONTH | 년과 월을 이용하여 기간 저장 |
| INTERVAL DAY TO SECOND | 일, 시, 분, 초를 이용하여 기간 저장 |
컬럼 주석
테이블의 컬럼에 주석을 다는 구문
표현식
COMMENT ON COLUMN 테이블명.컬럼명 IS ‘주석 내용';
COMMENT ON COLUMN MEMBER.MEMBER_ID IS ‘회원아이디’;
COMMENT ON COLUMN MEMBER.MEMBER_PWD IS ‘비밀번호’;
COMMENT ON COLUMN MEMBER.MEMBER_NAME IS ‘회원이름’;
제약 조건(CONSTRAINTS)
테이블 작성 시 각 컬럼에 기록될 데이터에 대해 제약 조건을 설정할 수 있는데
이는 데이터 무결성 보장을 주 목적으로 함입력 데이터에 문제가 없는지에 대한
검사와 데이터 수정/삭제 가능 여부 검사 등을 위해 사용
| 제약조건 | 설명 |
| NOTNULL | 데이터에 NULL을 허용하지 않음 |
| UNIQUE | 중복된 값을 허용하지 않음 |
| PRIMARY KEY | NULL과 중복값을 허용하지 않음 |
| FOREIGN KEY | 참조되는 테이블의 컬럼의 값이 존재하면 허용 |
| CHECK | 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만 허용 |
NOT NULL
해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용특정 컬럼에 값을 저장/수정할 때는
NULL값을 허용하지 않도록 컬럼 레벨에서 제한
NOT NULL 예시1
CREATE TABLE USER_NOTNULL(
USER_NO NUMBER NOT NULL,
USER_ID VARCHAR2(20) NOT NULL,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50)
);
UNIQUE
컬럼 입력 값에 대해 중복을 제한하는 제약조건으로컬럼 레벨과 테이블 레벨에 설정 가능
UNIQUE 예시1
CREATE TABLE USER_UNIQUE(
USER_NO NUMBER, USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50)
);
PRIMARY KEY
테이블에서 한 행의 정보를 구분하기 위한
고유 식별자 역할NOT NULL의 의미와 UNIQUE의 의미를 둘 다 가지고 있으며
한 테이블 당 하나만 설정 가능 컬럼 레벨과 테이블 레벨 둘 다 지정 가능
PRIMARY KEY 예시1
CREATE TABLE USER_PRIMARYKEY(
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),
EMAIL VARCHAR2(50),
);
CREATE TABLE USER_PRIMARYKEY(
USER_NO NUMBER,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
PRIMARY KEY (USER_NO) );
FOREIGN KEY
참조 무결성을 위한 제약조건으로
참조된 다른 테이블이 제공한 값만 사용하도록 제한을 거는 것
참조되는 컬럼과 참조된 컬럼을 통해 테이블 간에 관계가 형성되는데
참조되는 값은 제공되는 값 외에 NULL을 사용 가능하며
참조할 테이블의 참조할 컬럼 명을 생략할 경우
PRIMARY KEY로 설정된 컬럼이 자동으로 참조할 컬럼이 됨
FOREIGN KEY 예시 1
CREATE TABLE USER_GRADE(
GRADE_CODE NUMBER PRIMARY KEY,
GRADE_NAME VARCHAR2(30) NOT NULL
);
INSERT INTO USER_GRADE VALUES(10, ‘일반회원‘);
INSERT INTO USER_GRADE VALUES(20, ‘우수회원‘);
INSERT INTO USER_GRADE VALUES(30, ‘특별회원‘);
SELECT * FROM USER_GRADE;
CHECK
SUBQUERY를 이용한 CREATE TABLE
서브 쿼리를 이용해서 SELECT의 조회 결과로 테이블을 생성하는 방법으로
컬럼 명과 데이터 타입, 값이 복사되고 제약 조건은 NOT NULL만 복사됨
CREATE TABLE EMPLOYEE_COPY
AS SELECT EMP_ID, EMP_NAME, SALARY, DEPT_TITLE, JOB_NAME
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID)
LEFT JOIN JOB USING(JOB_CODE);
'SQL' 카테고리의 다른 글
| SQL (8) PROCEDURE & FUNCTION & TRIGGER (0) | 2023.10.11 |
|---|---|
| SQL (7) OBJECT VIEW, OBJECT SEQUENCE, PL/SQL (1) | 2023.10.11 |
| SQL (4) SUBQUERY (2) | 2023.10.04 |
| SQL(3) GROUP BY & HAVING & JOIN (0) | 2023.09.27 |
| SQL(2) 함수 (2) | 2023.09.26 |