ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] DDL - CREATE, DROP, ALTER, RENAME, TRUNCATE
    Database/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

     

     

     

    반응형

    댓글

Designed by Tistory.