Browse Source

sql update done

Ivan 8 years ago
parent
commit
5f04045a1e
1 changed files with 35 additions and 0 deletions
  1. 35 0
      SQL.md

+ 35 - 0
SQL.md

@@ -128,4 +128,39 @@ MariaDB [test]> SELECT * FROM person;
 2 rows in set (0.00 sec)
 2 rows in set (0.00 sec)
 ```
 ```
 
 
+### Условие изменения `WHERE`
 
 
+Для того, что бы `UPDATE` изменял не все, а только нужные записи, в конце запроса добавляется конструкция `WHERE` и логическое условие, схожее с применяемыми 
+в операторах `if` в языках программирования. Обычно в этом условии используется значение поля автоинкремента как уникальный идентификатор записи:
+
+```mysql
+MariaDB [test]> UPDATE person SET date_of_birth = '1999-05-25' WHERE person_id = 2;
+Query OK, 1 row affected (0.01 sec)
+Rows matched: 1  Changed: 1  Warnings: 0
+
+MariaDB [test]> SELECT * from person;
++-----------+---------------+---------+---------+-------------+--------------------------+
+| person_id | date_of_birth | name    | surname | father_name | fullname                 |
++-----------+---------------+---------+---------+-------------+--------------------------+
+|         1 | 2016-10-23    | Ivan    | Ivanoff | Petrovich   | Ivan Petrovich Ivanoff   |
+|         2 | 1999-05-25    | Vasiliy | Pupkin  | Petrovich   | Vasiliy Petrovich Pupkin |
++-----------+---------------+---------+---------+-------------+--------------------------+
+2 rows in set (0.00 sec)
+```
+
+Также, для ограничения количества записей, подверженных изменению, можно добавить `LIMIT`:
+
+```mysql
+UPDATE <table> SET
+   column1 = value1,
+   column2 = value2,
+   .....
+   columnN = valueN
+WHERE
+    <cond>
+LIMIT
+    1
+```
+
+`LIMIT 1` означает, что UPDATE должен изменить **не более** одной записи. Таким образом вы можете минимизировать последствия вашего запроса, если не уверены в том,
+что записано в `WHERE` в качестве условия.