Программирование >>  Создание клиентов mysql 

1 ... 16 17 18 [ 19 ] 20 21 22 ... 201


Сами по себе все вышеперечисленные реляционные операции не слишком полезны. Настоящая сила заключена в их комбинациях. Например, выполняя одновременно операции выборки и проекции, можно добиться того, что в результате запроса будет получена одна ячейка таблицы.

Одним из классов более сложных операций являются объединения. Объединение - это частный случайпроизведения, при котором к таблице произведения применяются дополнительные критерии фильтрации(условия отбора).

В операции внутреннего объединения сравниваются связанные столбцы двух таблиц (столбцы, упомянутые в условии отбора). Строки, которые не удовлетворяют условию сравнения связанных столбцов, удаляются из результирующей таблицы. Обхчно сравниваемые столбце! называются одинаково. Такое объединение называется естественным.

Рассмотрим внутреннее объединение, схема которого представлена на рис. 5.8. Объединение выполняется по столбцу Номер команды , присутствующему в обеих таблицах и включаемому в результаты запроса только один раз. Обратите внимание на третью строку правой таблицы. Для нее нет эквивалента в левой таблице, поэтому она не попадет в результаты запроса.

Игрок

Позиция

Номер команды

Tejada

Шорт-стоп

Giambi

Первая база

Hudson

Питчер

Bonds

Внешнее поле

Snow

Первая база

Внутреннее объединение

по столбцу Номер команды Игрок Позиция

Номер

Название

команды

команды

Oakland

Athletics

Francisco

Giants

Colorado

Rocl<ies


Рис. 5.8. Внутреннее объединение

Внешнее объединение является расширением внутреннего. Существуют три типа внешних объединений: левое, правое и полное. В левое внешнее объединение включаются все строки первой таблицы, в правое внешнее объединение- все строки второй таблицы, а в полное внешнее объединение- все строки обеих исходн1х таблиц. Но внешнее объединение - это не то жесамое, что и операция произведения. Строки, которым не находится соответствия в левой или правой таблице, дополняются значениями NULL.

В таблицах левого внешнего объединения на рис. 5.9 содержатся имена бейсболистов и соответствующие им прозвища. Не у всех игроков есть клички, но нам нужно получить полный список игроков, отсюда очевиден выбор типа объединения. В результаты запроса попадают все четыре строки первой таблицы. У игрока под номером 3 нет официального прозвища, поэтому в его столбец помещается значение NULL.



Является ли MySQL настоящей реляционной СУБД 69


Рис. 5.9. Левое внешнее объединение

Правое внешнее объединение строится аналогично левому, только по отношению к строкам правой таблицы. Некоторые СУБД не поддерживают данный тип объединения, поскольку его всегда можно преобразовать в левое внешнее объединение. Тем не менее в MySQL такая поддержка имеется.

Полное внешнее объединение реализуется так, как если бы правое и левое объединения выполнялись одновременно. Поддержка данного типа объединений отсутствует в MySQL версии 3.23, но должна появиться в версии 4.1.

Является ли MySQL настоящей реляционной СуБД

Ни одна реляционная СУБД не реализует реляционную модель целиком. Разработчики часто руководствуются принципом разумной достаточности: гораздо меньше усилий затрачивается на разработку минимального решения, чем полной системы, обладающей интересными, но зачастую совершенно ненужными возможностями. Системы, создаваемые по принципу разумной достаточности, проще в использовании и потребляют меньше системных ресурсов.

Чтобы быть полностью реляционной, СУБД должна поддерживать все реляционные операции и обеспечивать целостность первичных и внешних ключей. Первичные ключи не могут содержать значения NULL, а внешний ключ должен либо быть равен NULL, либо содержать указатель на существующее значение первичного ключа другой таблицы.

MySQL 3.23 не выполняет проверку внешних ключей. Не поддерживаются также некоторые реляционные операции, например полное внешнее объединение и деление. Тем не менее MySQL является настоящей реляционной СУБД.



ЯЗЫК SQL

В этой главе...

SQL - язык четвертого поколения

Определение данных

Вставка записей

Обновление записей

Удаление записей

Запросы

Объединения

Упорядочение результатов запроса Группировка результатов запроса Ограничение числа возвращаемых записей Изменение определения таблицы



1 ... 16 17 18 [ 19 ] 20 21 22 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика