▶ DDL
Table
    1. 테이블명과 칼럼명을 부여하기 위한 규칙
    2. 칼럼의 Data Type
    3. NVARCHAR2
Data Type


1. CREATE 테이블 생성
2. AS
기존 테이블 복사
3. ALTER TABLE
테이블 구조 변경 ADD / MODIFY, RENAME COULMN, DROP COULMN
4. DROP TABLE
테이블 구조 삭제
5. RENAME TO
테이블명 변경
6. TURNCATE
테이블의 모든 로우를 제거

▶ DDL

  : 테이블의 구조를 생성, 수정, 제거하도록 하는 명령문 집합이다

 

Table

① 데이터를 담고 있는 객체가 테이블이다.

② 테이블은 DBMS상에서 가장 기본적인 객체로 컬럼과 레코드로 구성된 2차원 표의 객체이다.

③ SQL을 이용해 데이터를 조회, 삭제, 입력 수정할 대상이며 그 결과를 담고 있는 것이 바로 테이블이다

 

1. 테이블명과 칼럼명을 부여하기 위한 규칙

 반드시 문자(A-Z)로 시작해야 하며, 컬럼명은 최대 30바이트까지 가능하다.

 A-Z까지의 대·소문자와 0~9까지의 숫자, 특수기호( _ , $ , #)만 가능하다.

 오라클에서 사용되는 예약어나 다른 객체명과 중복하여 생성할 수 있다.

 공백을 허용하지 않는다.

 대소문자 구별이 없다. 다만 디폴트가 대문자이므로 소문자로 저장하려면 ' '로 묶어주어야 한다

 한 테이블에 사용 가능한 컬럼은 최대 255개까지다

 

2. 칼럼을의 Data Type

이름 설명
CHAR(size) 고정 길이 문자 데이터. 입력된 자료의 길이와는 상관없이 정해진 길이만큼 저장 영역 차지(문자길이+공백)
데이터를 입력하지 않으면 null이 자동으로 입력되고, 지정된 길이보다 긴 데이터가 입력되면 오류가 발생
최대크기: 2000 byte / 최소크기: 1 바이트



단위는 byte나 문자수가 된다. char(6 byte)와 char(6 char)으로 정의가 가능한데 그때 영문일 경우는 둘 다 6개의 데이터를 저장할 수 있으며 한글은 char(6 char)에만 6개의 글자를 저장할 수 있다.
VARCHAR2(size) 가변 길이 문자 데이터. 실제 입력된 문자열의 길이만큼 저장 영역을 차지
최대크기: 4000 byte / 최소크기: 1 바이트
NUMBER
NUMBER(p)
NUMBER(p, s)
NUMBER(전체 자릿수(p), 소수점이하 지릿수(s)) 로 표현되는 숫자 데이터 타입

전체 자릿수만 지정하면 소수점 이하는 반올림되어 정수값만 저장된다. 
전체 자릿수도 소수점 이하 자릿수도 모두 생략하면 입력한 데이터 값만큼 공간이 할당된다.

둘다 지정한 경우에는 실수 형태의 값이 저장된다. 최대 22byte이다
정밀도(p): 1~38. 디폴트 값은 38 / 스케일(s) -84 ~127. 디폴트 값은 0

NUMBER(3): 3자리 수치 (999까지 표현이 가능)
NUMBER(6,2): 소수점 2자리를 포함한 6자리 수치
NVARCHAR 문자열의 바이트가 아닌 문자 갯수를 길이를 취급함
유니코드를 지원하는 자료형
다국어 지원에 필요한 DB에 적합하다
동일 데이터를 저장시 CHAR보다 저장공간을 2배 차지함

 

 

3. NVARCHARData Type

: VARCHAR2처럼 바이트가아닌 문자 갯수 자체를 길이로 취급

이름 설명
Blob 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입
최대크기: 4GB
Clob 대용량의 텍스트 데이터를 저장하기 위한 데이터 타입
최대크기: 4GB
Date 날짜 형식을 저장하기 위한 데이터 타입
TimeStamp Date 데이터 타입의 확장된 형태
Rowid 테이블 내 행의 고유 주소를 가지는 64진수 문자 타입
해당 6byte(제한된 Rowid)  또는 10byte (확장된 Rowid)

 

 

 


1. 테이블 생성 ( CREATE TABLE 테이블명;

더보기

사원번호, 사원명, 급여 3개의 칼럼으로 구성된 EMP01 테이블 생성

CREATE TABLE EMP01(
    EMPNO NUMBER(4), 
    ENAME VARCHAR2(20), 
    SAL NUMBER(7, 2)
);

테이블 조회

SELECT * FROM TAB;

 

테이블의 구조 확인


2. 기존 테이블 복사 AS

더보기

기존 테이블과 동일한 구조와 내용을 갖는 테이블을 생성한다.

--기존 테이블과 동일한 구조와 내용을 갖는 테이블을 생성한다.
CREATE TABLE EMPLOYEES02
AS
SELECT * 
FROM EMPLOYEES;

SELECT문을 위와 같이 AS절 다음에 기술하여 출력방향이 화면이 아닌 새로운 테이블로 하면 테이블이 생성된다. 
즉, EMPLOYEES02는 EMPLOYEES 테이블이 그대로 복사되어 내용과 구조가 동일한 테이블이 생성된다.

 

SELECT * FROM TAB;

 

SELECT * FROM EMPLOYEES02;

> EMPLOYYES테이블과 구조가 똑같은 데이터가 조회된다


3. 테이블 구조 변경 ALTER TABLE

: ALTER TABLE 명령어는 테이블에서 칼럼의 추가, 삭제, 칼럼의 타입이나 길이를 변경할 때 사용한다.

 

⦁ ADD(컬럼명 자료형)절을 사용하여 새로운 칼럼을 추가

⦁ MODIFY(컬럼명 자료형)절을 사용하여 기존 칼럼을 수정

⦁ ​DROP COLUMN 컬럼명절을 사용하여 기존 칼럼을 삭제

더보기

① ALTER TABLE로 새로운 칼럼 추가 : ADD 절 사용

ALTER TABLE EMP01
ADD(JOB VARCHAR2(9));

-- 변경 확인
DESC EMP01;

 

② ALTER TABLE로 기존 칼럼 수정

: MODIFY절을 사용하여 칼럼을 수정한다. 데이터의 타입, 크기를 변경할 수 있다.

-- 직급을 최대 30자까지 입력할 수 있도록 크기 수정
ALTER TABLE EMP01
MODIFY(JOB VARCHAR2(30));

DESC EMP01;

 

③ ALTER TABLE로 기존 칼럼명 변경

: RENAME COLUMN 사용

--JOB컬럼의 이름을 RE_JOB로 컬럼명을 변경.
ALTER TABLE EMP01
RENAME COLUMN JOB TO RE_JOB;

DESC EMP01;

 

④ ALTER TABLE로 기존 칼럼 삭제

-- 직급(RE_JOB) 칼럼을 삭제
ALTER TABLE EMP01
DROP COLUMN RE_JOB;

DESC EMP01;

4. 테이블 구조 삭제 DROP TABLE

: 데이터와 테이블 전체를 삭제

더보기

테이블 삭제

DROP TABLE 테이블명;

--EMP01 테이블을 삭제
DROP TABLE EMP01;

 

휴지통(recyclebin)

-- recyclebin 구조 확인
desc recyclebin;

-- 휴지통(recyclebin) 보기
SELECT * FROM recyclebin;

-- 휴지통 비우기
purge recyclebin;

 

실수로 지운 테이블은 삭제를 취소하려면 다음 명령으로 복구하면 된다.

FLASHBACK TABLE 테이블명 TO BEFORE DROP;

FLASHBACK TABLE emp01 TO BEFORE DROP;

 

휴지통에 넣지 않고 바로 테이블을 삭제하려면 다음과 같은 명령으로 휴지통에 넣지 않고 삭제를 할 수 있다.

DROP TABLE 테이블명 PURGE;

DROP TABLE emp01 PURGE;

 

테이블 삭제와 무결성 제약 조건

삭제하고자 하는 테이블의 기본 키나 고유 키를 다른 테이블에서 참조해서 사용하는 경우에는 해당 테이블을 제거할 수 없다. 이러한 경우에는 참조하는 테이블을 먼저 제거한 후에 해당 테이블을 삭제해야 한다.

 


5. 테이블명 변경 RENAME TO ( RENAME 바꿀테이블명 TO 원래테이블명;

더보기
RENAME EMPLOYEES02 TO EMPLOYEES;

6. 테이블의 모든 로우를 제거 TRUNCATE ( TRUNCATE TABLE 테이블명;

: 모든 데이터를 삭제하고 디스크상의 공간도 줄어들게 된다.

더보기
TRUNCATE TABLE EMPLOYEES01;

TRUNCATE 특징

- 테이블을 TRUNCATE하면 테이블의 모든 행이 삭제되고 사용된 공간이 해제된다

- TRUNCATE TABLEDDL명령이므로 롤백 데이터가 생성되지 않는다

  DELETE 명령으로 데이터를 지우면 롤백 명령어로 복구할 수 있음

- TURNCATE명형을 사용하면 삭제 트리거가 실행되지 않는다

 

 

DELETE
데이터만 지워지고 쓰고 있던 디스크상의 공간을 그대로 가지고 있다
TRUNCATE
모든 데이터를 삭제하고 디스크상의 공간도 줄어들게 된다.
DROP
데이터와 테이블 전체를 삭제하게 된다.

 

'DB > SQL' 카테고리의 다른 글

JOIN  (0) 2022.04.03
무결성 제약 조건 *  (0) 2022.04.03
DML 테이블에 내용을 추가 • 수정 • 삭제  (0) 2022.04.03
SQL (Structured Query Language)  (0) 2022.04.03
DB (Data Base)  (0) 2022.03.24