Web/Node.js

[Node.js] MySQL CRUD 예제

유제필 2022. 11. 27. 13:02

CRUD(Create Read Update Delete)란

CRUD란 Create, Read, Update, Delete의 첫 글자를 모아 만든 두문자어이며 데이터베이스에서 많이 수행하는 4가지의 작업을 말한다.

 

이 예제에서는 testmysql 데이터베이스 내 users Table과 comments Table이 있다.

mysql> SHOW TABLES;
+---------------------+
| Tables_in_testmysql |
+---------------------+
| comments            |
| users               |
+---------------------+
2 rows in set (0.00 sec)

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              |                   |
| married    | tinyint      | NO   |     | NULL              |                   |
| comment    | text         | YES  |     | NULL              |                   |
| created_at | datetime     | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+--------------+------+-----+-------------------+-------------------+
6 rows in set (0.00 sec) 

mysql> DESC comments;
+------------+-------------+------+-----+-------------------+-------------------+
| Field      | Type        | Null | Key | Default           | Extra             |
+------------+-------------+------+-----+-------------------+-------------------+
| id         | int         | NO   | PRI | NULL              | auto_increment    |
| commenter  | int         | NO   | MUL | NULL              |                   |
| comment    | varchar(10) | NO   |     | NULL              |                   |
| created_at | datetime    | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+-------------+------+-----+-------------------+-------------------+
4 rows in set (0.00 sec)

 

Create (생성)

 

Create는 데이터를 생성해서 데이터베이스에 넣는 작업이다.

 

데이터를 넣는 명령어는 INSERT INTO [테이블명] ([컬럼1], [컬럼2], ...) VALUES ([값1], [값2], ...) 이다.

아래 예에서는 name에 'One', age에 24, marriend에 0, comment에 "첫 번째" 형식으로 들어간다.

 

id는 AUTO_INCREMENT(AI)에 의해 값이 자동으로 할당된다.

 

mysql> INSERT INTO testmysql.users (name, age, marired, comment) VALUES ('One', 24, 0, "첫 번째"); 
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO testmysql.users (name, age, married, comment) VALUES ('Two', 34, 1, "두 번째");                       
Query OK, 1 row affected (0.01 sec)

 

 


 

Read (조회)

 

Read 작업은 데이터베이스에 있는 데이터를 조회하는 작업이다.

데이터를 조회하는 방법은 SELECT * FROM[테이블명] 형식이다.

 

mysql> SELECT * FROM testmysql.users;
+----+------+-----+--------+---------+---------------------+
| id | name | age | marred | comment | created_at          |
+----+------+-----+--------+---------+---------------------+
|  1 | One  |  24 |      0 | 첫 번째 | 2022-11-27 12:41:56 |
|  2 | Two  |  34 |      1 | 두 번째 | 2022-11-27 12:43:02 |
+----+------+-----+--------+---------+---------------------+
2 rows in set (0.00 sec)

 

 

특정 컬럼 조회

특정 컬럼만 조회할 수 있으며, 이 경우 SELECT 뒤 원하는 컬럼을 넣는다.

 

mysql> SELECT name, age FROM testmysql.users;
+------+-----+
| name | age |
+------+-----+
| One  |  24 |
| Two  |  34 |
+------+-----+
2 rows in set (0.00 sec)

 

WHERE를 사용하면 특정 조건을 가진 데이터만 조회할 수 있다.

 

mysql> SELECT name, age FROM testmysql.users WHERE age = 34;
+------+-----+
| name | age |
+------+-----+
| Two  |  34 |
+------+-----+
1 row in set (0.00 sec)

 

또한 AND  조건과 OR 조건으로 조회도 가능하다.

 

mysql> SELECT name, age FROM testmysql.users WHERE age > 30 AND married = 1;
+------+-----+
| name | age |
+------+-----+
| Two  |  34 |
+------+-----+
1 row in set (0.00 sec)

mysql> SELECT name, age FROM testmysql.users WHERE age < 30 OR marred = 1;
+------+-----+
| name | age |
+------+-----+ 
| One  |  24 |
| Two  |  34 |
+------+-----+ 
2 rows in set (0.00 sec)

 

 

컬럼 정렬하기

ORDER BY [컬럼명] [ASC | DESC] 키워드를 이용하면 정렬한 데이터를 조회할 수 있다.

 

mysql> SELECT id, name FROM testmysql.users ORDER BY age DESC;
+----+------+
| id | name |
+----+------+
|  2 | Two  |
|  1 | One  |
+----+------+
2 rows in set (0.00 sec)

mysql> SELECT id, name FROM testmysql.users ORDER BY age ASC;
+----+------+
| id | name |
+----+------+ 
|  1 | One  | 
|  2 | Two  | 
+----+------+ 
2 rows in set (0.00 sec)

mysql> SELECT id, name FROM testmysql.users ORDER BY id ASC;
+----+------+
| id | name |
+----+------+ 
|  1 | One  | 
|  2 | Two  | 
+----+------+ 
2 rows in set (0.00 sec)  

mysql> SELECT id, name FROM testmysql.users ORDER BY id DESC;  
+----+------+                                                  
| id | name |                                                  
+----+------+                                                  
|  2 | Two  |                                                  
|  1 | One  |                                                  
+----+------+                                                  
2 rows in set (0.00 sec)

 

 

조회할 개수 설정

또한 LIMIT을 이용해 조회할 로우 개수도 설정할 수 있다.

 

mysql> SELECT id, name FROM testmysql.users ORDER BY age DESC LIMIT 1;      
+----+------+                 
| id | name |                      
+----+------+                     
|  2 | Two  |                 
+----+------+                 
1 row in set (0.00 sec)

 

로우 개수를 설정하면서 OFFSET을 이용하여 몇 개를 건너뛸지 지정할 수 있다.

이 경우는 게시판 등의 페이지가 있는 부분에서 유용하다.

 

예를 들어 첫 번째 페이지에서 1 ~ 20개의 게시물을 조회했다면 다음 페이지에서 21 ~ 40의 게시물만 보여줄 수 있다.

이때 다음 페이지로 넘어갈 때 처음 20개를 건너뛰고 다음 20개를 조회하라는 식의 명령이 가능하다.

 

mysql> SELECT id, name FROM testmysql.users ORDER BY age DESC LIMIT 1 OFFSET 1;      
+----+------+                            
| id | name |                            
+----+------+                            
|  1 | One  |                              
+----+------+                                
1 row in set (0.00 sec)

 

 


 

 

Update (수정)

 

Update는 데이터베이스 안에 있는 데이터를 수정하는 작업이다.

 

수정 명령어는 UPDATE [테이블명] SET [컬럼명 = 바꿀 값] WHERE [조건] 이다.

 

mysql> UPDATE testmysql.users SET comment = '바꾼 내용' WHERE id = 2;            
Query OK, 1 row affected (0.00 sec)                             
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM testmysql.users;
+----+------+-----+--------+-----------+---------------------+
| id | name | age | marred | comment   | created_at          |
+----+------+-----+--------+-----------+---------------------+
|  1 | One  |  24 |      0 | 첫 번째   | 2022-11-27 12:41:56 |
|  2 | Two  |  34 |      1 | 바꾼 내용 | 2022-11-27 12:43:02 | 
+----+------+-----+--------+-----------+---------------------+ 
2 rows in set (0.00 sec)

 

이 경우 id가 2인 컬럼의 comment의 값을 '바꾼 내용' 으로 수정하였다.

 

 


 

 

Delete (삭제)

 

Delete는 데이터베이스에 있는 데이터를 삭제하는 작업이다.

삭제 명령어는 DELETE FROM [테이블명] WHERE [조건] 이다.

 

mysql> DELETE FROM testmysql.users WHERE id = 2;
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM testmysql.users;
+----+------+-----+--------+---------+---------------------+ 
| id | name | age | marred | comment | created_at          |
+----+------+-----+--------+---------+---------------------+
|  1 | One  |  24 |      0 | 첫 번째 | 2022-11-27 12:41:56 |
+----+------+-----+--------+---------+---------------------+
1 row in set (0.00 sec)

 

위의 예제에서 id가 2인 값을 제거했고, 조회 시 id가 2인 데이터가 삭제된 것을 볼 수 있다.

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

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