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

1 ... 3 4 5 [ 6 ] 7 8 9 ... 105


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

SQL:

select pub id, pub narae from publishers

Результат:

pub id pub name

0736 New Age Books

0877 Binnet & Hardley

1389 Algodata Infosystems

0010 Pragmatics

Опять-таки, пока не заостряйте свое внимание на синтаксисе. Взгляните на это с концептуальной точки зрения: операция проектирования определяет подмножество столбцов в таблице. Обратите внимание, что результаты выполнения проектирования (как и любой другой реляционной операции) также отображаются в форме таблицы. Результирующие таблицы иногда называют производными таблицами (derived tables), чтобы отличать их от базовых таблиц (base table), содержащих исходные строки данных.

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

SQL:

select *

from publishers

where state = CA

В результате выполнения запроса вы получите:

Результат:

pub id pub name address city state

1389 Algodata Infosystems 3 3rd Dr. Berkeley CA

Вы можете комбинировать в запросе операции проектирования и выбора, чтобы получить требуемую информацию.

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

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

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

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

Названия всех книг содержатся и таблице г/ел. Кроме того, в ней хранится и другая полезная информация о книгах, в том числе и идентификационный номер издателя (рис. 1.3). Однако в этой таблице вы не найдете имя издателя - оно хранится в таблице publishers.



Название книги

titles

titlejd

title

type

pubjd

price

advance

ytd sales

contract

notes

pubdate

publishers

pubJd

pub name

address

city

slate

Имя издателя

Рис. 1.3. Столбцы таблиц titles и publishers

Поставленная задача решается благодаря тому, что обе таблицы - titles и publishers - содержат идентификационные номера издателег. Чтобы получить одновременно и имена издателер!, и названия книг, вы можете объединить эти таблицы (рис 1.4).

Название книги

titles titlejd title type pubJd price advance ytd sales contract notes pubdate


publishers

pubJd

pub name

address

city

state

Имя издателя

Рис. 1.4. Разделяемые столбцы в таблицах titles и publishers

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

SQL:

select title, pub name

from titles, publishers

where publishers.pub id = titles.pub id

Столбец title в предложении SELECT относится к таблице titles, столбец pubname - к таблице publishers. Операция проектирования позволяет в одном списке указывать столбцы из разных таблиц. В предложении FROM задаются две объединяемые таблицы. В предложении WHERE говорится, что будут объединяться строки этих таблиц, имеющие одинаковое значение идентификационного номера в столбце pubid.

Ниже приводится получаемый результат.

Результат: title

pub name

Computer Phobic and Non-Phobic Individuals: Behavior New Age Books Variations

Emotional Security: A New Algorithm New Age Books

Prolonged Data Deprivation: Four Case Studies New Age Books

Life Without Fear New Age Books



Is Anger the Enemy? New Age Books

You Can Combat Computer Stress! New Age Books

The Psychology of Computer Cooking Binnet & Hardley

Silicon Valley Gastronomic Treats Binnet & Hardley

Sushi, Anyone? Binnet & Hardley

Fifty Years in Buckingham Palace Kitchens Binnet & Hardley

The Gourmet Microwave Binnet & Hardley Onions, Leeks, and Garlic: Cooking Secrets of the Binnet & Hardley Mediterranean

Secrets of Silicon Valley Algodata Infosystems

Net Etiquette Algodata Infosystems Cooking with Computers: Surreptitious Balance Sheets Algodata Infosystems

Straight Talk About Computers Algodata Infosystems

The Busy Executives Database Guide Algodata Infosystems

But Is It User Friendly? Algodata Infosystems

В этом месте у вас могут возникнуть вопросы: А не преувеличиваем ли мы значение оператора объединения? Почему нельзя поместить все эти столбцы в одну таблицу? При этом, если таблица получится слишком широкой, для отображения нужного количества столбцов всегда можно будет использовать операцию проектирования.

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

Альтернативный способ просмотра данных

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

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

Курсоры создаются с помощью оператора SQL CREATE VIEW. Чтобы преобразовать результаты выполнения оператора SELECT в курсор, просто поместите перед ним команду CREATE VIEW. Чтобы получить виртуальную таблицу на основе предыдущего примера, воспользуйтесь следующим оператором CREATE VIEW:

SQL:

create view Book and Pubs as

select title, pub name

from titles, publishers

where publishers.pub id = titles.pub id



1 ... 3 4 5 [ 6 ] 7 8 9 ... 105

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