Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика / 2 курс / $2012_ГЕОИНФОРМАТИКА_М1 / М1_МЕТОДИЧЕСКИЕ_МАТЕРИАЛЫ / Мет_M1_05_Язык_запросов_SQL_справочник.doc
Скачиваний:
166
Добавлен:
28.04.2017
Размер:
2.9 Mб
Скачать

СОДЕРЖАНИЕ

Предисловие 8

Введение в реляционные базы данных 9

Введение 9

Что такое реляционная база данных? 9

Связывание одной таблицы с другой 10

Порядок строк произволен 10

Идентификация строк (первичные ключи) 10

Столбцы именуются и нумеруются 11

Типовая база данных 11

Резюме 13

Работа с SQL 14

SQL: обзор 15

Как работает SQL? 15

Что делает ANSI? 15

Интерактивный и встроенный SQL 16

Подразделы SQL 16

Различные типы данных 16

Несогласованности SQL 17

Что такое пользователь? 17

Условия и терминология 18

Резюме 18

Работа с SQL 18

Использование SQL для извлечения информации из таблиц 19

Создание запроса 19

Что такое запрос? 19

Где применяются запросы? 19

Команда SELECT 19

Выбирайте всегда самый простой способ 20

Описание SELECT 21

Просмотр определенного столбца таблицы 21

Переупорядочивание столбцов 21

Удаление избыточных данных 22

Параметры DISTINCT 23

ALL вместо DISTINCT 23

Квалифицированный выбор при использовании предложений 23

Резюме 24

Работа с SQL 25

Использование реляционных и булевых операторов для создания более изощрённых предикатов 27

Реляционные операторы 27

Булевы операторы 28

Резюме 31

Работа с SQL 31

Использование специальных операторов в условиях 33

Оператор IN 33

Оператор BETWEEN 34

Оператор LIKE 35

Работа с нулевыми (NULL) значениями 37

Оператор NULL 37

Использование NOT со специальными операторами 37

Резюме 38

Работа с SQL 38

Обобщение данных с помощью агрегатных функций 41

Что такое агрегатные функции? 41

Как использовать агрегатные функции? 41

Специальные атрибуты COUNT 42

Использование DISTINCT 42

Использование COUNT со строками, а не значениями 42

Включение дубликатов в агрегатные функции 43

Агрегаты, построенные на скалярном выражении 43

Предложение GROUP BY 43

Предложение HAVING 45

Не делайте вложенных агрегатов 46

Резюме 46

Работа с SQL 47

Форматирование вывода запросов 48

Строки и выражения 48

Скалярное выражение на основе выбираемых полей 48

Столбцы вывода 48

Помещение текста в вашем выводе запроса 49

Упорядочение вывода полей 50

Упорядочение по нескольким столбцам 50

Упорядочение агрегатных групп 51

Упорядочение вывода по номеру столбца 52

Упорядочение с помощью оператора NULL 53

Резюме 53

Работа с SQL 53

Запрос из нескольких таблиц так же, как из одной 56

Объединение таблиц 56

Имена таблиц и столбцов 56

Создание объединения 56

Объединение таблиц через справочную целостность 57

Объединения таблиц по равенству значений в столбцах и другие виды объединений 58

Объединение более двух таблиц 59

Резюме 59

Работа с SQL 59

Объединение таблицы с собой 61

Как делать объединение таблицы с собой? 61

Псевдонимы 61

Устранение избыточности 62

Проверка ошибок 63

Больше псевдонимов 63

Еще больше комплексных объединений 64

Резюме 65

Работа с SQL 65

Вставка одного запроса внутрь другого 67

Как работает подзапрос? 67

Значения, которые могут выдавать подзапросы 68

DISTINCT с подзапросами 68

Предикаты с подзапросами являются необратимыми 69

Использование агрегатных функций в подзапросах 69

Использование подзапросов, которые выдают много строк с помощью оператора IN 70

Подзапросы выбирают одиночные столбцы 72

Использование выражений в подзапросах 72

Подзапросы в предложении HAVING 73

Резюме 74

Работа с SQL 74

Соотнесенные подзапросы 75

Как сформировать соотнесенный подзапрос 75

Как работает соотнесенный подзапрос 76

Использование соотнесенных подзапросов для нахождения ошибок 77

Сравнение таблицы с собой 78

Соотнесенные подзапросы в предложении HAVING 79

Соотнесенные подзапросы и объединения 79

Резюме 80

Работа с SQL 80

Использование оператора EXISTS 81

Как работает EXISTS? 81

Выбор столбцов с помощью EXISTS 82

Использование EXISTS с соотнесенными подзапросами 82

Комбинация из EXISTS и объединения 82

Использование NOT EXISTS 83

EXISTS и агрегаты 84

Более удачный пример подзапроса 84

Резюме 85

Работа с SQL 85

Использование операторов ANY, ALL и SOME 87

