이전 포스팅에서는 MySQL에서 table을 만들어 봤엇는데요.
이번 포스팅에서는 해당 테이블에 데이터를 생성, 조회, 업데이트, 삭제를 해보겠습니다.
CREATE
우선 데이터를 삽입하기에 앞서서 테이블에 어떠한 attribute가 있는지 모를 수 있는데 이때 아래와 같은 명령어를 사용하면 확인할 수 있습니다.
명령어
DESC <table이름>
예제
데이터 삽입명령어
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
조회명령어는 아래와 같이 엄청나게 다양한 옵션이 존재합니다.
대괄호 안에있는 옵션은 넣지 않아도 되는 값들이고, 그렇지 않은값은 반드시 필요한 값들입니다.
- SELECT 절의 select_expr 에는 컬럼명을 입력할 수 있는데 원하는 컬럼의 값만 테이블에서 가져올 수 있습니다.
- WHERE 절에서는 조건문등을 지정할 수 있습니다.
- LIMIT <number>을 사용하면 위의 값들을 구하고 number에 해당하는 숫자만큼의 줄만 출력해줍니다.
위의 옵션외에도 여러가지 옵션들이 많지만 이에 관한 포스팅은 추후에 작성하도록 하겠습니다.
DB를 잘 다룬다는 것은 SELECT 문을 어떻게 잘 다루느냐에 달려있다고 합니다.
UPDATE
명령어
UPDATE <table명>
SET
<바꾸고싶은값의 칼럼이름> = <바꿀값>
WHERE
조건문
만약에 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
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)