Web/Node.js

[Node.js] MySQL 예제

유제필 2022. 11. 27. 11:53

MySQL을 프롬프트와 Workbench로 실행하는 예제이다.

 

프롬프트로 하는 예제

 

데이터베이스 실행

먼저 MySQL을 프롬프트로 실행하는 방법이다.

프롬프트 실행 후 MySQL이 설치되어 있는 폴더 내 bin 폴더로 이동 후 MySQL을 실행한다.

cd C:\Program Files\MySQL\MySQL Server 8.0\bin

mysql -h localhost -u root -p
Enter password: [비밀번호 입력]

 

입력 후 아래와 같은 문구가 나온다면 MySQL이 성공적으로 실행 되었다.

 

 

데이터베이스 생성하기

먼저 데이터베이스를 생성하기 위해 CREATE SCHEMA [데이터베이스 명]을 실행해야 한다.

MySQL에서 데이터베이스와 스키마는 같은 개념으로, 데이터베이스를 생성하는 명령어이다.

 

먼저 testmysql 이라는 데이터베이스를 생성하고 use testmysql; 명령어를 추가로 입력한다.

use testmysql 명령어는 앞으로 생성한 testmysql을 사용하겠다고 MySQL에 알리는 명령어이다.

 

mysql> CREATE SCHEMA `testmysql` DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> use testmysql;
Database changed

 

 

테이블 생성하기

 

데이터베이스 생성 후 테이블을 생성해야 한다.

테이블이란 데이터가 들어갈 수 있는 틀을 의미하며, 테이블에 맞는 데이터만 들어갈 수 있다.

테이블을 생성하기 위해 CREATE TABLE 명령어를 사용하며, 마지막에 세미콜론으로 명령어를 마무리 한다.

mysql> CREATE TABLE testmysql.users(
  -> id INT NOT NULL AUTO_INCREMENT,
  -> name VARCHAR(20) NOT NULL,
  -> age INT UNSIGNED NOT NULL,
  -> married TINYINT NOT NULL,
  -> comment TEXT NULL,
  -> created_at DATETIME NOT NULL DEFAULT now(),
  -> PRIMARY KEY(id),
  -> UNIQUE INDEX name_UNIQUE (name ASC))
  -> COMMENT = '사용자 정보'
  -> DEFAULT CHARACTER SET = utf8
  -> ENGINE = InnoDB;
  Query OK, 0 rows affected, 1 warning (0.07 sec)

 

위 명령어가 테이블을 생성한 예로, CREATE TABLE [데이터베이스명.테이블명] 으로 생성한다.

CREATE TABLE testmysql.users를 입력했으므로 testmysql 내에 users 테이블을 생성한 것이다.

 

생성한 데이터베이스에서 id, name, age, married로 시작되는 부분들을 컬럼(column)이라고 부른다.

예를 들어 age 컬럼에는 24, 32, 28(나이) 처럼 age에 관한 정보만 들어있다.

 

반대로 1, zero, 24, false 같은 가로 부분은 로우(row)라고 부른다. 로우는 총 3개가 있다.

 

컬럼과 로우가 교차하는 칸 하나는 필드라고 부른다.

컬럼은 세로의 필드 집합이고, 로우는 가로의 필드 집합이다.

 

 

 

 

각각의 컬럼 이름 옆에 INT, VARCHAR, TINYINT 등은 컬럼의 자료형을 뜻한다.

 

  • INT : 정수를 의미함. 소수까지 저장하고 싶으면 FLOAT 또는 DOUBLE 자료형 사용
  • CHAR : () 안에 인자는 자릿수를 뜻하며 지정한 길이와 같은 길이만 넣어야 함
  • VARCHAR : () 안에 인자는 자릿수를 뜻하며 가변 길이 자료형. 지정한 길이보다 짧은 문자열을 넣을 경우 부족한 자릿수만큼 스페이스가 채워짐
  • TEXT : 긴 글을 저장할 때 사용하며, 수백 자 이내는 보통 VARCHAR, 그 이상은 TEXT로 처리함
  • TINYINT : -128 부터 127까지의 정수를 담을 때 사용하며 1 또는 0 값 저장 시 Boolean 값과 같은 역할 가능
  • DATETIME : 날짜와 시간에 대한 정보를 담고 있음
  • DATE : 날짜 정보가 담겨 있음
  • TIME : 시간 정보가 담겨 있음