Специальные операторы ANY или SOME 87

Использование операторов IN или EXISTS вместо оператора ANY 88

Как ANY может стать неоднозначным 89

Специальный оператор ALL 91

Равенства и неравенства 92

Правильное понимание ANY и ALL 94

Как ANY, ALL, и EXIST поступают с отсутствующими и неизвестными данными 94

Когда подзапрос возвращается пустым 94

ANY и ALL вместо EXISTS с пустым указателем (NULL) 94

RATING 94

Использование COUNT вместо EXISTS 95

Резюме 96

Работа с SQL 96

Использование предложения UNION 97

Объединение нескольких запросов в один 97

Когда вы можете делать объединение между запросами? 98

UNION и устранение дубликатов 98

Использование строк и выражений с UNION 99

Использование UNION с ORDER BY 100

Внешнее объединение 101

Резюме 103

Работа с SQL 103

Ввод, удаление и изменение значений полей 105

Команды модификации языка DML 105

Ввод значений 105

Вставка пустых указателей (NULL) 105

Именование столбца для вставки (INSERT) 106

Вставка результатов запроса 106

Изменение значений поля 107

Модифицирование только определенных строк 107

Команда UPDATE для многих столбцов 107

Использование выражений для модификации 108

Модифицирование пустых (NULL) значений 108

Резюме 108

Работа с SQL 108

Использование подзапросов с командами модификации 111

Использование подзапросов с INSERT 111

Не вставляйте дубликаты строк 111

Использование подзапросов, созданных во внешней таблице запроса 112

Использование подзапросов с DELETE 112

Использование подзапросов с UPDATE 114

Столкновение с ограничениями подзапросов команды DML 114

Резюме 115

Работа с SQL 115

Создание таблиц 117

Команда создания таблицы 117

Индексы 118

Уникальность индекса 119

Удаление индексов 119

Изменение таблицы после того, как она была создана 119

Удаление таблиц 120

Резюме 120

Работа с SQL 120

Ограничение значений ваших данных 121

Ограничение таблиц 121

Объявление ограничений 121

Использование ограничений для исключения пустых (NULL) указателей 121

Убедитесь, что значения уникальны 122

Уникальность как ограничение столбца 122

Уникальность как ограничение таблицы 122

Ограничение первичных ключей 123

Первичные ключи более чем одного поля 124

Проверка значений полей (CHECK) 124

Использование CHECK, чтобы предопределять допустимое вводимое значение 124

Проверка условий, базирующаяся на нескольких полях 125

Установка значений по умолчанию 126

Резюме 127

Работа с SQL 127

Поддержка целостности ваших данных 131

Внешний ключ и родительский ключ 131

Многостолбцовые внешние ключи 131

Смысл внешнего и родительского ключей 131

Ограничение FOREIGN KEY 132

Как можно поля представить в качестве внешних ключей 132

Внешний ключ как ограничение таблицы 133

Внешний ключ как ограничение столбцов 133

Не указывать список столбцов первичных ключей 133

Как справочная целостность ограничивает значения родительского ключа 134

Первичный ключ как уникальный внешний ключ 134

Ограничения внешнего ключа 134

Что случится, если вы выполните команду модификации 134

Включение описаний таблицы 135

Действие ограничений 135

Внешние ключи, которые ссылаются обратно к их подчиненным таблицам 137

Резюме 138

Работа с SQL 138

Введение в представления 141

Что такое представление? 141

Команда CREATE VIEW 141

Модифицирование представлений 142

Именование столбцов 142

Комбинирование предикатов представлений и основных запросов в представлениях 143

Групповые представления 144

Представления и объединения 144

Представления и подзапросы 145

Чего не могут делать представления 145

Удаление представлений 146

Резюме 146

Работа с SQL 146

Изменение значений с помощью представлений 147

Модифицирование представления 147

Определение модифицируемости представления 148

Модифицируемые представления и представления "только чтение" 148

Что является модифицируемым представлением 149

Проверка значений, помещаемых в представление 149

Предикаты и исключенные поля 150

Проверка представлений, которые базируются на других представлениях 151

Резюме 152

Работа с SQL 152

Кто что может делать в базе данных 155

Пользователи 155

Регистрация 155

Предоставление привилегий 155

Стандартные привилегии 156

Команда GRANT 156

Группы привилегий, группы пользователей 156

Ограничение привилегий на определенные столбцы 157

Использование аргументов ALL и PUBLIC 157

Предоставление привилегий с помощью WITH GRANT OPTION 158

Отмена привилегий 158

Использование представлений для фильтрации привилегий 159

Кто может создавать представления? 159

Ограничение привилегии SELECT для определенных столбцов 159

Ограничение привилегий для определенных строк 159

Предоставление доступа только к извлеченным данным 160

Использование представлений в качестве альтернативы к ограничениям 160

Другие типы привилегий 161

