블로그 내의 모든 예시와 실습은 VMware workstation16.2.3, Centos7을 활용 합니다.
데이터 정의어(DDL, Data Definition Language)
- 데이터베이스의 구조를 정의하거나 변경, 삭제하기 위해 사용하는 언어
- CREATE(개체 생성), ALTER(개체 수정),DROP(개체 삭제),TRUNCATE(개체 초기화)
Database 생성
mariadb> create database
- 확인
mariadb> show databases;
Database 삭제
mariadb> drop database
- 확인
mariadb> show databases;
Table 생성
- 데이터베이스가 먼저 만들어져 있어야 하고 데이터베이스 선택 후 생성 가능
mariadb> create database mytest01;
mariadb> use mytest01;
mariadb> <테이블명> (</b><컬럼명></b>데이터타입[옵션][제약조건 ...],...);컬럼명>테이블명>
mysql> create table test_member(
->no int <b style:”colorblue”>auto_increment not null primary key,
-> name char(20),
-> id varchar(20) unique,
-> password varchar(50) <b style:”colorblue”>default “1234”</b>,
-> reg_date datetime not null);
- 테이블 생성 확인
mariadb> show tables;
- 테이블 구조 확인
mariadb> desc <테이블명>;테이블명>
데이터 타입
- 저장될 테이터의 형태 [숫자형]
타입 | 크기 | 데이터 |
---|---|---|
bool,boolean | 1byte | 참(true)/거짓(false) |
tinyint | 1byte | 정수 |
int ,integer | 4byte | 정수 |
bigint | 8byte | 정수 |
float | 4byte | 부동소수점(실수) |
double | 8byte | 부동소수점(실수) |
bit(n) | (n)bit | 정수 |
[문자형]
타입 | 크기 |
---|---|
char(n) | (n)byte 고정형 최대 2^8 byte |
varchar(n) | (n) byte 가변형 최대 2^8 byte |
text | 2^16byte |
longtext | 2^32byte |
[날짜형]
타입 | 크기 |
---|---|
date | YYYY-MM-DD |
time | HH:MM:SS |
datetime | YYYY-MM-DD HH:MM:SS |
timestamp | YYYY-MM-DD HH:MM:SS(time_zone이 반영된 시간) |
year | YYYY |
제약 조건
- 데이터의 무결성을 지키기 위해 제한된 조건
- 테이블 및 열(컬럼) 레벨에서 적용가능하며, 테이블의 생성이나 구조 변경 시에도
- 적절한 제약조건을 골라서 사용
조건 | 기능 |
---|---|
NOT NULL | NULL 값 사용 제한 |
UNIQUE | 테이블 내에서 해당 column의 값이 유일하도록 설정(중복 불가능) |
PRIMARY KEY(기본키) | 테이블의 각 행을 고유하게 식별하는 값(UNIQUE + NOT NULL) |
FOREIGN KEY(외래키) | 두 테이블의 데이터 간 연결을 설정하고 강제 적용하여 외래 키 테이블에 저장될 수 있는 데이터를 제어 |
CHECK | 해당 coulmn에 저장 가능한 데이터 값의 범위나 조건 지정 |
Table 수정(구조 변경)
mariadb> alter table <테이블명>
[ACTION]
옵션 | 기능 |
---|---|
add | column 추가 |
drop | column 삭제 |
modify | column 수정 |
change | column 변경 |
rename | Table 명 변경 |
Table 수정(구조 변경) - add
- Column 추가
mysql>alter table <테이블명> add <컬럼명> <데이터타입> [옵션] [제약조건] [위치 옵션];데이터타입>컬럼명>테이블명>
- 위치 옵션
- first: 가장 위에 추가
- after <컬럼명> : 해당 컬럼 뒤에 추가컬럼명>
Table 수정(구조 변경) - drop
- Column 삭제
mariadb> alter table <테이블명> drop <컬럼명>;</b>컬럼명>테이블명>
Table 수정(구조변경) - modify
- column 수정
alter table <테이블명> modify <컬럼명> <데이터타입> [옵션] [제약조건];</b>데이터타입>컬럼명>테이블명>
Table 수정(구조변경) - change
- column 변경
mariadb> alter table <테이블명> change <기존컬럼명 <새컬럼명> <데이터타입> [옵션] [제약조건];</b>데이터타입>새컬럼명>테이블명>
Table 수정(구조 변경) - rename
- 테이블 이름 변경
alter table <기존 테이블명=""> rename <변경할 테이블명="">;</b>변경할>기존>
Table 삭제
mariadb> drop table <테이블멸>;테이블명>;</b>테이블멸>