--데이터베이스 생성
CREATE DATABASE DB명 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
--테이블 생성
--CREATE TABLE TABLE명 (컬럼명1 자료형 제약조건, 컬럼명2 자료형 제약조건);
create table test_table1 (
id int auto_increment,
name varchar(50) not null,
primary key (id)
);
💡 시퀀스
row
를 추가할 때 자동으로 증가하는 값이 저장되는 것.auto_increment
💡
char
vsvarchar
char
고정 길이 문자열.
지정된 값만큼 최대길이를 갖고 할당된 변수값이 더 작은 경우에 그 차이만큼 공간으로 채워진다. (공간의 낭비)
속도가 더 빠르다.varchar
가변 길이 문자열.
지정된 값만큼 최대길이를 갖지만 가변길이로 조정되어 할당된 변수값의 바이트로만 채워진다.
컬럼에 저장될 데이터의 조건을 설정하는 것
primary key
컬럼에 중복된 데이터를 저장할 수 없으며 null 값을 허용하지 않는다.
주로 각 row를 구분하기 위한 유일한 값을 저장하는 컬럼에 사용한다.
기본키라고도 부른다.
foreign key
지정된 테이블의 기본키 컬럼의 값만 저장할 수 있다.
흔히 참조키, 외래키라고 부르며, null 값을 허용한다.
create table test_table4 (
id int,
data1 int not null,
foreign key (data1) references test_table1(id) on delete cascade
);
not null
컬럼에 null 값을 저장할 수 없으며 쿼리문을 통해 반드시 값이 지정되어야 한다.
unique
컬럼에 중복된 값을 저장할 수 없다.
null 값을 허용한다. (null 값은 중복으로 저장될 수 있다.)
create table test_table5 (
id int,
data1 int not null,
unique (data1)
);
default
null이 들어올 경우 기본으로 설정되는 값을 지정한다.
default를 설정할 경우 컬럼에 null을 저장할 수 없다.
create table test_table6 (
id int,
data1 int not null,
data2 varchar not null default 'stranger'
);
select문을 통해 가져온 결과를 이용해 테이블을 생성할 때 사용
CREATE TABLE TABLE명 AS SELECT문
create table test_table2 as select name from table1;
--table1의 구조와 똑같은 테이블 생성
--항상 거짓이 되는 조건을 걸어 데이터 값이 생성되지 않게 한다.
create table test_table3 as select * from table1 where 1=0;
row
단위로 저장된다.
컬럼에 저장될 값을 지정하지 않으면 null
이 저장된다.
컬럼명을 생략하면 값이 순서대로 저장된다.
INSERT INTO TABLE명 (컬럼명) VALUES (값);
insert into test_table1 values (1, 'Ryan');
UPDATE TABLE명 SET 컬럼명=값 WHERE 조건
update test_table1 set name='Sam' where id=1;
데이터가 모두 삭제된다. (테이블이 삭제되는 것이 아님)
DELETE FROM TABLE명 WHERE 조건
delete from test_table1 where id=1;
RENAME
테이블의 이름을 변경할 수 있다.
ALTER
테이블의 컬럼을 변경하거나 추가, 삭제할 수 있다.
DROP
테이블을 삭제할 수 있다.
--테이블명 바꾸기
rename table old_name to new_name;
--컬럼의 자료형을 수정
alter table TABLE명 modify 컬럼명 자료형;
--컬럼명을 바꾸기
alter table TABLE명 change old_컬럼명 new_컬럼명 자료형;
--새로운 컬럼 생성
alter table TABLE명 add 컬럼명 자료형;
--특정 컬럼 삭제
alter table TABLE명 drop 컬럼명;
--테이블 삭제
drop table TABLE명
참고자료: 소프트캠퍼스