Читайте также:
|
|
Круги, представляющие множества данных на диаграммах предыду_ щего раздела, никак не отражают содержимое множеств. Однако при работе с реальными данными необходимо описывать структуру таб_ лиц, если предполагается их комбинирование. Представим, например, что произошло бы при попытке сгенерировать объединение описанных ниже таблиц product и customer:
mysql> DESC product; | ||||||||
+_________________+_____________+______+_____+_________+_______+ | ||||||||
| Field | | | Type | | Null | | Key | | | Default | | Extra | | |
+_________________+_____________+______+_____+_________+_______+ | ||||||||
| product_cd | | | varchar(10) | | | | PRI | | | | | | ||
| name | | | varchar(50) | | | | | | | | | | | |
| product_type_cd | | varchar(10) | | | | MUL | | | | | | | ||
| date_offered | | | date | | YES | | | | NULL | | | | | |
| date_retired | | date | | YES | | | | NULL | | | | | ||
+_________________+_____________+______+_____+_________+_______+ | ||||||||
5 rows in set (0.23 | sec) |
mysql> DESC customer; +______________+__________________+______+_____+_________+________________+ | Field | Type | Null | Key | Default | Extra | +______________+__________________+______+_____+_________+________________+
| cust_id | | int(10) unsigned | | | | PRI | NULL | | auto_increment | | ||
| fed_id | | varchar(12) | | | | | | | | | | |
| cust_type_cd | | enum('I','B') | | | | | | I | | | | |
| address | | varchar(30) | | YES | | | | NULL | | | | |
| city | | varchar(20) | | YES | | | | NULL | | | | |
| state | | varchar(20) | | YES | | | | NULL | | | | |
| postal_code | | varchar(10) | | YES | | | | NULL | | | | |
+______________+__________________+______+_____+_________+________________+ 7 rows in set (0.04 sec)
После комбинирования первый столбец результирующей таблицы был бы комбинацией столбцов product.product_cd и customer.cust_id, второй – комбинацией столбцов product.name и customer.fed_id и т. д. Хотя неко_ торые пары столбцов сочетаются без труда (т. е. два столбца числового типа), неясно, как должны объединяться пары столбцов разного типа, такие как числовой со строковым или строковый с датой. Кроме того, в шестом и седьмом столбцах комбинированной таблицы будут только данные шестого и седьмого столбцов таблицы customer, поскольку в таб_ лице product всего пять столбцов. Очевидно, что таблицы, подлежащие объединению, должны обладать некоторой общностью.
112 Глава 6. Работа с множествами
Поэтому при применении операций с множествами к реальным табли_ цам необходимо соблюдать такие правила:
• В обеих таблицах должно быть одинаковое число столбцов.
• Типы данных столбцов двух таблиц должны быть одинаковыми (или сервер должен уметь преобразовывать один тип в другой).
Эти правила позволяют уяснить, что представляет собой «перекрытие данных» на практике. Чтобы комбинируемые строки двух таблиц счи_ тались одинаковыми, каждая пара столбцов комбинируемых таблиц должна содержать одинаковые строки, числа или даты.
Операции с множествами осуществляются путем помещения операто_ ра работы с множествами (set operator) между двух выраженийse_lect, как показано ниже:
mysql> SELECT 1 num, 'abc' str
Дата добавления: 2015-08-17; просмотров: 60 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Основы теории множеств | | | Gt; FROM individual _> UNION ALL |