테이블 생성

image.png

CREATE TABLE users(
	id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT
	,`name` VARCHAR(50) NOT NULL COMMENT '이름'
	,gender CHAR(1) NOT NULL COMMENT 'F=여자, M=남자'
	,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP()
	,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP()
	,deleted_at DATETIME
);

-- AUTO_INCREMENT : +1 함
-- UNSIGNED : 양수만 허용
-- NOT NULL : NULL을 금지
-- COMMENT : 코멘트 남기기(주석 같은 거) 
-- DEFAULT CURRENT_TIMESTAMP() : 값이 없을 때 현재 시간 자동 저장

-- 디폴트라 넣지 않아도 됨
-- ENGINE=INNODB : 스토리지 엔진(디폴트)
-- CHARSET=UTF8MB4 : 문자 인코딩(디폴트)
-- COLLATE=UTF8MB4_bin : 문자열 비교, 정렬 규칙. 대소문자 구분(디폴트)

다른 테이블과 유저 정보 공유하는 테이블 만들기

image.png

-- 게시글 테이블
-- pk, 유저번호, 제목, 내용, 작성일, 수정일, 삭제일
CREATE TABLE posts(
	id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT
	,user_id BIGINT UNSIGNED NOT NULL 
	,title VARCHAR(200) NOT NULL COMMENT '게시글 제목'
	,content VARCHAR(1000) NOT NULL COMMENT '게시글 내용'
	,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP()
	,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP()
	,deleted_at DATETIME
);

테이블 수정

image.png

-- FK 추가 방법
ALTER TABLE [테이블명]
ADD CONSTRAINT [Constraint명]
FOREIGN KEY (Constraint 부여 컬럼명)
REFERENCES 참조케이블명(참조테이블 컬럼명)
[ON DELETE 동작 / ON UPDATE 동작];

-- users와 posts의 유저 번호 연결 :
ALTER TABLE posts
ADD CONSTRAINT fk_posts_user_id
	FOREIGN KEY user_id
	REFERENCES users(id);
-- FK 삭제
ALTER TABLE posts
DROP CONSTRAINT fk_posts_user_id
;

image.png

테이블 삭제

DROP TABLE posts;
DROP TABLE users;

컬럼 추가 및 삭제

image.png

-- 추가
ALTER TABLE posts
ADD COLUMN image VARCHAR(100)
;
-- 삭제
ALTER TABLE posts
DROP COLUMN image
;

컬럼 수정

image.png

ALTER TABLE users 
MODIFY COLUMN gender VARCHAR(10) NOT NULL COMMENT '남자, 여자, 미선택'
;

AUTO_INCREMENT 값 수정