1. 관리자로 접근
mysql -u root -p
-p : 비밀번호를 직접 입력하겠다는 의미
-u : 아이디 명시
2. 데이터베이스 생성
mysql> CREATE DATABASE minister;
Query OK, 1 row affected (0.01 sec)
3. 데이터베이스 사용
mysql> use minister
Database changed
4. 테이블 생성
기본 구문
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
...
PRIMARY KEY(column1),
CONSTRAIT 1,
CONSTRAIT 2
)
유저테이블
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
hashed_password VARCHAR(255) NOT NULL,
profile VARCHAR(2000) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY (email)
) DEFAULT CHARSET=utf8;
유저팔로우리스트테이블
CREATE TABLE users_follow_list (
user_id INT NOT NULL,
follow_user_id INT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, follow_user_id),
CONSTRAINT users_follow_list_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT users_follow_list_follow_user_id_fkey FOREIGN KEY (follow_user_id) REFERENCES users(id)
) DEFAULT CHARSET=utf8;
트윗테이블
CREATE TABLE tweets (
id INT NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
tweet VARCHAR(300) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
CONSTRAINT tweets_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id)
) DEFAULT CHARSET=utf8;
- NOT NULL: 해당 column은 NULL이 될 수 없음.
- AUTO_INCREMENT: 해당 column의 값이 자동으로 1씩 증가
- DEFAULT CURRENT_TIMESTAMP: 해당 column의 값이 없으면 default로 현재 시간을 사용
- ON UPDATE CURRENT_TIMESTAMP: 해당 row의 어떤 column 값이 수정되면 해당 column의 값을 수정이 이루어진 시간의 값으로 자동생성
- PRIMARY KEY: primary key 사용할 column을 지정
- UNIKEY KEY: 해당 column의 값은 중복되면 안됨.
- CONSTRAINT constraint_name FOREIGN KEY table_name (column_name) REFERNCES table_name (column_name): foreign key 걸기
5. 테이블 보기
mysql> SHOW TABLES;
+--------------------+
| Tables_in_minister |
+--------------------+
| tweets |
| users |
| users_follow_list |
+--------------------+
3 rows in set (0.00 sec)
반응형
'SW ENGINEERING > Flask' 카테고리의 다른 글
API 개발하기(13) - tweet 엔드포인트 (0) | 2021.02.21 |
---|---|
API 개발하기(12) - MySQL 설정 & 회원가입엔드포인트 (0) | 2021.02.18 |
API 개발하기(10) - MySQL 설치 (0) | 2021.02.17 |
API 개발하기(9) - 데이터베이스 개념 (0) | 2021.02.17 |
API 개발하기(8) - 미니터(Miniter) 개발하기(전문) (0) | 2021.02.16 |
최근댓글