본문 바로가기

SQL

SQL (5) DDL

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