|
@@ -1,7 +1,7 @@
|
|
|
# SQL
|
|
|
|
|
|
-Данное занятие посвящено основным манипуляциям с *данными* в SQL. То есть речь пойдет о **DML** (**Data Manipulation Language**), операциях вставки, удаления,
|
|
|
-изменения и выборки данных.
|
|
|
+Данное занятие посвящено основным манипуляциям с *данными* в SQL. То есть речь пойдет о **DML** (**Data Manipulation Language**), операциях вставки,
|
|
|
+удаления, изменения и выборки данных.
|
|
|
|
|
|
## Вставка
|
|
|
|
|
@@ -18,6 +18,7 @@ VALUES
|
|
|
- **valueN** - значения соответствующих колонок.
|
|
|
|
|
|
**Например**
|
|
|
+
|
|
|
```mysql
|
|
|
MariaDB [test]> INSERT INTO person (date_of_birth, name, surname, father_name) VALUES("2000-03-15", "Ivan", "Ivanoff", "Petrovich");
|
|
|
Query OK, 1 row affected (0.10 sec)
|
|
@@ -430,7 +431,7 @@ SELECT
|
|
|
```mysql
|
|
|
SELECT
|
|
|
phone.phone_type,
|
|
|
- AVG(TIMESTAMPDIFF(YEAR, person.date_of_birth, CURDATE()))
|
|
|
+ AVG(TIMESTAMPDIFF(YEAR, person.date_of_birth, CURDATE())) AS averageAge
|
|
|
FROM
|
|
|
phone
|
|
|
LEFT JOIN person_to_phone ON (phone.id = person_to_phone.phone_id)
|
|
@@ -444,3 +445,27 @@ SELECT
|
|
|
|
|
|
### `AS` и древовидные структуры данных в реляционных СУБД.
|
|
|
|
|
|
+Как было показано выше, слово `AS` позволяет сделать псевдоним для поля выборки. Так же его можно использовать и для таблиц. Это особо полезно, когда
|
|
|
+нужно воспользоваться одной и той же таблицей в выборке несколько раз.
|
|
|
+
|
|
|
+В реляционных СУБД часто хранят древовидные структуры данных с помощью отношения **один-ко-многим** внутри одной таблицы. Для представления разных
|
|
|
+уровней одной и той же таблицы используются псевдонимы:
|
|
|
+
|
|
|
+```mysql
|
|
|
+SELECT
|
|
|
+ c1.id,
|
|
|
+ c1.name,
|
|
|
+ c2.id,
|
|
|
+ c2.name,
|
|
|
+ c2.parent_id
|
|
|
+ FROM
|
|
|
+ category AS c1,
|
|
|
+ category AS c2
|
|
|
+ WHERE
|
|
|
+ c2.parent_id = c1.id
|
|
|
+ ORDER BY
|
|
|
+ c1.id,
|
|
|
+ c2.id
|
|
|
+```
|
|
|
+
|
|
|
+## Задание
|