DDL(Data Definition Language)은 데이터베이스, 테이블, 컬럼 등의 구조를 정의하고 관리하는데 사용됩니다. 이번시간에는 MySQL에서 DDL의 CREATE, ALTER, DROP 명령어에 대해 알아보았습니다.
CREATE 명령어는 데이터베이스, 테이블, 뷰 등을 생성할 때 사용됩니다.
-- 데이터베이스 생성(예시)
CREATE DATABASE new_smartfactory CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-- 테이블 생성(예시)
-- new_customer 테이블
-- custid(고객번호) CHAR(10), NOT NULL 제약조건, PK
-- custname(고객이름) VARCHAR(10), NOT NULL 제약조건
-- addr (주소) CHAR(10), NOT NULL 제약조건
-- phone (연락처) CHAR(11)
-- birth (생년월일) DATE
-- 기본키 제약 조건
-- 기본키는 중복 불가능
-- NULL 불가능
CREATE TABLE new_customer (
custid CHAR(10) PRIMARY KEY, -- PRIMARY KEY에는 NOT NULL 포함
custname VARCHAR(10) NOT NULL,
addr CHAR(10) NOT NULL,
phone CHAR(11),
birth DATE
);
-- 외래키가 있는 테이블 생성(예시)
-- orderid INT, NOT NULL 제약조건, PK, 숫자 자동 증가(AUTO_INCREMENT)
-- custid CHAR(10), NOT NULL 제약조건
-- prodname CHAR(6), NOT NULL 제약조건
-- price INT, NOT NULL 제약조건
-- amount smallint, NOT NULL 제약조건
-- 외래키 제약조건
-- 두 테이블 사이의 관계를 맺어줌 (= 다른 테이블의 기본키를 현재 테이블의 왜래키로 연결함)
-- 기본키를 갖는 테이블 : "기준" 테이블
-- 왜래키가 있는 테이블 : "참조" 테이블
-- 형식 : FOREING KEY(열_이름) REFERENCES 기준_테이블(열_이름)
-- ON UPDATE CASCADE : 기준 테이블의 데이터 수정시 -> 참조 테이블 데이터도 변경
-- ON DELETE CASCADE : 기준 테이블의 데이터 삭제시 -> 참조 테이블 데이터도 삭제
CREATE TABLE new_orders (
orderid INT PRIMARY KEY AUTO_INCREMENT, -- PRIMARY KEY에는 NOT NULL 포함
custid CHAR(10) NOT NULL,
prodname CHAR(6) NOT NULL,
price INT NOT NULL,
amount smallint NOT NULL,
FOREIGN KEY(custid) REFERENCES new_customer(custid) ON UPDATE CASCADE ON DELETE CASCADE
);
ALTER 명령어는 데이터베이스, 테이블, 컬럼 등을 수정할 때 사용됩니다.
-- 새로운 속성 추가
ALTER TABLE new_customer ADD nickname VARCHAR(10);
-- 고객 테이블에 새로운 속성 "nickname"이 생겼음
-- 속성 수정
-- 속성의 데이터타입 수정
ALTER TABLE new_customer MODIFY nickname INT;
-- 속성명 변경
ALTER TABLE new_customer CHANGE nickname n_name VARCHAR(10);
-- 기존 속성 삭제
ALTER TABLE new_customer DROP n_name;
새로운 속성 추가
속성의 데이터타입 수정
속성명 변경
기존 속성 삭제
DROP 명령어는 데이터베이스, 테이블, 뷰 등을 삭제할 때 사용됩니다.
DROP TABLE [테이블 명];
pk-fk 관계로 연결된 테이블은 "외래키가 설정된 테이블"을 먼저 삭제해야 함.
기준 테이블, 기본 키 테이블 -> (2) 나중 삭제
참조 테이블, 외래 키 테이블 -> (1) 먼저 삭제
뷰(View)?는 무었인가
SQL에서 뷰(View)는 하나 이상의 테이블에서 데이터를 추출하여 가상의 테이블을 생성하는 개념입니다. 즉, 뷰는 실제 데이터베이스 테이블에서 가져온 데이터를 다시 가공하여 새로운 가상의 테이블을 만드는 것입니다.
뷰는 데이터베이스의 보안과 사용성을 높일 수 있는 중요한 개념입니다. 뷰를 사용하면 여러 사용자가 동시에 데이터를 열람할 때, 데이터를 보호하기 위해 권한 설정이 용이해지며, 사용자가 필요한 데이터만을 추출하여 사용할 수 있습니다.
또한, 뷰를 사용하면 복잡한 SQL 쿼리를 단순화할 수 있으며, 특정 테이블의 데이터를 여러 개의 뷰로 나눠서 사용할 수 있습니다.
이번에 CREATE, ALTER, DROP을 배우며 느낀 점은, 이 세 가지 명령어를 제대로 이해하고 사용한다면 데이터베이스를 구축하고 유지하는 데 매우 중요한 역할을 할 수 있다는 것입니다. 데이터베이스에서 테이블은 데이터를 담는 그릇 역할을 하며, 이러한 테이블을 생성하고 수정하고 삭제하는 것은 데이터베이스의 구조를 결정하는 중요한 작업이라 생각합니다. 또한 데이터베이스의 구조와 동작 방식을 이해하는 데 큰 도움이 되었습니다.