浏览代码

sql relations and exercise

Ivan 8 年之前
父节点
当前提交
fa3623ddbe
共有 1 个文件被更改,包括 66 次插入1 次删除
  1. 66 1
      SQL.md

+ 66 - 1
SQL.md

@@ -172,4 +172,69 @@ LIMIT
 ```mysql
 DELETE FROM <table>
 ```
-...как и `UPDATE` удаляет всё. Поэтому перед тем, как нажать **ENTER** несколько раз смотрим, всё ли верно, используем `WHERE` и/или `LIMIT`.
+...как и `UPDATE` удаляет всё, если не указано иное. Поэтому перед тем, как нажать **ENTER** несколько раз смотрим, всё ли верно, используем `WHERE` и/или `LIMIT`.
+
+## **Автоинкремент** и **связность**
+
+Для установки связи значения автоинкремента заносится в другую таблицу как обычный INT.
+
+```mysql
+MariaDB [test]> DESC phone;
++--------------+-----------------------------+------+-----+---------+----------------+
+| Field        | Type                        | Null | Key | Default | Extra          |
++--------------+-----------------------------+------+-----+---------+----------------+
+| phone_id     | int(10) unsigned            | NO   | PRI | NULL    | auto_increment |
+| person_id    | int(10) unsigned            | YES  |     | NULL    |                |
+| type         | enum('home','mobile','job') | YES  |     | NULL    |                |
+| phone_number | varchar(16)                 | YES  |     | NULL    |                |
++--------------+-----------------------------+------+-----+---------+----------------+
+4 rows in set (0.00 sec)
+
+MariaDB [test]> ALTER TABLE phone MODIFY COLUMN type ENUM('home', 'mobile', 'job') DEFAULT 'mobile';
+Query OK, 0 rows affected (0.00 sec)
+Records: 0  Duplicates: 0  Warnings: 0
+
+MariaDB [test]> DESC phone;
++--------------+-----------------------------+------+-----+---------+----------------+
+| Field        | Type                        | Null | Key | Default | Extra          |
++--------------+-----------------------------+------+-----+---------+----------------+
+| phone_id     | int(10) unsigned            | NO   | PRI | NULL    | auto_increment |
+| person_id    | int(10) unsigned            | YES  |     | NULL    |                |
+| type         | enum('home','mobile','job') | YES  |     | mobile  |                |
+| phone_number | varchar(16)                 | YES  |     | NULL    |                |
++--------------+-----------------------------+------+-----+---------+----------------+
+4 rows in set (0.00 sec)
+
+MariaDB [test]> INSERT INTO phone SET person_id = 2, phone_number = '+380 577 102';
+Query OK, 1 row affected (0.00 sec)
+
+MariaDB [test]> INSERT INTO phone SET person_id = 2, phone_number = '+380 577 103';
+Query OK, 1 row affected (0.01 sec)
+
+MariaDB [test]> INSERT INTO phone SET person_id = 1, phone_number = '+380 577 104';
+Query OK, 1 row affected (0.00 sec)
+
+MariaDB [test]> INSERT INTO phone SET person_id = 1, phone_number = '+380 577 101';
+Query OK, 1 row affected (0.02 sec)
+
+MariaDB [test]> select * from phone;
++----------+-----------+--------+--------------+
+| phone_id | person_id | type   | phone_number |
++----------+-----------+--------+--------------+
+|        1 |         2 | mobile | +380 577 102 |
+|        2 |         2 | mobile | +380 577 103 |
+|        3 |         1 | mobile | +380 577 104 |
+|        4 |         1 | mobile | +380 577 101 |
++----------+-----------+--------+--------------+
+4 rows in set (0.00 sec)
+```
+
+Таким образом на каждого человека по два телефонных номера.
+
+## Задание
+
+Сформируйте нужные данные в ваших таблицах, которые вы делали дома. Не забудьте об отношениях. Для установки отношения при добавлении записи указывается значение 
+**автоинкремента** из другой таблицы
+
+
+