DDL은 Data Definition Language의 약자로, 데이터베이스의 구조를 관리하는데 사용되는 SQL 명령어의 집합니다. DDL을 사용하여 테이블, 뷰(SELECT문의 결과를 담고 있는 가상의 테이블), 인덱스 등의 데이터베이스 객체를 생성, 수정, 삭제할 수 있다.
- CREATE : 새로운 데이터베이스 객체를 생성한다.
- ALTER : 기존 객체의 구조를 변경한다. (ADD, MODIFY, DROP)
- TRUNCATE : 테이블의 구조는 유지한 채 모든 데이터를 삭제한다.
- RENAME : 데이터베이스 객체의 이름을 변경한다.
CREATE
- CREATE 데이터베이스객체 객체명(
첫번째열 데이터타입,
n번째열 데이터타입) ;
CREATE DATABASE USERS;
# 어떤 스키마를 사용할 건지 작성
USE USERS;
# user 라는 이름의 테이블 생성
CREATE TABLE USER(
# VARCHAR타입의 10길이의 UNAME 생성
UNAME VARCHAR(10),
# INT타입의 11 길이의 UAGE생성
UAGE INT(11),
# VARCHAR타입의 10길이의 UGENDER 생성
UGENDER VARCHAR(10)
);
users라는 데이터 베이스에 uname, uage,ugender이라는 열을 가진 테이블이 생성된 모습을 볼 수 있다.
만약에 다른 데이터베이스의 테이블에서 데이터를 가져와서 데이터를 생성할 때는 아래와 같이 사용하면 된다.
- CREATE TABLE 테이블명 AS
SELECT 가져올항목 FROM 다른데이터베이스.기존테이블명;
# 같은 데이터베이스에 있으면 테이블 명만 작성
CREATE TABLE usercopy
AS
SELECT * FROM empcopy;
# ename 만 empcopy에서 가져와서 테이블 생성
CREATE TABLE username
AS
SELECT ename FROM empcopy;
INNER JOIN을 통해서 두 개의 테이블에서 합친 데이터를 가지고 올 때는 다음과 같이 사용한다.
# empcopy와 userloc 이름을 기준으로 데이터를 합친 테이블 생성
CREATE TABLE usertotal
AS
SELECT e.ename, e.gender, e.age, u.uloc FROM empcopy e
INNER JOIN userloc u
ON e.ename = u.uname;
만약 테이블 데이터는 가져오고 싶지 않은데, 테이블의 구조는 동일한 복사본을 원할 경우에는 다음과 같이 사용한다.
# usertotal의 테이블 구조만 복사
CREATE TABLE usertotal1015
AS
SELECT * FROM usertotal WHERE 1=0;
데이터는 존재하지 않고 테이블만 생성된 모습을 볼 수 있다.
ALERT
기존의 테이블의 구조를 변경하기 위한 명령문으로, 칼럼의 새로운 칼럼을 추가(ADD)하고, 기존 칼럼을 수정(MODIFY)하고 기존 칼럼을 삭제(DROP)할 때 사용한다.
ADD : 새로운 칼럼 추가
- ALTER TABLE 테이블명 ADD 칼럼명 데이터타입;
# usertotal에 tel 칼럼 추가
ALTER TABLE usertotal ADD tel INT;
MODIFY : 기존 칼럼 수정
- ALTER TABLE 테이블명 MODIFY 칼럼명 새로운_데이터타입;
# usertotal에 ename의 데이터 길이를 30으로 변경
ALTER TABLE usertotal MODIFY ename VARCHAR(30);
DROP : 칼럼 삭제
- ALTER TABLE 테이블명 DROP 칼럼명;
# usertotal에 tel 칼럼 삭제
ALTER TABLE usertotal DROP tel;
칼럼을 수정하거나 삭제할 때는 해당 칼럼의 데이터 무결성을 해치지 않는 범위 내에서만 시행된다. MODIFY를 통해 해당 열의 데이터 타입 길이를 줄일 때 기존의 데이터가 새로운 길이를 초과하면 해당 DDL 명령어는 실행되지 않는다.
TRUNCATE
테이블의 구조는 유지한 채 모든 데이터를 초기화 한다. 삭제된 데이터는 복구가 되지 않기 때문에 샤용에 유의해야 한다.
- TRUNCATE TABLE 테이블명;
RENAME
데이터베이스 객체(예: 테이블, 열)의 이름을 변경할 때 사용한다.
- RENAME TABLE 기존테이블명 TO 새로운테이블명;
# usertotal을 userinfo로 변경
RENAME TABLE usertotal TO userinfo;
'Database > MariaDB' 카테고리의 다른 글
MariaDB : 데이터 무결성을 위한 제약 조건 (1) | 2024.10.17 |
---|---|
MariaDB : JSON 데이터 사용하기 (0) | 2024.10.17 |
MariaDB : DCL (Data Control Language)과 TCL(Transaction Control Language)에 데해서 (0) | 2024.10.17 |
MariaDB : DML(Data Manipulation Language)에 대해서 (1) | 2024.10.16 |
MariaDB : 서브쿼리에 대해서 (0) | 2024.10.15 |
MariaDB: JOIN절에 대해서 (0) | 2024.10.15 |
MariaDB : 그룹함수, GROUP BY, HAVING절에 대해서 (0) | 2024.10.14 |
MariaDB : SQL 주요함수에 대해서 (0) | 2024.10.14 |