테이블 생성/복사/삭제 및 임시테이블 생성 등

1 분 소요

💼📝🔑⏰ 📙📓📘📒🎓

💼 DDL 테이블 생성

  • TABLESPACE 를 적지 않으면 Defalut로 만들어진다.
    • (예, D:,C:,E:,F: 드라이브로 나누는 개념) ※무조건 생성이됨….
  • select * from database_properties : 데이터 베이스 속성을 확인 할 수 있다. tablespace도 확인가능(temp)
  • 테이블 이름은 30byte가 기본으로 잡혀있었는데, 12cR2 이후 버전부터 128바이트까지 생성가능 )
  • 숫자 시작 안됨, 특수문자 쓸수 있지만 되도록 x 쓸라면 쌍따옴표로 묶어주라…
  • 글로벌 temp테이블 (배치할때 많이 사용한다)
CREATE TABLE userTBL --회원 테이블
( userID CHAR(8),
  userName NVARCHAR2(10),
  birthYear NUMBER(4),
  addr NUMBER(2),
  mobile1 CHAR(3),
  mobile2 CHAR(8),
  height NUMBER(3),
  mData DATE
  );
  --TABLESPACE scottXX;
CREATE TABLE buyTBL
(
    idNum NUMBER(8),
    userID CHAR(8),
    prodName NCHAR(6),
    groupName NCHAR(4),
    price NUMBER(8),
    amount NUMBER(3)
);

💼 테이블 복사기능! CTAS라 한다!

📝 모든 테이블 복사

  CREATE TABLE 생성할 테이블명
  AS SELECT * FROM 원본 테이블명;
  -- EX)
  CREATE TABLE dept6
      AS
      SELECT dcode, dname
      FROM dept2
      WHERE dcode IN(1000,1001,1002);

📝 테이블의 구조만 복사하기

    CREATE TABLE DEPT5
    AS 
        SELECT * 
        FROM dept2
        WHERE 1=2;  -- 조건을 false로 만들기
        --그렇기 떄문에 테이블 구조만 가져온다.

💼 테이블 삭제

  • TRUNCATE : 테이블 구조는 남아 있다
  • DROP TABLE : 테이블 구조 자체도 없에 버림

💼 읽기 전용 테이블로 변경하기 (11g 버전 부터 나옴)

  • read only로 바뀌면 insert 나 update가 되지 않는다.
  • 18c 버전이후 부터는 다시, 쓰기로 변경 가능
CREATE TABLE t_readonly
(
    no NUMBER,
    name VARCHAR2(10)
);
INSERT INTO t_readonly values(1,'aaa');
commit;

ALTER TABLE t_readonly read only; --읽기 전용으로 바꿈

💼 임시 테이블

  • 메모리에서 작업되기 때문에 빠르다
  • COMMIT하면 사라짐

📝 임시 테이블 생성

CREATE GLOBAL TEMPORARY TABLE temp01
(
    no number,
    name varchar2(10)
)
ON COMMIT DELETE ROWS;

INSERT INTO temp01 VALUES(1,'AAA');

SELECT * FROM temp01;
commit; 

CREATE GLOBAL TEMPORARY TABLE temp03
    AS
    SELECT dcode, dname
    FROM dept2;

-- 가상 컬럼 테이블 생성하기 11g 버전이상
CREATE TABLE vt001(
  no1 number,
  no2 number,
  no3 number GENERATED ALWAYS AS ((no11*12)+12) 
); 
-- 가상 컬럼 에는 자동으로 데이터가 부여된다. 직접 데이터를 넣는건 불가능 하다
--가상과 디폴트의 차이
    -- 디폴트는 직접 데이터를 넣는게 가능
    -- 가상 컬럼은 직접 데이터 넣는게 불가능

💼 컬럼 제어문

-- 컬럼 삭제;
ALTER TABLE dept7 DROP COLUMN loc;
ALTER TABLE dept7 DROP COLUMN loc CASCADE CONSTRAINTS;

-- 컬럼의 데이터 형식 변경
ALTER TABLE dept7 MODIFY (addr NVARCHAR2(10) NULL);

-- 새로운 컬럼을 추가하기
ALTER TABLE dept6
    ADD (LOC VARCHAR2(10));
    
-- 새로운 컬럼을 추가하면서 디폴트값 주기
ALTER TABLE dept6
    ADD (LOC2 VARCHAR2(10), 'seoul');

댓글남기기