Программирование >>  Руководство по sql 

1 ... 43 44 45 [ 46 ] 47 48 49 ... 105


PS7777

4000

7.99

PS2091

2275

10.95

ТС4203

4000

11.95

BUllll

5000

11.95

BU7832

5000

19.99

MC2222

19.99

PS3333

2000

19.99

BU1032

5000

19.99

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

РАБОТА С НЕСКОЛЬКИМИ ТАБЛИЦАМИ

в двух следующих главах мы продолжим изучение оператора SELECT. В главе 7 рассказывается об объединении таблиц, в главе 8 описываются вложенные запросы, или подзапросы.



Глава 7

Объединение таблиц и сложный анализ данных

что ТАКОЕ ОБЪЕДИНЕНИЕ

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

SQL-92 предоставляет для операции объединения несколько ключевых слов (CROSS JOIN, NATURAL, INNER, OUTER), однако они редко используются в коммерческих реализациях. В большинстве систем объединение определяется в предложении WHERE оператора SELECT. Подобно операции проектирования, которая задается в списке выбора оператора SELECT, объединение также определяется неявным образом. Каждое объединение задается для двух таблиц, хотя в одном операторе SELECT может выполняться несколько объединений. При этом столбец, по которому проводится объединение, называется столбцом соединения (connecting column), или столбцом объединения (join column). Столбцы соединения должны иметь совпадающие или легко сравнимые значения, описывающие одинаковые или сходные данные в объединяемых таблицах. Например, столбец titlejd из таблицы titles совпадает со столбцом titlejd из таблицы salesdetails.

Столбцы соединения обычно должны иметь одинаковый тип данных. Тогда значения в этих столбцах будут совместимыми для объединения (join-compatible), так будут принадлежать к одному общему классу данных.

Синтаксис операции объединения

в общих чертах, синтаксис операции объединения имеет следующий вид: SELECT список выбора

FROM та6лица 1, та6лица 2 [ , таблица 3]...

WHERE [таблица 1.]столбец оператор объединения [таблица 2.]столбец

В списке таблиц предложения FROM по меньшей мере должно содержаться две таблицы, а столбцы в предложении WHERE должны быть совместимыми для объединения. Если столбцы, по которым выполняется объединение, имеют одинаковые имена, то в списке выбора и в предложении WHERE нужно указать соответствующие им таблицы. Например, чтобы узнать имена редакторов книги Secrets of Silicon Valley, необходимо выполнить объединение по столбцам edid, имеющимся в обеих таблицах:

SQL:

select ed lname, ed fname, ed pos from editors, titleditors where editors.ed id = titleditors.ed id and titleditors.title id = PC8888



Результат:

ed lname ed fname ed pos

DeLongue Martinella project

Samuelson Bernard project

Kaspchek Christof acquisition

В результате этого объединения выбираются имена редакторов со значением РС8888 в столбце titlejd. Объединение выполняется по столбцу edjd, содержащемуся в обеих таблицах.

ПОЧЕМУ НЕОБХОДИМО ОБЪЕДИНЕНИЕ

В базе данных, разработанной в соответствии с правилами нормализации, одна таблица вряд ли будет содержать всю необходимую информацию о конкретном объекте. Для выполнения сложного анализа данных, скорее всего, их придется собирать из разных таблиц. Используя реляционную модель, в рамках которой правила нормализации рекомендуют разбивать данные на множество таблиц, описывающих отдельные объекты, с помощью операции объединения вы сможете выполнять самые разнообразные запросы и получать сложные отчеты. Таким образом, операция объединения занимает в реляционной модели одно из ключевых мест.

Объединения и реляционная модель

Объединения стали возможными благодаря реляционной модели, но в то же время и сама реляционная модель просто не может существовать без них.

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

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

SQL:

select board members.name

from broad members, political contributors

where board members.name = political contributors.name

Или, используя нащу базу данных, с помощью объединения можно найти авторов, которые когда-либо выполняли обязанности редакторов:

SQL:

select ed lname from editors, authors where ed id = au id

Этот запрос с изюминкой . Так как авторы и редакторы могут иметь одинаковые фамилии, объединение выполняется по столбцу с идентификационными номерами, которые однозначно идентифицируют авторов и редакторов. Таким образом, первичные ключи часто могут оказываться весьма полезными и при объединении таблиц.

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



1 ... 43 44 45 [ 46 ] 47 48 49 ... 105

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