|
@@ -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)
|
|
|
+```
|
|
|
+
|
|
|
|