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)
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기