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 숫자형 데이터
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의 조회 결과로 테이블을 생성(복사)하는 방법이다.
o 컬럼 명과 데이터 타입, 값이 복사되고 제약 조건은 NOT NULL만 복사된다.
o 사용 형식 : CREATE TABLE 테이블명[(컬럼명,컬럼명.....)] AS 서브쿼리
- EMPLOYEE 테이블 전체 복사 CREATE TABLE EMP_COPY AS SELECT * FROM EMPLOYEE; |
- 여러 테이블 컬럼 일부 복사 CREATE TABLE EMPLOYEE_COPY AS 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; |
![]() |