Browse Source

sql update

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

+ 64 - 0
SQL.md

@@ -64,4 +64,68 @@ Query OK, 1 row affected (0.00 sec)
 
 ## Изменение
 
+Для изменения данных используется запрос, похожий на альтернативную форму `INSERT INTO <table> SET`:
+
+```mysql
+UPDATE <table> SET
+   column1 = value1,
+   column2 = value2,
+   .....
+   columnN = valueN
+```
+
+Такая форма изменяет **все** записи в таблице, так как не указано условие, какие именно записи подлежат изменению. **Запомните это!!!!!**, так как это верный способ
+испортить данные:
+
+```mysql
+MariaDB [test]> UPDATE person SET date_of_birth = NOW();
+Query OK, 2 rows affected, 2 warnings (0.02 sec)
+Rows matched: 2  Changed: 2  Warnings: 2
+
+MariaDB [test]> SELECT * from person;
++-----------+---------------+---------+---------+-------------+
+| person_id | date_of_birth | name    | surname | father_name |
++-----------+---------------+---------+---------+-------------+
+|         1 | 2016-10-23    | Ivan    | Ivanoff | Petrovich   |
+|         2 | 2016-10-23    | Vasiliy | Pupkin  | Petrovich   |
++-----------+---------------+---------+---------+-------------+
+2 rows in set (0.00 sec)
+```
+
+Обратите внимание на даты. **SQL** позволяет не только вставлять литеральные значения, но и использовать внутренние функции (`NOW()` в примере выше) или выражения с
+полями текущей записи.
+
+**Например**
+```mysql
+MariaDB [test]> ALTER TABLE person ADD COLUMN fullname VARCHAR(255);
+Query OK, 0 rows affected (0.50 sec)
+Records: 0  Duplicates: 0  Warnings: 0
+
+MariaDB [test]> desc person;
++---------------+------------------+------+-----+---------+----------------+
+| Field         | Type             | Null | Key | Default | Extra          |
++---------------+------------------+------+-----+---------+----------------+
+| person_id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
+| date_of_birth | date             | YES  | MUL | NULL    |                |
+| name          | varchar(64)      | YES  |     | NULL    |                |
+| surname       | varchar(64)      | YES  |     | NULL    |                |
+| father_name   | varchar(64)      | YES  |     | NULL    |                |
+| fullname      | varchar(255)     | YES  |     | NULL    |                |
++---------------+------------------+------+-----+---------+----------------+
+6 rows in set (0.00 sec)
+
+MariaDB [test]> UPDATE person SET fullname = CONCAT(name," ",father_name," ",surname); 
+Query OK, 2 rows affected (0.01 sec)
+Rows matched: 2  Changed: 2  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 | 2016-10-23    | Vasiliy | Pupkin  | Petrovich   | Vasiliy Petrovich Pupkin |
++-----------+---------------+---------+---------+-------------+--------------------------+
+2 rows in set (0.00 sec)
+```
+