Database/SQL (oracle, mysql)

[SQL] DDL - CREATE, DROP, ALTER, RENAME, TRUNCATE

jinsiri 2019. 5. 28. 17:55

DDL ( Data Definition Language) - 데이터 정의어( AUTO COMMIT )

- CREATE, DROP, ALTER, RENAME, TRUNCATE

 

1. 일반적인 테이블 생성

CREATE TABLE 테이블명 (

컬럼명1 자료형, 

컬럼명2 자료형,

);

 

2. 서브쿼리를 이용한 테이블 생성

CREATE TABLE 테이블명

AS 서브쿼리; <-- 복사하기

- 제약은 복사에서 제외한다.

- 기존테이블의 구조(컬럼, 자료형)와 (행)데이터를 복사

CREATE TABLE emp4 AS SELECT * FRO M EMP;

제약 (EMPNO에 대한 NOT NULL제약은 복사되지 않음

        -> NOT NULL: 행 입력시 데이터를 반드시 전달받는다.

 

3. 서브쿼리를 이용한 테이블 생성: 원하는 컬럼과 행만 복사

CREATE TABLE 테이블

AS SELECT EMPNO, ENAME, JOB FROM EMP -- 어느 컬럼을

WHERE DEPTNO=30; -- 어느 조건에

 

4. 서브쿼리를 이용한 테이블 생성: 구조(컬럼, 자료형) 만 복사, 데이터 복사 X

CREATE TABLE 테이블

AS SELECT * FROM EMP

WHERE '길동' = '라임'; -- 일부러 행을 가져오지 않는다. 데이터 복사를 하지 않고 구조만 가져오는것

 

제약의 종류는?

NOT NULL - 중복된 데이터를 안받음

UNIQUE - ID같은것

PRIMARY KEY - NOT NULL과 UNIQUE를 동시에 만족하는 조건 , 행의 구분

FOREIGN KEY - 다른 부서를 참고할때 사용하는 키

CHECK - 수정전에 체크하는것 (ex. 사람은 100살 이상 못살아!)

 

자료형의 종류!

CHAR : 주어진 크기만큼 고정길이의 문자 저장

VARCHAR2: 주어진 크기만큼 가변길이의 문자 저장

NUMBER(자릿수, 소숫점자릿수) : 정밀도와 스케일로 표현되는 숫자

DATE: 날짜 형식 저장

TIMESTAMP: DATE형의 확장된 형태

BLOB: 대용량의 바이너리 데이터를 저장, 최대 4GB

CLOB: 대용량의 텍스트 데이터를 저장, 최대 4GB

BFILE: 대용량의 바이너리 데이터를 파일형태로 저장, 최대 4GB


테이블 삭제하기

DROP TABLE 테이블명;

테이블을 삭제한다. 단, 여러개 테이블을 한번에 삭제하는 방법은 없다.

시스템 테이블 - 오라클에서 관리하는 테이블


테이블 구조 변경하기 ( 컬럼수, 자료형, 바이트 수 변경) - 자주 사용하지 않는다.

ALTER TABLE 테이블

ADD (email VARCHAR2(20)); <-- 데이터 추가

 

ALTER TABLE 테이블

MODIFY ( email VARCHAR2(30)); <-- 데이터 속성 변경

 

ALTER TABLE 테이블

DROP column 삭제할 컬럼; = DROP (삭제할 컬럼); <-- 컬럼 삭제

 

ALTER TABLE 테이블

RENAME COLUMN 기존컬럼명 TO 새 컬럼명 <--컬럼이름변경

 

ALTER TABLE 테이블

SET UNUSED ( 컬럼명 ) ; <-- 컬럼 사용 안함

 

ALTER TABLE 테이블

DROP UNUSED COLUMN ; <-- UNUSED설정된 컬럼들 삭제


테이블 이름 변경

RENAME 기존객체명 TO 새로운 객체명 ;


테이블의 전체 데이터 지우기

TRUNCATE TABLE 테이블명; <-- 테이블 내의 모든 데이터가 삭제 되었음을 의미한다.

                                      <-- 속도가 가장 빠르다. 원상복구가 불가능하다. 

                                      <-- ROLLBACK 불가능 왜? DDL은 AUTO COMMIT을 하기 때문이다.

 


오라클 에러 종류

ORA -00904 : invalid identifier - 테이블을 생성하기 위해서는 최소 한 개 이상의 컬럼을 정의해야 한다.

ORA -00955 : name is already used by an existing object - 이미 존재하는 테이블명(객체명)과 같은 이름은 생성불가

ORA -00903 : invalid table name - 부적절한 테이블명(식별자명) : 숫자첫글자x, 예약어x, 특수문자x

 

 

 

반응형