나는 이렇게 학습한다/DB

생활코딩 #SQL의 UPDATE 구문(UPDATE)

daco2020 2021. 8. 11. 21:28
반응형

 오늘 배운 것 

 

SQL의 UPDATE 구문

우선 UPDATE 문법부터 보고 가자. 싱글 테이블과 멀티 테이블 2가지로 나뉘는 것으로 보인다.

공식문서 링크

#Single-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
    

    
    
#Multiple-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET assignment_list
    [WHERE where_condition]

UPDATE 실습!

ex. UPDATE topic SET author='dacoZZING', title='ORACLE 2' WHERE id=2;

UPDATE / 테이블이름 / SET / 어싸인먼트_리스트(여기서는 author, title 2개 사용) / WHERE / UPDATE할 행 선택(조건)

여기서 중요한 것은 WHERE 을 빼먹으면 모든 항목이 일괄 수정되므로 매우매우 조심해야 한다!

MariaDB [(none)]> use daco;
Database changed
MariaDB [daco]> DESC topic;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| title       | varchar(100) | NO   |     | NULL    |                |
| description | text         | YES  |     | NULL    |                |
| created     | datetime     | NO   |     | NULL    |                |
| author      | varchar(30)  | YES  |     | NULL    |                |
| profile     | varchar(100) | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
6 rows in set (0.007 sec)

MariaDB [daco]> SELECT * FROM topic;
+----+------------+----------------------------+---------------------+--------+-----------+
| id | title      | description                | created             | author | profile   |
+----+------------+----------------------------+---------------------+--------+-----------+
|  1 | MySQL      | MySQL is my first database | 2021-08-09 21:07:51 | daco   | developer |
|  2 | ORACLE     | ORACLE is database         | 2021-08-09 21:13:02 | daco   | developer |
|  3 | PostgreSQL | PostgreSQL is database     | 2021-08-09 21:13:47 | daco   | developer |
|  4 | MongoDB    | MongoDB is database        | 2021-08-09 21:14:05 | daco   | developer |
|  5 | SQL Server | SQL Server is database     | 2021-08-09 21:14:57 | daco   | developer |
+----+------------+----------------------------+---------------------+--------+-----------+
5 rows in set (0.000 sec)

MariaDB [daco]> UPDATE topic SET author='dacoZZING', title='ORACLE 2' WHERE id=2;
Query OK, 1 row affected (0.008 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [daco]> SELECT * FROM topic;
+----+------------+----------------------------+---------------------+-----------+-----------+
| id | title      | description                | created             | author    | profile   |
+----+------------+----------------------------+---------------------+-----------+-----------+
|  1 | MySQL      | MySQL is my first database | 2021-08-09 21:07:51 | daco      | developer |
|  2 | ORACLE 2   | ORACLE is database         | 2021-08-09 21:13:02 | dacoZZING | developer |
|  3 | PostgreSQL | PostgreSQL is database     | 2021-08-09 21:13:47 | daco      | developer |
|  4 | MongoDB    | MongoDB is database        | 2021-08-09 21:14:05 | daco      | developer |
|  5 | SQL Server | SQL Server is database     | 2021-08-09 21:14:57 | daco      | developer |
+----+------------+----------------------------+---------------------+-----------+-----------+
5 rows in set (0.000 sec)

 

 오늘 느낀 것 

 

생각보다 쉬운 것 같으면서도 실전에서는 얼마나 복잡할까 하는 생각도 든다.

특히 WHERE을 빠뜨려서 행이 모두 수정되어버렸을 때, 어떻게 복구 할 수 있는지 궁금하기도 하다.

 

구글링을 해봤는데 뭔가 있긴 한거 같다. 그런데 뭔가 절차가 복잡하고 수시로 백업을 해야 그 백업시점으로 되돌릴 수 있는 듯 하다. 이런 실수를 저지르면 정말 간담이 서늘할 듯.. 백업은 진짜 필수 습관으로 만들어야겠다.

 

그리고 직접 코드를 치면서 든 생각은 확실히 명령어와 값을 구분하여 대문자 소문자로 작성하니 시각적으로 구분이 쉬워 보기가 편하더라. 이것도 습관으로 들이면 코드 커뮤니케이션에서 나만의 장점으로 만들 수 있지 않을까?

 

반응형