
- •"Понимание sql"
- •Введение в реляционную базу данных гл.1 введение
- •Понимание sql
- •Что такое - реляционная база данных?
- •Описание реляционных баз данных связывание одной таблицы с другой
- •Порядок строк произволен
- •Идентификация строк ( первичные ключи )
- •Столбцы именуются и нумеруются
- •************** Работа с sql **************
- •Гл.2 sql : обзор
- •Понимание sql
- •Sql: краткий обзор
- •Что делает ansi ?
- •Интерактивный и вложенный sql
- •Субподразделения sql
- •Sql несогласованности
- •Что такое - пользователь?
- •Условия и терминология
- •************** Работа с sql **************
- •Гл.3 использование sql для извлечения информации из таблиц
- •Что такое запрос ?
- •Где применяются запросы ?
- •Команда select
- •Выбирайте всегда самый простой способ
- •Описание select
- •Переупорядочение столбца
- •Удаление избыточных данных
- •Distinct вместо all
- •Квалифицированный выбор при
- •************* Работа с sql ***************
- •Гл.4 использование реляционных и булевых операторов для создания более изощренных предикатов
- •Понимание sql
- •************** Работа с sql **************
- •Гл.5 использование специальных операторов в условиях понимание sql
- •Работа с нулевыми( null ) значениями
- •Использование not со специальными операторами
- •************** Работа с sql **************
- •Гл.6 обобщение данных с помощью агрегатных функций понимание sql
- •Как использовать агрегатные функции ? cуммирование данных с помощью агрегатных функций
- •Специальные атрибуты count
- •Использование distinct
- •Использование count со строками, а не значениями
- •Включение дубликатов в агрегатные функции
- •Агрегаты построенные на скалярном выражении
- •Предложение group by
- •Предложение having
- •Не делайте вложенных агрегатов
- •************** Работа с sql **************
- •Гл.7 формирование выводов запросов
- •Понимание sql
- •Столбцы вывода
- •Помещение текста в вашем выводе запроса
- •Упорядочение с помощью многочисленых столбцов
- •Упорядочение агрегатных групп
- •Упорядочение вывода по номеру столбца
- •Упорядочение с помощью опретора null
- •************** Работа с sql **************
- •Гл.8 запрашивание многочисленых таблиц также как одной
- •Имена таблиц и столбцов
- •Создание обьединения
- •Объединение таблиц через справочную целостность
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •Объединение более двух таблиц
- •************** Работа с sql **************
- •Гл.9 объединение таблицы с собой
- •Псевдонимы
- •Устранение избыточности
- •Проверка ошибок
- •Больше псевдонимов
- •Еще больше комплексных объединений
- •************** Работа с sql **************
- •Гл.10 вставка одного запроса внутрь другого
- •Значения, которые могут выдавать подзапросы
- •Distinct с подзапросами
- •Предикаты с подзапросами являются необратимыми
- •Использование агрегатных функций в подзапросах
- •Использование подзапросов которые выдают много строк с помощью оператора in
- •Подзапросы выбирают одиночные столбцы
- •Использование выражений в подзапросах
- •Подзапросы в предложении having
- •*************** Работа с sql *************
- •Гл.11 соотнесенные подзапросы
- •Как сформировать
- •Как работает соотнесенный подзапрос
- •Использование соотнесенных подзапросов для нахождения ошибок
- •Сравнение таблицы с собой
- •Соотнесенные подзапросы в предложении having
- •Соотнесенные подзапросы и обьединения
- •*************** Работа с sql *************
- •Гл.12 использование оператора exists
- •Выбор столбцов с помощью exists
- •Использование exists с соотнесенными подзапросами
- •Комбинация из exists и обьединения
- •Использование not exists
- •Exists и агрегаты
- •Более удачный пример подзапроса
- •Гл.13 использование операторов any, all и some
- •Использование операторов any, all, и some
- •Использование операторов in или exists вместо оператора any
- •Использование операторов any, all, и some
- •Как any может стать неоднозначным
- •Равенства и неравенства
- •Правильное понимание any и all
- •Any и all вместо exists с пустым указателем( null )
- •Использование count вместо exists
- •Гл.14 использование предложения union
- •Запросов в один
- •Когда вы можете делать объединение между запросами ?
- •Union и устранение дубликатов
- •Использование строк и выражений с union
- •Внешнее объединение
- •Гл.15 ввод, удаление и изменение значений полей
- •Insert (вставить),
- •Вставка пустых указателей (null)
- •Именование столбца для вставки (insert)
- •Вставка результатов запроса
- •Модифицирование только определенных строк
- •Команда update для многих столбцов
- •Использование выражений для модификации
- •Гл.16 использование подзапросов с командами модификации
- •Не вставляйте дубликаты строк
- •Использование подзапросов созданых во внешней таблице запроса
- •Столкновение с ограничениями подзапросов команды dml
- •************** Работа с sql **************
- •Гл.17 создание таблиц понимание sql
- •Уникальность индекса
- •Удаление индексов
- •Изменение таблицы после
- •**************** Работа с sql ************
- •Гл.18 ограничение значений ваших данных понимание sql
- •Объявление ограничений
- •Использование ограничений для исключения пустых( null ) указателей
- •Убедитесь что значения - уникальны
- •Уникальность как ограничение столбца
- •Уникальность как ограничение таблицы
- •Ограничение первичных ключей
- •Первичные ключи более чем одного поля
- •Проверка значений полей
- •Использование - check, чтобы предопределять допустимое вводимое значение
- •Проверка условий базирующийся на многочисленых полях
- •Установка значений поумолчанию
- •Гл.19 поддержка целостности ваших данных понимание sql
- •Много-столбцовые внешние ключи
- •Смысл внешнего и родительского ключей
- •Как можно поля представить в качестве внешних ключей
- •Внешний ключ как ограничение таблицы
- •Внешний ключ как ограничение столбцов
- •Не указывать список столбцов первичных ключей
- •Как справочная целостность ограничивает значения родительского ключа
- •Первичный ключ как уникальный внешний ключ
- •Ограничения внешнего ключа
- •Что случится, если вы выполните команду модификации
- •Действие ограничений
- •Внешние ключи которые ссылаются обратно к их подчиненым таблицам
- •*************** Работа с sql *************
- •Гл.20 введение: представления
- •Модифицирование представлений
- •Комбинирование предикатов представлений и основных запросов в представлениях
- •Групповые представления
- •Представления и обьединения
- •Представления и подзапросы
- •Что не могут делать представления
- •Удаление представлений
- •*************** Работа с sql *************
- •Гл.21 изменение значений с помощью представлений
- •Определение модифицируемости представления
- •Модифицируемые представления и представления только_чтение.
- •Что является - модифицируемыми представлением
- •Проверка значений
- •Предикаты и исключенные поля
- •Проверка представлений которые базируются на других представлениях
- •************** Работа с sql **************
- •Гл.22 кто что может делать в базе данных
- •Регистрация
- •Стандартные привилегии
- •Команда grant
- •Группы привелегий, группы пользователей
- •Ограничение привилегий на определенные столбцы
- •Использование аргументов all и public
- •Предоставление привелегий с помощью with grant option
- •Отмена привилегий
- •Использование представлений для фильтрации привелегий
- •Кто может создавать представления?
- •Ограничение привилегии select для определенных столбцов
- •Предоставление доступа только к извлеченным данным
- •Использование представлений в качестве альтернативы к ограничениям
- •Типичные привилегии системы
- •Создание и удаление пользователей
- •Гл.23 глобальные аспекты sql
- •Переименование с тем же самым именем
- •Одно имя для каждого
- •Удаление синонимов
- •Как база данных распределена для пользователей ?
- •Когда сделанные изменения
- •Как sql общается сразу со многими пользователями
- •Типы блокировок
- •Другие способы блокировки данных
- •************** Работа с sql **************
- •Гл.24 как данные sql содержатся в упорядоченном виде
- •Каталог системы
- •Типичный системный каталог
- •Использование представлений в таблицах каталога
- •Разрешить пользователям видеть(только) их собственные объекты
- •Комментарий в
- •Systemsynons - синонимы для таблиц в базе данных
- •************** Работа с sql **************
- •Гл.25 использование sql с другим языком ( вложенный sql )
- •Что такое - вложение sql
- •Зачем вкладывать sql?
- •Как делаются вложения sql.
- •Использование переменных
- •Объявление переменных
- •Извлечение значений переменных
- •Предложение whenever
- •Использование переменной indicator для эмуляции null значений sql
- •Другое использование переменной indicator
- •************ Работа с sql ***************
- •Приложение a ответы для упражнений
- •Глава 1
- •Глава 2
- •Глава 3
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10
- •Глава 11
- •Глава 12
- •Глава 13
- •Глава 14
- •Глава 15
- •Глава 16
- •Глава 18
- •Глава 19
- •Глава 20
- •Глава 21
- •Глава 22
- •Глава 23
- •Глава 25
- •Приложение b типы данных в sql
- •Эквивалентные типы
- •Приложение c некоторые общие нестандартные средства sql
- •Типы date и time
- •Ibm Европейский
- •Ibm Европейский
- •Ibm usa Стандарт hh.Mm am/pm 9.04 pm
- •Типы текстовой строки
- •Математические функции
- •Символьные функции
- •Функции даты и времени
- •Автоматические
- •Приложение d синтаксис и команда ссылки
- •Функциональные элементы
- •Предикаты
- •Приложение e
Выбор столбцов с помощью exists
В вышеупомянутом примере, EXISTS должен быть установлен так чтобы легко выбрать один столбец, вместо того, чтобы выбирать все столбцы используя в выборе звезду( SELECT *) В этом состоит его отличие от подзапроса который ( как вы видели ранее в Главе 10 мог выбрать только один столбец ) .
Однако, в принципе он мало отличается при выборе EXISTS столбцов,или когда выбираются все столбцы, потому что он просто замечает - выполняется или нет вывод из подзапроса - а не использует выведенные значения.
Использование exists с соотнесенными подзапросами
В соотнесенном подзапросе, предложение EXISTS оценивается отдельно для каждой строки таблицы имя которой указано во внешнем запросе, точно также как и другие операторы предиката,когда вы используете соотнесенный подзапрос. Это дает возможность использовать EXISTS как верный предикат, который генерирует различные ответы для каждой строки таблицы указанной в основном запросе. Следовательно информация из внутреннего запроса, будет сохранена, если выведена непосредственно, когда вы используете EXISTS таким способом. Например, мы можем вывести продавцов которые имеют многочисленых заказчиков ( вывод для этого запроса
показывается в Рисунке 12.2 ):
SELECT DISTINCT snum
FROM Customers outer
WHERE EXISTS
( SELECT *
FROM Customers inner
WHERE inner.snum = outer.snum
AND inner.cnum < > outer.cnum );
=============== SQL Execution Log ============
| |
| SELECT DISTINCT cnum |
| FROM Customers outer |
| WHERE EXISTS |
| (SELECT * |
| FROM Customers inner |
| WHERE inner.snum = outer.snum |
| AND inner.cnum < > outer.cnum); |
| ============================================= |
| cnum |
| ----- |
| 1001 |
| 1002 |
=============================================
Рисунок 12. 2: Использование EXISTS с соотнесенным подзапросом
Для каждой строки-кандидата внешнего запроса ( представляющей заказчика проверяемого в настоящее время ), внутренний запрос находит строки которые совпадают со значением поля snum ( которое имел продавец ), но не со значением поля cnum(сответствующего другим заказчикам).Если любые такие строки найдены внутренним запросом, это означает, что имеются два разных заказчика обслуживаемых текущим продавцом ( то-есть продавцом заказчика в текущей строке-кандидата из внешнего запроса ). Предикат EXISTS поэтому верен для текущей строки, и номер продавца поля (snum) таблицы указанной во внешнем запросе будет выведено.
Если был DISTINCT не указан, каждый из этих продавцов будет выбран один раз для каждого заказчика к которому он назначен.