자료형 뒤에 NOT NULL, NULL, DEFAULT 등의 옵션이 붙을 수도 있다.

  • NULL : 빈칸을 허용하는 옵션
  • NOT NULL : 빈칸을 허용하지 않는 옵션
  • AUTO_INCREMENT : 숫자 자동 부여로 처음 데이터를 넣으면 1, 후 데이터는 2와 같이 자동으로 부여됨
  • UNSIGNED : 숫자 자료형에 적용되는 옵션으로 0 ~ 4294967295까지 지정 가능 FLOAT, DOUBLE에는 적용 불가능
  • ZEROFILL : 자릿수를 표현하는 옵션으로 예를 들어 INT(4)인데 숫자 1을 넣으면 0001과 같이 되고, 숫자의 자릿수가 고정되어 있을 때만 사용 가능
  • DEFAULT now() : 데이터베이스 저장 시 해당 컬럼에 값이 없다면 MySQL이 기본 값을 대신 넣으며 now()는 현재 시간을 넣으라는 의미로 now() 대신 CURRENT_TIMESTAMP도 같은 옵션으로 사용 가능
  • PRIMARY KEY : 해당 컬럼이 기본 키인 경우에 설정
  • UNIQUE INDEX : 해당 값이 고유해야 하는지에 대한 옵션으로, ASC는 오름차순을 뜻하고 DESC는 내림차순을 뜻함

 

그 아래 명령어의 COMMENT, DEFAULT, CHARSET 등은 테이블 자체에 대한 설정이다.

  • COMMENT : 테이블에 대한 보충 설명 옵션으로 테이블 역할을 적을 수 있으며, 필수 아님
  • DEFAULT CHARACTER SET : 언어셋 기본 값 옵션이며 utf8로 설정해야 한글 입력 가능
  • ENGINE : 데이터베이스 엔진 접근 방식에 관한 옵션이며 MyISAM과 InnoDB가 제일 많이 사용됨

 

만들어진 테이블 확인

 

테이블을 확인하기 위해 DESC [테이블명] 명령어를 사용할 수 있다.

mysql> DESC users;
+------------+--------------+------+-----+-------------------+-------------------+
| Field      | Type         | Null | Key | Default           | Extra             |
+------------+--------------+------+-----+-------------------+-------------------+
| id         | int          | NO   | PRI | NULL              | auto_increment    |
| name       | varchar(20)  | NO   | UNI | NULL              |                   |
| age        | int unsigned | NO   |     | NULL              |                   |
| marred     | tinyint      | NO   |     | NULL              |                   |
| comment    | text         | YES  |     | NULL              |                   |
| created_at | datetime     | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+--------------+------+-----+-------------------+-------------------+
6 rows in set (0.01 sec)

 

만약 테이블을 잘못 만들었을 경우 DROP TABLE [테이블명] 명령어를 입력해 제거 후 재생성하면 된다.

mysql> DROP TABLE users;

 

 

테이블 조회하기

만들어진 테이블을 확인하기 위해 SHOW TABLES 명령어를 사용할 수 있다.

mysql> SHOW TABLES;
+---------------------+
| Tables_in_testmysql |
+---------------------+
| users               |
+---------------------+
1 row in set (0.00 sec)

MySQL Workbench로 하는 예제

 

MySQL Workbench로 실행

먼저 MySQL Workbench를 실행한다.

 

 

실행 후 MySQL Connections 옆에 + 버튼을 클릭한다.

 

 

Connection Name에 원하는 이름을 적고 Store in Vaule.. 버튼을 클릭한다.

 

 

MySQL 다운로드 시 설정했던 비밀번호를 입력한다.

 

 

 

설정한 MySQL Connections에 새로 생성된 것을 볼 수 있다.

 

 

데이터베이스 생성하기

먼저 생성된 MySQL Connections를 선택해 접속한다.

 

 

새로운 Schema를 생성한다.

 

 

원하는 이름을 설정하고 Charset/Collation을 utf8/utf8_general_ci로 설정한다.

 

nodejs 라는 이름의 데이터베이스가 생성되었다. Apply 버튼을 눌러 진행한다.

 

 

아래 Schemas 탭 확인 시 생성한 testmysql2 Schema가 생성된 것을 볼 수 있다.

 

 

테이블 생성하기

testmysql2 아래에 Tables를 우클릭 - Create Table을 선택한다.

 

 

 

 

선택 시 테이블을 설정할 수 있는 탭이 활성화 된다.

 

 

 

먼저 Table Name과 Charset/Collation, 그리고 Comments를 작성한다.

 

 

그리고 Column Name 탭을 클릭하면 아래와 같이 입력 할 수 있는 창이 활성화 되며, 각 정보를 입력한다.

 

 

Column을 모두 추가하고 Apply 버튼을 눌러 적용한다.

 

 

 

여기서 우측 PK, NN, UQ, B, UN, ZF, AI, G의 체크 박스의 의미는 다음과 같다.

  • PK : PRIMARY KEY
  • NN : NOT NULL
  • UQ : UNIQUE INDEX
  • UN : UNSIGNED
  • ZF : ZEROFILL
  • AI : AUTO_INCREMENT

 

Apply 버튼을 클릭하여 적용한다.

 

 

 

만약 테이블 생성을 잘못했을 경우 Drop Table 후 재생성 한다.

 

 

 

'Web > Node.js' 카테고리의 다른 글

[Node.js] 시퀄라이즈(Sequelize)  (0) 2022.11.27
[Node.js] MySQL CRUD 예제  (0) 2022.11.27