본문 바로가기

SQL + PL/SQL/SQL

DDL

DDL


데이터를 관리하고 저장하기 위해서 오브젝트를 사용하는데 이런 오브젝트를 생성, 변경, 관리하는 명령어들이 DDL



CREATE

새로운 오브젝트나 스키마를 생성


문법: CREATE TABLE 테이블명 (칼럼명1 데이터형식, 칼럼명2 데이터형식...) ;


*어떤 칼럼에 데이터가 입력되지 않으면 기본적으로 NULL 값이 입력되지만 NULL 값 대신 다른 값으로 지정되게 하려면

DEFAULT를 써주면 된다. 그러면 DEFAULT a 라고 예를들면, NULL 값 대신 a 라는 값이 지정됨. 데이터 형태만 동일하게 해주면 도니다.


테이블 이름은 반드시 문자로 시작

테이블이름이나 칼럼이름은 최대 30바이트





CTAS - 테이블 복사 

새로운 테이블에 기존에 만들어져있던 테이블을 참조해서 생성하는 방법

즉, 테이블을 복사!


문법: CREATE TABLE 새테이블명 AS SELECT (*/특정칼럼들) FROM 복사당하는테이블명


위에는 테이블의 구조와 데이터 모두 복사해 오는거지만

데이터만 빼고 구조만 가져오고 싶을때는

마지막에 WHERE절을 추가하되 WHERE 절 조건에는 틀린 조건을 적어줘야 함 1=2 이런걸로.





TEMPORARY TABLE 임시테이블 생성

테스트용으로 임시 작업용 데이터를 저장하기 위해 만들어진 기능


문법: CREATE GLOBAL TEMPORARY TABLE 테이블명 (칼럼1 데이터타입, 칼럼2 데이터타입 ...) ON COMMIT DELETE ROWS ;

또는 CREATE GLOBAL TEMPORARY TABLE 테이블명 (칼럼1 데이터타입, 칼럼2 데이터타입 ...) ON COMMIT PRESERVE ROWS ;


COMMIT DELETE ROWS --> COMMIT 시에 데이터를 삭제, 기본값

COMMIT PRESERVE ROWS --> 세션이 종료해야 데이터가 삭제됨


임시테이블은 작업하고 있던 터미널 외에 다른 세션에서는 이 임시테이블을 조회할 수 없다.


이미 생성되어 있는 TEMPORARY TABLE을 조회하려면


SELECT TEMPORARY, DURATION 

FROM USER_TABLES

WHERE TABLE_NAME='임시테이블명' ;


임시 테이블명 쓸때는 꼭 대문자로 써줘야함!




가상칼럼 테이블 생성

11G부터 추가된 기능이다.


가상칼럼으로 생성하고 싶은 칼럼에 옵션을 추가해주면 됨

예를들어 






ALTER

칼럼추가, 칼럼삭제, 칼럼이름이나 테이블이름을 바꾸는 작업 할 때 씀


칼럼 추가

문법: ALTER TABLE 테이블명 ADD (칼럼1 데이터타입 DEFAULT '내용' ) ;


DEFAULT 는 NULL값외에 다른값을 기본으로 하고 싶을때 쓰면 된다.


칼럼 이름변경

문법: ALTER TABLE 테이블명 RENAME COLUMN 칼럼명1 TO 새로운칼럼명 ;


테이블 이름변경

문법: RENAME 테이블명 TO 새로운테이블명 ;


칼럼데이터 크기 변경하기

문법: ALTER TABLE 테이블명 MODIFY (칼럼1 데이터타입) ;


예를들어 VARCHAR2(6)을 VARCHAR2(10)으로 바꾸고 싶다던지 할 때 쓰면 됨

아주 간편하게 고칠 수 있음 

원래는 데이터 백업받아서 원래 테이블 다 지우고 다시 만들어서 데이터 부어주고 해야되는거임.. 

MODIFY를 쓰면 손쉽게 바꿔


칼럼삭제

문법:  ALTER TABLE 테이블명 DROP COLUMN 칼럼명 ;






TRUNCATE

테이블의 데이터뿐 아니라 사용하고 있던 공간까지 반납


문법: TRUNCATE TABLE 테이블명 ;


TRUNCATE 하고 나서 그 테이블을 다시 조회해보면

no rows selected 라고 나옴, 즉 테이블 자체는 지워지지 않았어. 완전 초기화 된거나 마찬가지



DROP

테이블 자체를 다 싸그리 삭제


문법: DROP TABLE 테이블명 ;


DROP 하고 나서 그 테이블을 다시 조회해보면

ORA-00942: table or view does not exist 라고 나옴, 테이블이 지워졌다는 거임



DELETE와 TRUNCATE와 DROP의 차이점

표로 만들어서!!!


DELETE는 데이터만, 그래서 지워도 용량이 줄어들지 않는거임

하지만 원하는 데이터만 골라서 삭제가 가능

TRUNCATE는 데이터+공간까지, 공간까지 지우니까 용량이 줄어듬, 데이터가 한건도 없는 백지상태가 됨

하지만 원하는 데이터만 삭제할수없고 통으로 지우기 때문에 잘 서야함

DROP은 테이블자체, 공간,데이터,인덱스,제약조건 다 삭제됨




데이터 딕셔너리 

(DATA DICTIONARY)


오라클 데이터베이스를 운영하기 위한 정보들을 모아두고 관리하는데 모아두는것을 데이터 딕셔너리

또는 딕셔너리 테이블이라고도 함

많은 정보들이 들어있지만 자주쓰고, 필요한것만 외워두면 된다.


BASE TABLE / DATA DICTIONARY VIEW 로 나눌수 잇는데

베이스는 사용자 아무도 접근 못함

사용자들은 후자를 통해서만 딕셔너리를 SELECT 할수 있음


새로운 테이블이 생성되는 등 데이터베이스에 변경사항이 생길경우

DDL 문장을 수행하는 순간 딕셔너리 내용은 자동 변경 됨


베이스는 DATABASE를 생성하는 시점에서 자동으로 만들어지지만

후자는 CATALOG.SQL 이란 파일이 수행되어야만 만들어진다.

DBCA로 생성할 경우 자동으로 수행되지만

CREATE DATABASE라는 명령어로 수동으로 데이터베이스 생성할때는 우리가 직접 수동으로 수행해야함


후자는 또 두개로 나뉨

Static data dictionary view

--> 우리가 수동으로 업데이트 하기 전까진 내용 절대 안바뀜

즉, 내용들이 자동으로 변경안되고 수동으로 변경해줘야함


Dynamic Performance View

--> 자동으로 바뀜





**********DELETE 실습 안했음!! 해야함.***************

*****************딕셔너리 마지막에 실습해보는거 안했음 하기!! *****************



11G 추가내용

*********가상칼럼 안했음***********

읽기전용테이블도 안했음 --> 렉쳐노트 실습 다시한버체크 무슨 내용이있었음

이거 두개 엮어서 같이 해주기


11G에서 추가된거라고


'SQL + PL/SQL > SQL' 카테고리의 다른 글

INDEX - 인덱스  (0) 2013.01.13
CONSTRAINT - 제약조건  (0) 2013.01.13
DML  (0) 2013.01.13
SUB QUERY - 서브쿼리  (0) 2013.01.04
JOIN  (0) 2013.01.04