데이터 정의 언어(DDL) 소개
DDL은 _Data Definition Language_의 약자로, SQL(Structure Query Language)에서 데이터베이스 설계를 전반적으로 설명하는 명령어 모음입니다. DDL의 주요 명령어는 다음과 같습니다:
- CREATE: 새 객체를 생성하는 데 사용됩니다.
- ALTER: 기존 객체의 구조를 변경하는 데 사용됩니다.
- DROP: 객체를 삭제하는 데 사용됩니다.
MySQL에서 CREATE, ALTER 및 DROP 명령 사용
a. CREATE
CREATE 명령은 새 데이터베이스, 새 테이블 또는 새 _view_를 만드는 데 사용됩니다.
- 예:
CREATE DATABASE toko_buku; - 설명: 이 명령은
toko_buku라는 이름의 새 데이터베이스를 생성합니다.
b. ALTER
ALTER 명령은 이전에 생성된 테이블의 구조를 변경하는 데 사용됩니다. 이 작업은 열을 추가, 삭제, 수정하거나, 테이블을 수정하거나, 열에 새 속성을 부여하는 데 수행할 수 있습니다.
- 예:
ALTER TABLE buku ADD judul_buku varchar(20); - 설명: 이 명령은
buku테이블에 최대 문자 길이가 20인varchar데이터 유형의judul_buku라는 새 필드(열)를 추가합니다.
c. DROP
DROP 명령은 데이터베이스의 객체를 영구적으로 삭제합니다. 객체는 데이터베이스 자체, 테이블, function, index, procedure, trigger 또는 _view_가 될 수 있습니다.
- 예:
DROP DATABASE toko_buku; - 설명: 이 명령은
toko_buku라는 데이터베이스를 삭제합니다.
MySQL의 데이터 유형
적절한 데이터 유형을 선택하는 것은 데이터베이스 저장 효율성에 매우 중요합니다. 다음은 MySQL의 데이터 유형 범주입니다:
A. 숫자 데이터 유형
숫자 데이터를 저장하는 데 사용됩니다.
- TINYINT: 정수(양수/음수)를 저장합니다. 범위: -128 ~ 127. 크기: 1바이트(8비트).
- SMALLINT: 정수를 저장합니다. 범위: -32768 ~ 32767. 크기: 2바이트(16비트).
- MEDIUMINT: 정수를 저장합니다. 범위: -8388608 ~ 8388607. 크기: 3바이트(24비트).
- INT: 정수를 저장합니다. 범위: -2147483648 ~ 2147483647. 크기: 4바이트(32비트).
- BIGINT: 큰 규모의 정수를 저장합니다. 범위: -9223372036854775808 ~ 9223372036854775807. 크기: 8바이트(64비트).
- FLOAT: 단정밀도 부동 소수점 숫자를 저장합니다. 크기: 4바이트(32비트).
- DOUBLE / REAL: 배정밀도 부동 소수점 숫자를 저장합니다. 크기: 8바이트(64비트).
- DECIMAL / NUMERIC: 매우 높은 정밀도의 부동 소수점 숫자를 저장합니다. 크기: 8바이트(64비트).
B. 문자열 데이터 유형
문자나 텍스트 데이터를 저장하는 데 사용됩니다.
- CHAR: 고정 크기 문자열 데이터를 저장합니다(예: 상품 ID, 주민등록번호). 범위: 0 ~ 255자.
- VARCHAR: 가변 크기 문자열 데이터를 저장합니다. 범위: 0 ~ 65,535자(최신 버전).
- TINYTEXT: 짧은 텍스트 데이터를 저장합니다. 범위: 0 ~ 255자.
- TEXT: 일반 텍스트 데이터를 저장합니다. 범위: 0 ~ 65,535자.
- MEDIUMTEXT: 중간 길이 텍스트 데이터를 저장합니다. 범위: 0 ~ 16,777,215자.
- LONGTEXT: 매우 긴 텍스트 데이터를 저장합니다. 범위: 0 ~ 4,294,967,295자.
C. 날짜 및 시간 데이터 유형
시간 및 날짜 데이터를 저장하는 데 사용됩니다.
- DATE: 날짜를 저장합니다(형식:
YYYY-MM-DD). 범위: 1000-01-01 ~ 9999-12-31. 크기: 3바이트. - TIME: 시간을 저장합니다(형식:
HH:MM:SS). 범위: -838:59:59 ~ +838:59:59. 크기: 3바이트. - DATETIME: 날짜와 시간의 조합(형식:
YYYY-MM-DD HH:MM:SS). 범위: 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59. 크기: 8바이트. - YEAR: 연도를 저장합니다(형식:
YYYY). 범위: 1900 ~ 2155. 크기: 1바이트.
D. BLOB 데이터 유형(이진)
BLOB은 _Binary Large Object_의 약자입니다. 순수 이진 데이터를 저장하는 데 사용되며, _대소문자 구분_하며 이미지, 문서, 오디오와 같은 멀티미디어 파일에 이상적입니다.
- BIT: 이진 데이터를 저장합니다. 범위: 64비트 이진수.
- TINYBLOB: 최대 크기 255바이트.
- BLOB: 최대 크기 65,535바이트.
- MEDIUMBLOB: 최대 크기 16,777,215바이트.
- LONGBLOB: 최대 크기 4,294,967,295바이트.
SQL의 키 유형
SQL에서 키는 테이블의 데이터 행을 고유하게 식별하거나 한 테이블을 다른 테이블과 연결(관계)하는 여러 속성(열)의 조합입니다.
- Super Key: 테이블의 각 데이터 행을 고유하게 식별하는 데 사용할 수 있는 속성 집합입니다.
- Candidate Key: 중복 속성이 없는 최소 슈퍼키입니다. 후보 키는 고유 값을 식별하기 위해 가장 적은 필드 조합에서 선택됩니다.
- Primary Key: _레코드_의 기본 식별자로 선택된 후보 키입니다. 기본 키의 데이터는 비어 있지 않아야(Not Null) 하고 중복될 수 없습니다. 각 테이블에는 하나의 기본 키만 있을 수 있습니다.
- Alternate Key: 기본 키로 선택되지 않은 후보 키입니다.
- Foreign Key: 한 테이블을 다른 테이블과 연결하여 _부모_와 자식 관계를 형성하는 키입니다. 기본 테이블(부모)의 기본 키는 관련 테이블(자식)의 외래 키에 의해 참조됩니다.
- Composite Key: 엔터티를 고유하게 식별하기 위해 두 개 이상의 속성으로 구성된 키입니다. 일반적으로 단일 열이 기본 키 조건을 충족하지 않을 때 사용됩니다.
MySQL의 제약 조건 유형
_Constraint_는 데이터 무결성과 유효성을 유지하기 위해 열이나 테이블에 적용되는 제한 규칙입니다.
- NOT NULL: 레코드 입력 시 열을 비워둘 수 없도록 합니다. 해당 열은 데이터로 채워져야 합니다.
- UNIQUE: 열의 각 값이 서로 다르도록 합니다(레코드 중복 없음).
- PRIMARY KEY:
NOT NULL과UNIQUE제약 조건의 조합입니다. 테이블의 각 행을 고유하게 식별합니다. 하나의 테이블에는 하나의PRIMARY KEY만 허용됩니다. - FOREIGN KEY: 테이블 간 참조 무결성을 유지합니다. 자식 열의 값이 다른 테이블의 부모 열에 유효한 참조가 있어야 합니다.
- CHECK: 데이터가 데이터베이스에 저장되기 전에 유효성 검사를 수행합니다. 데이터는 부울 값으로 평가됩니다. 조건을 충족하면 _true_이고 저장되지만, _false_이면 SQL이 거부하고 오류 메시지를 표시합니다.
저자
Wilan
발리 아일랜드 테크노(Bali Island Tekno)의 정기 기고자로, 기술, 프로그래밍, 소프트웨어 엔지니어링 분야에 대한 지식을 적극적으로 공유하고 있습니다.