[DB] MySQL 테이블 다루기
1. 테이블 생성
테이블은 말 그대로 데이터를 담을 표와 같다.
create table `테이블이름` (
`컬럼1` 데이터타입 제약조건,
`컬럼2` 데이터타입 제약조건,
...
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
create table `users` (
`id` int not null auto_increment primary key,
`name` varchar(100) not null,
`email` varchar(100) unique key,
`createdAt` timestamp DEFAULT current_timestamp,
`updatedAt` timestamp DEFAULT current_timestamp
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
이 테이블은 사용자 정보를 저장하는 users 테이블이다.
id: 번호 자동 증가name: 이름 (비어있으면 안됨)email: 중복 안 되는 이메일 주소 (null 가능)created_at: 생성 시간, 기본값은 현재 시간updatedAt: 수정 시간
자주 사용하는 MySQL의 데이터 타입
| 자료형 | 설명 |
|---|---|
int |
정수(4 Byte) |
int unsigned |
unsigned는 속성값으로, 양수(음수의 범위만큼 양수의 범위로 더 사용할 수 있다.) |
tinyint |
정수(1 Byte) |
bigint |
정수(8 Byte) |
char(n) |
고정형 문자. n은 글자수를 의미. 최대 255까지 가능 사이즈를 아는 고정된 문자를 저장할 때 사용 저장된 글자수가 n 보다 작으면 공백을 채운다. |
varchar(n) |
가변형 문자. n은 글자수를 의미. 최대 65,535까지 가능 집주소처럼 변화가 있는 값을 저장하는 데 사용 |
text |
가변형 큰 문자 데이터 저장 검색을 위한 인덱스가 제공되지 않음 |
bool 또는 boolean |
true 또는 false 값 저장 데이터는 0(false)과 1(true)로 들어간다. |
datetime |
날짜 저장. 타임존 지원 안함 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
timestamp |
날짜 저장. 타임존 지원 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 |
json |
JSON 데이터를 저장 |
enum(값1, 값2...) |
정의한 값만 저장할 수 있는 타입 |
2. 테이블 수정
컬럼 추가
alter table `테이블이름` add column `컬럼이름` 데이터타입 제약조건;
컬럼명, 타입 수정
alter table `테이블이름` change column `기존컬럼이름` `새컬럼이름` 데이터타입;
컬럼 삭제
alter table `테이블이름` drop column `컬럼이름`;
3. 테이블 삭제
테이블 자체를 완전히 삭제. 복구 불가!
drop table `테이블이름`;
테이블 내용만 지우고 싶다면?
테이블은 남기고 데이터만 지우고 싶을 땐 truncate를 쓴다.
truncate table `테이블이름`;
Leave a comment