|
Программирование >> Руководство по sql
данные только об их названиях и идентификационных номерах, воспользуйтесь следующим оператором выборки: 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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |