[ #4 ] MySQL - CRUD operation

이전 포스팅에서는 MySQL에서 table을 만들어 봤엇는데요.

이번 포스팅에서는 해당 테이블에 데이터를 생성, 조회, 업데이트, 삭제를 해보겠습니다.

CREATE

우선 데이터를 삽입하기에 앞서서 테이블에 어떠한 attribute가 있는지 모를 수 있는데 이때 아래와 같은 명령어를 사용하면 확인할 수 있습니다.

명령어

DESC <table이름>

예제

insert

데이터 삽입명령어

INSERT INTO <table이름> (table컬럼명1 , table컬럼명2, table컬럼명3 , ...) values

('컬럼명1 에들어갈 값','컬럼명2 에들어갈 값', '컬럼명3 에들어갈 값', ...);;

이 테이블에서 id는 auto_increment 설정을 해줬기때문에 따로 값을 삽입하지않아도 자동으로 삽입됩니다.

따라서 우리는 아래와 같이 나머지 5개 칼럼값만 넣어주면됩니다.

mysql> INSERT INTO topic (title, description, created, author, profile) 
values('MySQL', 'MySQL is ...', NOW(),'sanghyuk', 'developer');
Query OK, 1 row affected (0.00 sec)

위와같이 스프래드 아래의 스프래드 시트 나머지 값들도 다 넣어줍니다.


READ

조회명령어는 아래와 같이 엄청나게 다양한 옵션이 존재합니다.

selectoptions

대괄호 안에있는 옵션은 넣지 않아도 되는 값들이고, 그렇지 않은값은 반드시 필요한 값들입니다.

  • SELECT 절의 select_expr 에는 컬럼명을 입력할 수 있는데 원하는 컬럼의 값만 테이블에서 가져올 수 있습니다.
  • WHERE 절에서는 조건문등을 지정할 수 있습니다.
  • LIMIT <number>을 사용하면 위의 값들을 구하고 number에 해당하는 숫자만큼의 줄만 출력해줍니다.

위의 옵션외에도 여러가지 옵션들이 많지만 이에 관한 포스팅은 추후에 작성하도록 하겠습니다.

DB를 잘 다룬다는 것은 SELECT 문을 어떻게 잘 다루느냐에 달려있다고 합니다.


UPDATE

명령어

UPDATE <table명>
SET
  <바꾸고싶은값의 칼럼이름> = <바꿀값>
WHERE
  조건문

:star: 만약에 WHERE 및 조건문이 빠진다면 모든 행의 값이 바뀌니 정말정말 주의해야 합니다.

SELECT * FROM topic;
+----+------------+-------------------+---------------------+----------+---------------------------+
| id | title      | description       | created             | author   | profile                   |
+----+------------+-------------------+---------------------+----------+---------------------------+
|  1 | MySQL      | MySQL is ...      | 2021-07-03 23:11:45 | sanghyuk | developer                 |
|  2 | ORACLE     | ORACLE is ...     | 2021-07-04 00:24:59 | sanghyuk | developer                 |
|  3 | SQL server | SQL server is ... | 2021-07-04 00:25:29 | john doe | database administrator    |
|  4 | PostgreSQL | postgreSQL is ... | 2021-07-04 00:26:27 | Kahn     | data scientist, developer |
|  5 | MongoDB    | MongoDB is ...    | 2021-07-04 00:26:48 | sanghyuk | developer                 |
+----+------------+-------------------+---------------------+----------+---------------------------+

현제 테이블의 상태는 위와 같은데, id가 3인 데이터의 author을 바꾸고자 한다면 아래와 같이 입력하면 됩니다.

예시

mysql> UPDATE topic SET author='Joe' WHERE id=4;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

그리고 다시 테이블을 확인해 보면 잘 바뀐것을 확인할 수 있습니다.

mysql> SELECT * FROM topic;
+----+------------+-------------------+---------------------+----------+---------------------------+
| id | title      | description       | created             | author   | profile                   |
+----+------------+-------------------+---------------------+----------+---------------------------+
|  1 | MySQL      | MySQL is ...      | 2021-07-03 23:11:45 | sanghyuk | developer                 |
|  2 | ORACLE     | ORACLE is ...     | 2021-07-04 00:24:59 | sanghyuk | developer                 |
|  3 | SQL server | SQL server is ... | 2021-07-04 00:25:29 | john doe | database administrator    |
|  4 | PostgreSQL | postgreSQL is ... | 2021-07-04 00:26:27 | Joe      | data scientist, developer |
|  5 | MongoDB    | MongoDB is ...    | 2021-07-04 00:26:48 | sanghyuk | developer                 |
+----+------------+-------------------+---------------------+----------+---------------------------+
5 rows in set (0.00 sec)

DELETE

:star: DELETE또한 마찬가지로 UPDATE처럼 WHERE절의 조건을 잘 적어줘야 합니다. 만약 적지않으면 모든 값이 지워지겠지요.

문법

DELETE FROM <table명>
WHERE 필드이름=데이터값

아래의 테이블에서 id값이 5인 데이터를 테이블에서 지워보겠습니다.

SELECT * FROM topic;
+----+------------+-------------------+---------------------+----------+---------------------------+
| id | title      | description       | created             | author   | profile                   |
+----+------------+-------------------+---------------------+----------+---------------------------+
|  1 | MySQL      | MySQL is ...      | 2021-07-03 23:11:45 | sanghyuk | developer                 |
|  2 | ORACLE     | ORACLE is ...     | 2021-07-04 00:24:59 | sanghyuk | developer                 |
|  3 | SQL server | SQL server is ... | 2021-07-04 00:25:29 | john doe | database administrator    |
|  4 | PostgreSQL | postgreSQL is ... | 2021-07-04 00:26:27 | Kahn     | data scientist, developer |
|  5 | MongoDB    | MongoDB is ...    | 2021-07-04 00:26:48 | sanghyuk | developer                 |
+----+------------+-------------------+---------------------+----------+---------------------------+
mysql> DELETE FROM topic
    -> WHERE id=5;
Query OK, 1 row affected (0.01 sec)

그리고 확인해 보면 잘 지워진것을 알 수 있습니다.

mysql> SELECT * FROM topic;
+----+------------+-------------------+---------------------+----------+---------------------------+
| id | title      | description       | created             | author   | profile                   |
+----+------------+-------------------+---------------------+----------+---------------------------+
|  1 | MySQL      | MySQL is ...      | 2021-07-03 23:11:45 | sanghyuk | developer                 |
|  2 | ORACLE     | ORACLE is ...     | 2021-07-04 00:24:59 | sanghyuk | developer                 |
|  3 | SQL server | SQL server is ... | 2021-07-04 00:25:29 | john doe | database administrator    |
|  4 | PostgreSQL | postgreSQL is ... | 2021-07-04 00:26:27 | Joe      | data scientist, developer |
+----+------------+-------------------+---------------------+----------+---------------------------+
4 rows in set (0.00 sec)