본문 바로가기
DB

[SQL] DDL - 데이터형, CREATE, 컬럼 주석(COMMENT)

by chan10 2021. 3. 12.

DDL(Data Definition Langauge)

o  데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하는 구문을 말한다.

o  오라클 객체 종류

테이블(TABLE), (VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX),

패키지(PACKAGE), 프로시저(PROCEDUAL), 함수(FUNCTION),

트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER)

  

오라클 데이터형

o  문자형 데이터

o  CHAR, VARCHAR2가 있으며 보통 문자열을 저장할 때는 VARCHAR2를 많이 사용한다.

o  CHAR, VARCHAR2 차이점

CHAR

고정형 문자열 타입으로 길이만큼 저장공간을 확보하여 사용한다.

(10선언, 2사용 -> 10공간 사용)

VARCHAR2

가변형 문자열 타입으로 길이만큼 공간을 확보하는 것이 아닌, 대입된 데이터만큼 공간을 확보한다.

(10선언, 2사용 -> 2공간 사용)

 

메모리 효율 및 권장 사양에 따라 VARCHAR2를 사용하는 것이 좋다.

컬럼 생성 시 크기는 예상되는 문자열의 최대 길이로 생성한다.

LONG ORACLE에서 사용을 권장하지 않는다

 

o  숫자형 데이터

 숫자형 데이터는 NUMBER를 사용하며 자바와 달리 실수, 정수 모두 같이 사용한다.

 

o  LOB

o  데이터를 저장하는 LOB에는 두가지의 종류가 있다.

    BLOB바이너리 파일 저장한다.

    CLOB문자열 저장

 

o  TIMESTAMP날짜 뿐만 아니라 시분초까지 저장한다.

  

CREATE

o  테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성하는 구문이다.

o  크기는 데이터가 들어갈 크기를 지정하며 한글은 3BYTE크기를 가진다.

o  사용 형식 : CREATE TABLE 테이블명 (컬럼명 자료형(크기), 컬럼명 자료형(크기), ….);

 

o  문자형 테이블 (CHAR, VARCHAR2)

CREATE TABLE TBL_STR(

 A CHAR(6),

 B VARCHAR2(6)

);

 

INSERT INTO TBL_STR VALUES('ABC','ABC'); --데이터입력

SELECT LENGTHB(A),LENGTHB(B) FROM TBL_STR; -- 저장공간을 확보하는 차이에 있어 할당된 컬럼의 길이가 다르다.

SELECT * FROM TBL_STR;

 

 

o  숫자형 테이블 (NUMBER)

정수, 실수 모두 저장하며 크기를 넘어가는 자리수의 숫자 입력 시 오류발생 한다.

사용 형식 : NUMBER([PRECISION,SCALE]) - [ ]부분 생략가능

                  PRECISION : 표현할 수 있는 전체 자리수(정수)(1~38)

                  SCALE : 소수점이하 자리수(-84~127)

CREATE TABLE TBL_NUM(

    A NUMBER,

    B NUMBER(5),

    C NUMBER(5,1),

    D NUMBER(5,-2)

);

INSERT INTO TBL_NUM VALUES(1234.567,1234.567,1237.567,1124.567);

--                                                             A            B              C              D : -2로인해 1124의 2부분 반올림처리

SELECT * FROM TBL_NUM;

  

o  날짜형 테이블(DATE)

CREATE TABLE TBL_DATE (

 BIRTHDAY DATE,

 DAY TIMESTAMP

);

INSERT INTO TBL_DATE VALUES(SYSDATE,SYSTIMESTAMP);

INSERT INTO TBL_DATE VALUES('1992/10/30','21/11/15 12:11:00');

SELECT * FROM TBL_DATE;

 

SUBQUERY를 이용한 CREATE TABLE

o  서브 쿼리를 이용해서 SELECT의 조회 결과로 테이블을 생성(복사)하는 방법이다.

컬럼 명과 데이터 타입, 값이 복사되고 제약 조건은 NOT NULL만 복사된다.

사용 형식 : CREATE TABLE 테이블명[(컬럼명,컬럼명.....)] AS 서브쿼리

- EMPLOYEE 테이블 전체 복사

CREATE TABLE EMP_COPY AS SELECT * FROM EMPLOYEE;

- 여러 테이블 컬럼 일부 복사

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);

- 데이터 없이 컬럼만 복사

CREATE TABLE EMP_COPY AS 

   SELECT EMP_NAME, DEPT_CODE, JOB_CODE

   FROM EMPLOYEE WHERE 1=2;    -- WHERE조건에 거짓 조건을 주어서 모든 데이터를 필터링한다.

 

 컬럼 주석(COMMENT)

o  테이블의 컬럼에 주석을 다는 구문

o  사용 형식 : COMMENT ON COLUMN 테이블명.컬럼명 IS 주석 내용;

 

o  컬럼에 COMMENT 설정

CREATE TABLE MEMBER (

    MEMBER_ID VARCHAR2(20),

    MEMBER_PWD VARCHAR2(20),

    MEMBER_NAME VARCHAR2(20)

);

 

COMMENT ON COLUMN MEMBER.MEMBER_ID IS '회원아이디';

COMMENT ON COLUMN MEMBER.MEMBER_PWD IS '회원 비밀번호';

 

 

SELECT * FROM USER_COL_COMMENTS

WHERE TABLE_NAME='MEMBER';

 

o  테이블에 COMMENT 설정

COMMENT ON TABLE MEMBER IS '회원정보관리';

SELECT * FROM USER_TAB_COMMENTS;