728x90
기존방법으로 MySQL DB 만들기
Mysql에서 table을 구성하려면 다음과 같은 절차를 거쳐야 한다.
예제로 쓸 DB를 만들면
mysql> create database example;
Query OK, 1 row affected (0.00 sec)
테이블이 없는 상태다
mysql> use example;
Database changed
mysql> show tables;
Empty set (0.00 sec)
create table <테이블명> 뒤에 컬럼명과 속성들, 그리고 고유키를 설정해준다.
mysql> create table users
(id int not null auto_increment,
name varchar(50) not null,
email varchar(200) not null,
primary key (id));
Query OK, 0 rows affected (0.01 sec)
짠 완성이다.
mysql> desc users;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| email | varchar(200) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
근데 너무 귀찮다.. 테이블이 100개라면? 1만개라면..? 그리고 나와 협업하는 동료에게 DB 내부 수많은 테이블을 전달하려면..?
음....그래서 우리는 dbmate를 사용해본다.
설치하고
npm install dbmate
환경변수를 관리하는 .env 파일을 만들어서 DATABASE_URL을 설정한다.
DATABASE_URL="mysql://USERNAME:PASSWARD@HOST:PORT/DATABASE"
진행하는 디렉토리 바로 하위에 db디렉토리를 만들고 table을 형성하는 명령어를 입력해주면 migrations 디렉토리가 형성되며 내부에 테이블에 관한 .sql 파일이 형성된다.
dbmate new create_users_table;
생성된 파일 내부의 -- migrate:up // -- migrate:down 에 테이블 정보를 입력하고
-- migrate:up
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(200) NOT NULL,
email VARCHAR(500) NOT NULL,
password VARCHAR(2000) NOT NULL,
phone_number VARCHAR(300) NOT NULL,
point DECIMAL(6,0) NULL DEFAULT 100000,
CONSTRAINT user_email UNIQUE (email)
);
-- migrate:down
DROP TABLE users;
원하는 테이블 마큼 위의 단계를 반복해주면 다음과 같이 테이블 마다 파일이 형성된다.
그리고 터미널에서 dbmate up 명령어를 쓰면, schema.sql 파일이 형성되고, 진행했던 스키마 내부에 테이블도 형성된다.
mysql> show tables;
+----------------------+
| Tables_in_example |
+----------------------+
| categories |
| images |
| products |
| products_images |
| products_information |
| reviews |
| schema_migrations |
| users |
+----------------------+
8 rows in set (0.00 sec)
이제 해당 DATABASE에 값들을 넣고 진행하면 되는데... CSV 파일을 DB에 넣는 과정은 이어지는 글을 통해 살펴보도록 하자.
'DB > SQL' 카테고리의 다른 글
[SQL] MySQL 활용 쿼리문 살펴보기 (0) | 2022.08.09 |
---|