- •Iso (международной организацией по
- •2 Понимание sql
- •Что такое - реляционная база данных?
- •Порядок строк произволен
- •4 Понимание sql ___________________________________________________________________
- •Идентификация строк ( первичные ключи )
- •Столбцы именуются и нумеруются
- •8 Понимание sql
- •************** Работа с sql **************
- •Sql : обзор
- •Что делает ansi ?
- •Интерактивный и вложенный sql
- •14 Понимание sql
- •Субподразделения sql
- •16 Понимание sql
- •Sql несогласованности
- •Что такое - пользователь?
- •18 Понимание sql
- •Условия и терминология
- •************** Работа с sql **************
- •24 Понимание sql
- •26 Понимание sql
- •Переупорядочение столбца
- •28 Понимание sql
- •Параметры distinct
- •30 Понимание sql
- •32 Понимание sql
- •************* Работа с sql ***************
- •38 Понимание sql
- •40 Понимание sql
- •42 Понимание sql
- •44 Понимание sql
- •Использование специальных операторов в условиях
- •50 Понимание sql
- •52 Понимание sql
- •54 Понимание sql
- •56 Понимание sql
- •************** Работа с sql **************
- •Обобщение данных с помощью агрегатных функций
- •64 Понимание sql
- •66 Понимание sql
- •Включение дубликатов в агрегатные функции
- •Предложение group by
- •68 Понимание sql
- •Предложение having
- •70 Понимание sql
- •72 Понимание sql
- •************** Работа с sql **************
- •Формирование выводов запросов
- •Помещение текста в вашем выводе запроса
- •78 Понимание sql
- •80 Понимание sql
- •82 Понимание sql
- •Упорядочение вывода по номеру столбца
- •84 Понимание sql
- •************** Работа с sql **************
- •Запрашивание многочисленых таблиц также как одной
- •90 Понимание sql
- •92 Понимание sql
- •94 Понимание sql
- •************** Работа с sql **************
- •Объединение таблицы с собой
- •Псевдонимы
- •100 Понимание sql
- •Устранение избыточности
- •102 Понимание sql
- •Больше псевдонимов
- •104 Понимание sql
- •106 Понимание sql
- •************** Работа с sql **************
- •Вставка одного запроса внутрь другого
- •112 Понимание sql
- •114 Понимание sql
- •116 Понимание sql
- •In определяет набор значений, одно из которых должно совпадать с другим
- •118 Понимание sql
- •In является подходящим, если запрос может ограниченно производить одно
- •120 Понимание sql
- •122 Понимание sql
- •*************** Работа с sql *************
- •Соотнесенные подзапросы
- •130 Понимание sql
- •132 Понимание sql
- •Соотнесенные подзапросы в предложении having
- •134 Понимание sql
- •*************** Работа с sql *************
- •Использование оператора exists
- •140 Понимание sql
- •142 Понимание sql
- •144 Понимание sql
- •146 Понимание sql
- •************** Работа с sql **************
- •Использование оператора exists
- •152 Понимание sql
- •154 Понимание sql _____________________________________________________________________
- •156 Понимание sql
- •158 Понимание sql
- •160 Понимание sql
- •162 Понимание sql
- •Использование count вместо exists
- •166 Понимание sql
- •************** Работа с sql **************
1
ВВЕДЕНИЕ В РЕЛЯЦИОННУЮ
БАЗУ ДАННЫХ
ВВЕДЕНИЕ ==============================
SQL ( ОБЫЧНО ПРОИЗНОСИМАЯ КАК "СЭКВЭЛ" )
символизирует собой Структурированный Язык Запросов.
Это - язык который дает вам возможность создавать и работать
в реляционных базах данных, которые являются наборами связанной
информации сохраняемой в таблицах.
Мир баз данных становится все более и более единым, что привело
к необходимости создания стандартного языка который мог бы
использоваться чтобы функционировать в большом количестве
различных видов компьютерных сред. Стандартный язык позволит
пользователям знающим один набор команд, использовать их чтобы
создавать, отыскивать, изменять, и передавать информацию
независимо от того работают ли они на персональном компьютере,
сетевой рабочей станции, или на универсальной ЭВМ.
В нашем все более и более взаимосвязанном компьютерном мире,
пользователь снабженый таким языком, имеет огромное преимущество
в использовании и обобщении информации из ряда источников с
помощью большого колличества способов.
Элегантность и независимость от специфики компьютерных
технологий, а также его поддержка лидерами промышленности в
области технологии реляционных баз данных, сделало SQL, и
вероятно в течение обозримого будущего оставит его, основным
стандартным языком. По этой причине, любой кто хочет работать
с базами данных 90-х годов должен знать SQL.
Стандарт SQL определяется ANSI (Американским Национальным
Институтом Стандартов) и в данное время также принимается
Iso (международной организацией по
СТАНДАРТИЗАЦИИ). Однако, большинство коммерческих
программ баз данных расширяют SQL без уведомления ANSI,
добавляя разные другие особенности в этот язык, которые, как они
считают, будут весьма полезны.
Иногда они несколько нарушают стандарт языка, хотя хорошие
идеи имеют тенденцию развиваться и вскоре становиться стандартами
"рынка" сами по себе в силу полезности своих качеств.
В этой книге, мы будем, в основном, следовать стандарту ANSI, но
одновременно иногда будет показывать и некоторые наиболее общие
отклонения от его стандарта.
Вы должны проконсультироваться с документацией вашего пакета
программ который вы будете использовать, чтобы знать где в нем
этот стандарт видоизменен.
2 Понимание sql
______________________________________________________________
ГЛ. 1
ПРЕЖДЕ, ЧЕМ ВЫ СМОЖЕТЕ ИСПОЛЬЗОВАТЬ SQL, ВЫ
должны понять что такое реляционные базы данных.
В этой главе, мы это объясним, и покажем насколько реляционные
базы данных полезны. Мы не будем обсуждать SQL именно здесь,
и если вы уже знаете эти понятия довольно хорошо, вы можете
просто пропустить эту главу. В любом случае, вы должны рассмотреть
три таблицы которые предоставляются и объясняются в конце главы;
они станут основой наших примеров в этой книге. Вторая копия этих
таблиц находится Приложении E, и мы рекомендуем скопировать
их для удобства ссылки к ним.
Что такое - реляционная база данных?
Реляционная база данных - это тело связанной информации,
сохраняемой в двумерных таблицах. Напоминает адресную или
телефонную книгу.
В книге имеется большое количество входов, каждый из которых
соответствует определеной особенности. Для каждой такой
особенности, может быть несколько независимых фрагментов данных,
например имя, телефонный номер, и адрес. Предположим, что вы
должны сформатировать эту адресную книгу в виде таблицы со
строками и столбцами. Каждая строка ( называемая также записью )
будет соответствовать определенной особенности; каждый столбец
будет содержать значение для каждого типа данных - имени,
телефонного номера, и адреса представляемого в каждой строке.
Адресная книга могла бы выглядеть следующим образом:
Имя Телефон Адрес
Gerry Farish ( 415)365-8775 127 Primrose Ave.,SF
Celia Brock ( 707)874-3553 246 #3rd St.,Sonoma
Yves Grillet ( 762)976-3665 778 Modernas,Barcelona
То что вы получили является основой реляционной базы данных как
и было определено в начале этого обсуждения - а именно, двумерной
( строка и столбец ) таблицей информации. Однако, реляционные базы
данных редко состоят из одной таблицы. Такая таблица меньше чем
файловая система. Создав несколько таблиц взаимосвязанной инфор-
мации, вы сможете выполнить более сложные и мощные операции
с вашими данными. Мощность базы данных зависит от связи которую
вы можете создать между фрагментами информации, а не от самого
фрагмента информации.
ОПИСАНИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ 3
______________________________________________________________
СВЯЗЫВАНИЕ ОДНОЙ ТАБЛИЦЫ С ДРУГОЙ
Позвольте нам использовать пример нашей адресной книги чтобы
начать обсуждение базы данных которая может реально использо-
ваться в деловой ситуации. Предположим, что персонажи в нашей
первой таблице ( адресной книги ) - это пациенты больницы.
В другой таблице, мы могли бы запомнить дополнительную инфор-
мацию об этих пациентах. Столбцы второй таблицы могли бы быть
помечены как Пациент, Доктор, Страховка, и Балланс.
Пациент Доктор Страховка Балланс
Farish Drume B.C./B.S. $272.99
Grillet Halben None $44. 76
Brock Halben Health,Inc. $9077.47
Много мощных функций можно выполнить извлекая информацию из
этих таблиц согласно указанным параметрам, особенно когда эти па-
раметры включают в себя фрагменты информации свзанные в раз-
личных таблицах друг с другом. Например, возьмем - докторов.
Предположим доктор Halben захотел получить номера телефонов всех
своих пациентов. Чтобы извлечь эту информацию, он мог бы связать
таблицу с номерами телефонов пациентов ( по адресной книге ) с
таблицей которая бы указывала, какой из пациентов - его. Хотя, в
этом простом примере, он мог бы держать это в голове и сразу полу-
чать номера телефонов пациентов Grillet и Brock, эти таблицы могут
быть слишком большими и слишком сложными. Программы реляцион-
ной базы данных разрабатывались для того чтобы обрабатывать
большие и сложные совокупности данных такого типа, что очевидно
является более универсальным методом в деловом мире.
Даже если бы база данных больницы содержала сотни или тысячи
имен - как это вероятно и бывает на практике - одна команда SQL
могла бы выдать доктору Halben информацию в которой он нуждался
почти немедленно.