Типичные привилегии системы 161

Создание и удаление пользователей 162

Резюме 162

Работа с SQL 163

Глобальные аспекты SQL 165

Переименование таблиц 165

Переименование с тем же самым именем 165

Одно имя для каждого 166

Удаление синонимов 166

Как база данных распределена для пользователей? 166

Когда сделанные изменения становятся постоянными? 167

Как SQL общается сразу со многими пользователями 168

Типы блокировок 170

Другие способы блокировки данных 170

Резюме 171

Работа с SQL 171

Как данные SQL содержатся в упорядоченном виде 173

Каталог системы 173

Типичный системный каталог 173

Использование представлений в таблицах каталога 174

Разрешить пользователям видеть (только) их собственные объекты 174

Комментарий в содержании каталога 175

Остальное из каталога 176

Другое использование каталога 180

Резюме 180

РАБОТА С SQL 181

Использование SQL с другим языком (встроенный SQL) 183

Что такое вложение SQL 183

Зачем вкладывать SQL? 183

Как делаются вложения SQL 183

Использование переменных основного языка в SQL 184

Объявление переменных 185

Извлечение значений переменных 186

Курсор 186

SQLCODE 188

Использование SQLCODE для управления циклами 188

Предложение WHENEVER 188

Модифицирование курсоров 189

Переменная INDICATOR 190

Использование переменной INDICATOR для эмуляции NULL значений SQL 191

Другое использование переменной INDICATOR 192

Резюме 192

Работа с SQL 193

Ответы для упражнений 195

Глава 1 195

Глава 2 195

Глава 3 195

Глава 4 195

Глава 5 196

Глава 6 197

Глава 7 197

Глава 8 197

Глава 9 198

Глава 10 198

Глава 11 198

Глава 12 199

Глава 13 199

Глава 14 200

Глава 15 200

Глава 16 201

Глава 17 201

Глава 18 201

Глава 19 202

Глава 20 202

Глава 21 203

Глава 22 203

Глава 23 203

Глава 24 204

Глава 25 205

Типы данных в SQL 209

Типы ANSI 209

Эквивалентные типы данных в других языках 209

Некоторые общие нестандартные средства SQL 211

Типы данных 211

Команда FORMAT 212

Функции 213

INTERSECT и MINUS 214

Автоматические внешние объединения 215

Отслеживание действий 215

Справочник по командам и синтаксису 217

SQL элементы 217

OR 219

SQL команды 220

Таблицы, используемые в SQL 225

Предисловие

"Понимание SQL"— это полный учебник по программированию на Структурированном Языке Запросов, написанный специально для тех, кто будет использовать SQL в процессе работы. Даже если это ваш первый опыт с компьютерами или управлением базами данных, книга"Понимание SQL"очень быстро научит вас свободно работать с реальной SQL, использованию простых запросов, а также снабдит вас ясными понятиями об автоматизированном управлении базой данных. Книга даст вам краткое, удобное в чтении введение в реляционные базы данных. Предоставит вам обучающие программы, чтобы, овладевая командами SQL шаг за шагом, помочь вам узнать, как извлекать и обрабатывать информацию, содержащуюся в таблицах данных, т.е.:

выбирать информацию, с которой вы хотите работать;

добавлять, удалять и модифицировать информацию в таблице данных;

использовать и/или, верно/неверно и другие условия для выделения определенной информации;

использовать специальные функции SQL для суммирования ваших данных.

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

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

Вы узнаете, как использовать SQL с другими языками в специальной главе SQL для программистов.

"Понимание SQL"— необходима и пригодна для любой реализации Структурированного Языка Запросов. Книга включает и краткий справочный стандарт SQL и руководство к общим нестандартным особенностям SQL.

1

Введение в реляционные базы данных Введение

SQL (обычно произносится "сэквэл") означает Структурированный Язык Запросов (Structured Query Language). Это — язык, который дает вам возможность создавать и работать в реляционных базах данных, которые являются наборами связанной информации, сохраняемой в таблицах.

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

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

Стандарт SQL определяется ANSI(American National Standard Institute — Американским Национальным Институтом Стандартов) и в данное время также принимаетсяISO(International Standard OrganizationМеждународной Организацией по Стандартизации). Однако большинство коммерческих программ баз данных расширяют SQL без уведомления ANSI, добавляя разные другие особенности в этот язык, которые, как они считают, будут весьма полезны. Иногда они несколько нарушают стандарт языка, хотя хорошие идеи имеют тенденцию развиваться и вскоре становиться стандартами "рынка" сами по себе, в силу полезности своих качеств. В этой книге, мы будем, в основном, следовать стандарту ANSI, но одновременно иногда будем показывать и некоторые наиболее общие отклонения от его стандарта. Вы должны проконсультироваться с документацией вашего пакета программ, который вы будете использовать, чтобы знать, где в нем этот стандарт видоизменен.

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