DDL
Data Definition Language : 데이터 정의 언어
테이블 조작 또는 제어 관련 쿼리문
DDL 에는 4가지가 있다.
1. CREATE
2. ALTER
3. DROP
4. TRUNCATE
📁 1. CREATE : 테이블 생성
아래와 같이 작성한다.
CREATE TABLE 테이블명(
컬럼명 자료형 [제약조건],
...
);
-- CREATE
CREATE TABLE TBL_USER(
USER_NAME VARCHAR2(1000),
USER_AGE NUMBER
);
-- TBL_USER 라는 TABLE 생성
📁 2. ALTER : 테이블 수정
아래와 같이 작성한다.
ALTER TABLE 테이블명
-- 테이블명 수정 : RENAME TO 새로운 테이블명;
-- 컬럼 추가 : ADD(컬럼명 자료형(용량));
-- 컬럼명 변경 : RENAME COLUMN 기존컬럼명 TO 새컬럼명;
-- 컬럼 삭제 : DROP COLUMN 기존컬럼명;
-- 컬럼 타입 수정: MODIFY(컬럼명 자료형(용량));
-- 제약조건 추가 : ADD CONSTRAINT [제약조건이름] 각 제약조건 추가하는 문법
-- 제약조건 삭제 : DROP CONSTRAINT 제약조건이름
-- [] 안은 생략 가능
예시를 통해 살펴보자. TBL_USER 라는 테이블을 하나 생성해준다.
CREATE TABLE TBL_USER(
USER_NAME VARCHAR2(1000),
USER_AGE NUMBER
);
1) 테이블명 수정 : RENAME TO
ALTER TABLE TBL_USER RENAME TO TBL_MY_USER;
-- TBL_USER 를 TBL_MY_USER 로 테이블 명을 변경함
RENAME TO 를 사용한 이후에는 이전 테이블명(TBL_USER)을 사용하면 쿼리문이 작동하지 않는다.
변경한 테이블명(TBL_MY_USER)로 작성해야한다.
2) 컬럼 추가 : ADD(컬럼명 자료형(용량))
ALTER TABLE TBL_MY_USER ADD (USER_GENDER CHAR(4));
3) 컬럼명 수정 : RENAME COLUMN 이전컬럼명 TO 바꿀컬럼명
ALTER TABLE TBL_MY_USER RENAME COLUMN USER_NAME TO USER_NICKNAME;
4) 컬럼 삭제 : DROP COLUMN
ALTER TABLE TBL_MY_USER DROP COLUMN USER_GENDER;
5) 컬럼 자료형 수정 : MODIFY(컬럼명 자료형(용량))
ALTER TABLE TBL_MY_USER MODIFY(USER_NICKNAME VARCHAR2(500));
📁 2-1. CONSTRAINT : 제약조건
ALTER 문을 이용하여 제약조건을 추가할 수도 삭제할 수도 있다.
아래의 예시를 통해 살펴보자.
제약조건 예시를 위해 임의 테이블을 생성한다.
-- 제약조건
-- 예시용 임의 테이블 생성
CREATE TABLE TBL_CAR(
CAR_ID NUMBER,
CAR_NAME VARCHAR2(1000),
CAR_BRAND VARCHAR2(1000),
CAR_RELEASE_DATE DATE,
CAR_COLOR VARCHAR2(1000),
CAR_PRICE NUMBER
);
📌 제약조건 CASE 1
ALTER 문을 이용하여 제약조건을 추가하고 PRIMARY KEY 를 부여한다.
-- [CASE 1] ==============================================
ALTER TABLE TBL_CAR ADD CONSTRAINT PK_CAR PRIMARY KEY(CAR_ID);
<ALTER 문에 대한 해설>
ALTER TABLE TBL_CAR | TBL_CAR 테이블을 수정하겠다. |
ADD CONSTRAINT | 제약 조건을 추가하겠다. |
PK_CAR | 제약 조건의 이름 (제약 조건을 삭제할 때 사용함) |
PRIMARY KEY(CAR_ID); | PK라는 제약조건을 CAR_ID 컬럼에 부여! |
위의 구문을 실행하면 Columns 에 not null 항목에 체크가 되어있다.
CONSTRAINT PK_CAR 을 생략해서 쿼리문을 작성하여도 PK 를 생성하는 데에는 문제가 없다.
-- CONSTRAINT PK_CAR 생략
ALTER TABLE TBL_CAR ADD PRIMARY KEY(CAR_ID);
📌 제약조건 CASE 2
테이블을 생성함과 동시에 해당 컬럼에 PK 제약조건을 부여하는 것도 가능하다.
-- [CASE 2]=====================================
-- 테이블을 만듬과 동시에 해당 컬럼에 PK 제약 조건 부여
-- 제약 조건 추가는 OK
-- 제약 조건에 이름은? 랜덤하게 부여됨
CREATE TABLE TBL_CAR(
CAR_ID NUMBER PRIMARY KEY, -- 테이블 생성과 동시에 PK부여
CAR_NAME VARCHAR2(1000),
CAR_BRAND VARCHAR2(1000),
CAR_RELEASE_DATE DATE,
CAR_COLOR VARCHAR2(1000),
CAR_PRICE NUMBER
);
제약 조건을 추가하는 것에는 성공했으나, 제약 조건의 이름은 시스템이 랜덤하게 부여한다.
시스템이 부여한 이름을 가지고도 제약 조건을 삭제하는 것이 가능하다.
-- 시스템이 부여한 이름을 가지고도 제약 조건 삭제 가능.
ALTER TABLE TBL_CAR DROP CONSTRAINT SYS_C007024;
임의로 부여된 제약 조건의 이름을 확인해서 해당 제약 조건의 이름을 넣어 삭제하면 된다.
📌 제약조건 CASE 3
제약 조건의 이름을 부여함과 동시에 제약 조건을 추가하는 것 또한 가능하다.
제약 조건의 이름을 부여하기 위해서는 CONSTRAINT 키워드를 무조건 설정하고 싶은 이름 앞에 명시해준다.
-- 제약 조건의 이름을 부여하기 위해서는 CONSTRAINT 키워드를 무조건
-- 설정하고 싶은 이름 앞에 명시해준다.
CREATE TABLE TBL_CAR(
CAR_ID NUMBER CONSTRAINT PK_CAR PRIMARY KEY, -- 테이블 생성과 동시에 PK부여
CAR_NAME VARCHAR2(1000),
CAR_BRAND VARCHAR2(1000),
CAR_RELEASE_DATE DATE,
CAR_COLOR VARCHAR2(1000),
CAR_PRICE NUMBER
);
📌 제약조건 CASE 4
제약 조건을 테이블 생성 가장 아랫줄에 적어서 설정하는 방법도 있다.
CREATE TABLE TBL_CAR(
CAR_ID NUMBER,
CAR_NAME VARCHAR2(1000),
CAR_BRAND VARCHAR2(1000),
CAR_RELEASE_DATE DATE,
CAR_COLOR VARCHAR2(1000),
CAR_PRICE NUMBER,
CONSTRAINT PK_CAR PRIMARY KEY(CAR_ID)
);
👩💻 실습
-- [실습]
-- 동물 테이블
-- 고유 번호, 종류, 나이, 먹이
CREATE TABLE TBL_ANIMAL(
ANIMAL_ID NUMBER,
ANIMAL_CATEGORY VARCHAR2(1000),
ANIMAL_AGE NUMBER,
ANIMAL_FEED VARCHAR2(1000)
);
-- 제약 조건 추가(PK)
ALTER TABLE TBL_ANIMAL ADD CONSTRAINT PK_ANIMAL PRIMARY KEY(ANIMAL_ID);
-- 제약 조건 삭제(PK)
ALTER TABLE TBL_ANIMAL DROP CONSTRAINT PK_ANIMAL;
-- 컬럼 추가(성별)
ALTER TABLE TBL_ANIMAL ADD (ANIMAL_GENDER CHAR(1000));
-- 컬럼 이름 수정(고유 번호)
ALTER TABLE TBL_ANIMAL RENAME COLUMN ANIMAL_ID TO ANIMAL_SERIAL_NUMBER;
-- 컬럼 삭제 (먹이)
ALTER TABLE TBL_ANIMAL DROP COLUMN ANIMAL_FEED;
-- 컬럼의 자료형 수정
ALTER TABLE TBL_ANIMAL MODIFY(ANIMAL_GENDER NUMBER);
-- 동물 테이블 삭제
DROP TABLE TBL_ANIMAL;
📁 3. DROP : 테이블 삭제
아래와 같이 작성한다.
DROP TABLE 테이블명;
-- 예시 코드
DROP TABLE TBL_PRODUCT;
DROP TABLE TBL_CAR;
📁 4. TRUNCATE : 테이블 전체 내용 삭제
TRUNCATE 는 DROP 과 다르게
테이블을 삭제하는 것이 아니라 테이블 안의 내용 전체를 삭제하는 것이다.
아래와 같이 작성한다.
TRUNCATE TABLE 테이블명;
-- 예시 코드
TRUNCATE TABLE TBL_MY_USER;
'📁 Language > 🛢️ SQL' 카테고리의 다른 글
[SQL] 조합키(복합키) (0) | 2024.03.21 |
---|---|
[SQL] 제약 조건 (PK, FK, UK, NOT NULL, CHECK) (0) | 2024.03.21 |
[SQL] DML (SELECT, INSERT, UPDATE, DELETE) (0) | 2024.03.20 |
[SQL] SQL의 종류 - SQL명령어의 성격에 따라 분류한 것들 (0) | 2024.03.20 |
[SQL] 연산자(연결, 산술, 관계, SQL, 논리), WHERE (0) | 2024.03.20 |