SQL (обычно произносится "SEQUEL") - структурированный язык запросов (Structured Query Language). Он позволяет создавать реляционные базы данных, представляющие собой набор связанных данных, хранящихся в таблицах, и опери
ровать ими.
Мир баз данных имеет тенденцию к постоянной интеграции, приведшей к необхо димости разработки стандартного языка, пригодного для использования на множестве современных компьютерных платформ. Стандартный язык дает возможность пользо вателям освоить один набор команд и применять его для создания, поиска, изменения и передачи данных независимо от того, работает ли он на персональном компьютере, на рабочей станции или на большой вычислительной машине. В компьютерном мире
пользователь, владеющий таким языком, имеет огромные возможности по примене
нию и интеграции информации из множества разнообразных источников.
Благодаря своей элегантности и независимости от специфики компьютера, а также поддержке лидерами в области технологии реляционных баз данных, SQL стал и в ближайшем обозримом будущем останется таким стандартным языком. Именно по этой причине, тот, кто предполагает работать с базами данных в девяностые годы на шего столетия, должен владеть языком SQL.
Стандарт SQL определен американским национальным институтом стандартов
(American National Standarts Institute) и в настоящее время принят также ISO
(Intemational Standards Organization) в качестве международного стандарта. Однако по давляющее большинство коммерческих программ, связанных с обработкой баз данных, расширяет возможности SQL за рамки того, что определено ANSI, добавляя полезные новые черты. Правда, иногда они нарушают стандарт в худшую сторону, тогда как хоро шие идеи имеют тенденцию повторяться и становятся стандартом "де факто" или "ры ночным" стандартом. В этой книге материал представлен в соответствии с АNSI стандартом с учетом наиболее общих отклонений от него. Для того, чтобы обнаружить отличия от стандарта, можно воспользоваться документацией по программному обеспе
чению.
Кто мо:нсет воспользоваться этой книгой?
Для чтения этой книги требуются минимальные знания из области компьютеров и баз данных. Использовать SQL проще, чем многие другие, менее компактные языки, по скольку при работе на SQL не определяются процедуры, необходимые для получения желаемого результата. Эта книга вводит в мир языка SQL последовательно, содержит
множество примеров и упражнений к каждой г.лаве, цель которых - отточить понима-
xi
ние материала и мастерство. Можно выполнять полезные задания немедленно, и, по
мере их выполнения, мастерство будет расти.
Поскольку SQL является частью многих программ, выполняющихся на различных компьютерах, никаких предположений относительно специфики использования языка не делается. Эта книга является самым общим пособием. Вы сможете непосредствен но применить полученные знания в любой системе, использующей SQL.
Книга предназначена для новичков в области баз данных, однако SQL представ лен в ней достаточно глубоко. Примеры отражают множество ситуаций, возникаю щих в реальных деловых областях приложения. Некоторые из них достаточно
сложны, так как приводятся с целью показать все возможные варианты примене
ния SQL.
Как организована эта книга?
Каждая глава вводит новую группу взаимосвязанных понятий и определений. Они базируются на рассмотренном ранее материале и содержат практические вопросы для закрепления полученных знаний. Ответы на практические вопросы приведены в при ложении А.
Первые семь глав содержат основные понятия реляционных баз данных и SQL, за ними следуют основы запросов (queries). Запросы - команды, используемые для поиска данных в базах данных; они представляют собой наиболее общий и наиболее сложный аспект SQL. В главах с 8 по 14 техника запросов усложняется. Вводятся различные способы комбинирования запросов и запросы более чем к од ной таблице. Другие аспекты SQL: создание таблиц, ввод в них значений, предос тавление и закрытие доступа к созданным таблицам - рассмотрены в главах с 15 по 23. Глава 24 показывает, как получить доступ к информации о структуре базы данных. В главе 25 речь идет об использовании SQL в программах, написанных на
других языках.
В зависимости от того, как будет использоваться SQL, часть информации, рас положенной в конце книги, может не пригодиться. Не все пользователи создают таблицы или вводят в них значения. Эта книга построена таким образом, что каж
дая следующая глава продолжает предыдущую, но можно свободно пропускать те
разделы, которые никогда не придется использовать. Именно по этой причине вве дение в запросы полностью представлено в начале книги. Запросы - это основа, необходимая для того, чтобы успешно применять большинство других функций
SQL.
Во всем множестве примеров, представленных в книге, будет использоваться еди ный набор таблиц.
Содержимое книги по главам выглядит следующим образом:
•Глава 1 дает понятие реляционной базы данных и концепции первичных клю чей (priшary keys). В ней также приводятся и поясняются три таблицы, на кото рых базируется множество представленных в книге примеров.
xii
•Глава 2 ориентирует вас в мире SQL. В ней рассматриваются важные вопросы структуры языка, различные типы данных, распознаваемые SQL, некоторые об
щие соглашения SQL и терминология.
•Глава 3 учит создавать запросы и знакомит с несколькими приемами по их уточнению. После изучения этой главы вы сможете использовать SQL с практи
ческой пользой.
•Глава 4 иллюстрирует, каким образом применяются в SQL два типа стандарт ных математических операторов, отношения(=,<,>, и т.д.) и булевы операции
(AND, OR, NOT).
•Глава 5 вводит ряд операторов, которые используются так же, как операторы отношения, но являются специфичными для SQL. В этой главе даются разъяс нения по вопросу потери данных, и определены NULL-значения.
•Глава 6 учит применять операторы, позволяющие выводить данные на основе тех, которые хранятся в таблицах, способом, отличным от простого извлечения. Это дает возможность суммировать значения данных, хранящихся в таблицах.
•Глава 7 поясняет ряд действий, возможных при выводе запроса: выполнение
математических операций над данными, включение текста, сортировка.
•Глава 8 показывает, как простой запрос может извлекать информацию более
чем из одной таблицы. Этот процесс определяет связь таблиц, включая способы
оперирования с данными.
•Глава 9 демонстрирует технику получения ответа на запрос по множеству таб лиц, применимую к установлению специальной связи для одной таблицы.
•Глава 1О научит выполнять запрос и использовать его результат в другом за
просе.
• |
Глава l l расширяет технику, рассмотренную в главе 10, и учит использовать |
|
вложенные запросы многократно. |
• |
Глава 12 вводит новый тип специального оператора SQL. EXISTS - оператор, |
|
действующий на весь запрос, а не на отдельное простое значение. |
•Глава 13 вводит новый тип операторов -ANY, ALL, SOME, которые, подобно оператору EXISTS, действуют на весь запрос.
•Глава 14 вводит команды, позволяющие непосредственно комбинировать ре зультаты множественных запросов способом, отличным от их последовательно
го выполнения.
xiii
•Глава 15 вводит команды, позволяющие определить, какие значения хранятся в базе данных, а также команды вставки, удаления и обновления значений.
•Глава 16 расширяет мощность только что введенных команд. В ней показано,
как запросы могут управлять их выполнением.
•Глава 17 учит создавать новую таблицу.
•Глава 18 детально объясняет процесс создания таблиц. Вы узнаете, как предусмот
реть отказ от автоматического выполнения некоторого вида изменений.
•Глава 19 исследует логические связи, существующие между данными, на осно ве совпадения значений.
•Глава 20 рассказывает о представлениях, об "окне", разворачивающем таблицу, отличную от той, что хранится в базе данных.
•Глава 21 касается сложных вопросов изменения значений в представлениях, ко гда вы реально изменяете соответствующие таблицы. Именно с этим связана здесь необходимость рассмотрения специальных вопросов.
•Глава 22 рассказывает о привилегиях: кто имеет право обращаться с запросами
к таблицам, кто имеет право изменять их содержимое, как эти права назначают
ся пользователям, как пользовате.1и их лишаются и т.д.
•Глава 23 представляет некоторые ранее не рассмотренные важные моменты. Например, мы обсудим те изменения базы данных, которые становятся посто янными, а также выполнение ряда операций в SQL.
•Глава 24 описывает, как SQL поддерживает структурирование баз данных и ка ким образом осуществляется доступ к ним.
•Глава 25 фокусирует внимание на специальных проблемах и процедурах, свя занных с вводом SQL-команд из других языков. Здесь же рассмотрены аспекты языка, специфичные для встроенной формы, например, курсоры и команда
FETCH.
В приложениях вы найдете ответы на вопросы (приложение А), описание таблиц, рассматриваемых в качестве примеров (приложение В), детальные сведения о различ ных типах данных (приложение С), общие элементы, отличные от стандарта (прило жение D), руководство по командам SQL (приложение Е), взгляд на современный SQL (приложение F).
xiv
Соглашения, принятые в этой книге
SQL состоит из инструкций, которые передаются программе, управляющей рабо той базы данных, предлагая ей выполнить определенные действия. Эти инструкции в общем виде называют предложениями, но мы в большинстве случаев будем использо вать термин "команды", чтобы показать, что они имеют область действия.
Термины выделены курсивом в тех местах, где они в первый раз встречаются. В синтаксисе команд курсив используется для того, чтобы показать, что слова имеют дополнительный смысл.
В примерах представлен текст, который следует ввести в программу обработки базы данных, и показан результат для конкретного программного продукта (FirstSQL, программа, работающая с базой данных на IВМ РС). Результат, полученный с помо
щью других программных продуктов, может отличаться от приведенного, но основ
ной результат (данные, полученные из базы данных) не зависит от конкретного
программного продукта.
xv