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 |