데이터 정의어(DDL)
데이터 정의어(DDL : Data Definition Language)
데이터를 정의하는 언어로서 데이터를 담는 그릇을 의미한다. 데이터 베이스를 정의하고 테이블을 생성하는 등 데이터를 담을 수 있는 골격을 결정하는 역할을 한다.
명령어
- CREATE(생성) : 데이터 베이스, 테이블을 생성한다.
- ALTER(수정) : 테이블을 수정한다.
- DROP(삭제) : 데이터 베이스, 테이블을 삭제한다.
- TRUNCATE(초기화) : 테이블 내 데이터를 초기화한다.
테이블 생성
create table 테이블명(
컬럼명1 데이터타입 [제약조건],
컬럼명2 데이터타입 [제약조건],
컬럼명3 데이터타입 [제약조건],
...
컬럼명n 데이터타입 [제약조건]
);
* 데이터타입
1. 숫자타입
정수 : tinyint, smallint,meduimint, int, bigint ..
실수 : float, double
2. 문자열타입
텍스트 : char, varchar, text
- char(10) : 1byte 만 저장하더라도 총 10byte 를 소모함
- varchar(10) : 1byte 만 저장하면 총 1byte 를 소모함, 총 65535byte 까지 저장 가능
바이너리 : binary, varbinary
열거 : enum
enum('남자','여자')
3. 날짜와 시간타입
날짜 : date
날짜와 시간타입 : datetime, timestamp
timestamp : 1970년 1월 1일 0시 0분 0초 부터, 밀리세컨드 단위로 증가
* 제약조건
종류 | 설명 |
not null | 컬럼에 null 을 저장할 수 없을 의미 |
unique | 중복된 값을 저장할 수 없음, 그 대신 null 값을 허용 |
default | 기본값을 설정 |
auto_increment | 자동으로 숫자가 증가되어 추가, 중복값이 저장되지 않음, 직접 데이터를 추가할 수 없음 |
primary key | 제약과 not null 제약을 동시에 가짐, 테이블에 오직 하나의 컬럼에만 적용됨. 데이터를 쉽고 빠르게 찾을 수 있게 설정(색인), 외래키가 참조할 수 있도록 설정 |
foreign key | 다른 테이블과 연결해주는 역할, 기준이 되는 테이블의 내용을 참조해서 레코드를 입력. primary key 를 참조 |
-- 예시)
create table member(
idx int auto_increment primary key,
userid varchar(20) unique not null,
name varchar(20) not null,
password varchar(20) not null,
regdate datetime default now()
);
테이블 수정
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입[제약조건]; -- *추가
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입[제약조건]; -- *수정
ALTER TABLE 테이블명 DROP 컬럼명 데이터타입[제약조건]; -- *삭제
테이블 삭제
테이블 자체를 모두 지우는 것으로 인덱스도 같이 지워진다.
DROP TABLE 테이블명 [CASCADE | RESTRICT];
-- *CASCADE : 연쇄제거, RESTRICT : 참조중 제거하지않음
데이터 삭제
테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납한다. 테이블 자제가 지워지는 것이 아니며, 인덱스 또한 TRUNCATE 된다.
TRUNCATE TABLE 테이블명;