-
[SQL] DDL - CREATE, DROP, ALTER, RENAME, TRUNCATEDatabase/SQL (oracle, mysql) 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
반응형'Database > SQL (oracle, mysql)' 카테고리의 다른 글
[SQL] MERGE - 병합 (0) 2019.05.29 [SQL] DML - INSERT, DELETE, UPDATE (데이터 조작어) (0) 2019.05.29 [SQL] SUB QUERY ( 서브 쿼리) (0) 2019.05.28 [ SQL ] JOIN 의 종류 (0) 2019.05.27 [DB] SQL 숫자, 날짜, 문자 함수 (0) 2019.05.24