- •1 Введение 2
- •2 Выборка информации из базы данных 3
- •3 Команды модификации таблиц 15
- •4 Создание таблиц 17
- •1Введение
- •2Выборка информации из базы данных
- •2.1Базовый синтаксис оператора select
- •2.8.1Полный синтаксис оператора select
- •2.8.2Упорядочивание результатов
- •2.8.3Устранение повторяющихся строк
- •2.8.4Агрегирующие функции
- •2.7Поиск по подстрокам (like)
- •2.8Сортировка данных и другие методы выбора. Группировка данных
- •2.8.5Группировка данных
- •2.9Соединение таблиц и сложный анализ данных
- •2.9.1Соединение
- •2.9.2Внешнее соединение
- •2.9.3Операции над множествами (объединение, пересечение, разность)
- •2.10Структурированные запросы и подзапросы
- •2.10.1Подзапросы в предложении where
- •2.10.1.1Подзапросы, не возвращающие значений или возвращающие несколько значений
- •2.10.1.2Подзапросы, возвращающие единственное значение
- •2.10.1.3Подзапросы, выполняющие проверку на существование
- •2.10.2Подзапросы в предложении from
- •2.10.3Подзапросы в предложении select
- •3.1.3Ввод, удаление, и изменение значений полей
- •3.2Удаление строк из таблиц
- •3.3Изменение значений поля
- •3.4Использование подзапросов с командами модификации
- •4Создание таблиц
- •4.1Команда создания таблицы
- •4.2Создание индекса
- •4.3Удаление индексов
- •4.4 Изменение таблицы после создания
- •4.5Удаление таблиц
- •4.6Ограничение значений данных
- •4.6.1Ограничение таблиц
- •4.6.2Объявление ограничений
- •4.6.2.1Уникальность как ограничение столбца
- •4.6.2.2Уникальность как ограничение таблицы
- •4.6.2.3Ограничение первичных ключей
- •4.6.2.4Проверка значений полей
- •4.6.2.5Установка значений по умолчанию
2Выборка информации из базы данных
2.1Базовый синтаксис оператора select
Простейшей формой SQL-запроса является такая, которая предполагает выбор из нескольких отношений группы кортежей, удовлетворяющих определенному условию. При его написании используется следующая базовая конструкция:
SELECT <список выбора>
FROM <список таблиц>
WHERE <условия поиска>.
В предложении FROM перечисляют наименование отношений, к которым обращен запрос.
Предложение WHERE задает условие отбора кортежей. Кортежи, включаемые в результирующее отношение, должны удовлетворять условию отбора.
Предложение SELECT оговаривает, какие атрибуты кортежей, принадлежащих отношениям из FROM и удовлетворяющих условию WHERE, должны быть включены в отношение, служащее результатом обработки запросов. Для упрощения набора таблицам позволяется задавать псевдонимы (aliases). Псевдоним указывается после имени таблицы в списке таблиц
Символ «*» – все атрибуты отношения из FROM. При необходимости, можно удалить некоторые из атрибутов выбранных кортежей. Для этого необходимо в предложении SELECT задать список атрибутов отношения, упомянутого в предложении FROM, которые подлежат включению в итоговое отношение.
Предложение SELECT позволяет сопроводить имя атрибута служебным словом AS и псевдонимом (alias), который должен стать заголовком соответствующего столбца итоговой таблицы.
Предложение SELECT позволяет использовать вычисляемые выражения, а также даже постоянные величины.
2.2Соглашение об именовании
Помимо правильного порядка предложений, в операторе SELECT нужно однозначно описать все объекты базы данных. Например, если в базе данных содержаться несколько столбцов с одинаковым именем, нужно точно указать какой из них имеется в виду. Для этого при указании атрибута в его имя нужно включить имя базы данных, таблицы и имя владельца.
2.3Порядок выполнения логических операторов
<Скобки><Умножение/деление><Сложение/вычитание><NOT><AND><OR>
2.4Диапазоны (BETWEEN и NOT BETWEEN)
Одно из средств реализации условий являются диапазоны. Определить диапазон можно двумя способами:
с помощью операторов сравнения > и <;
с помощью ключевого слова BETWEEN (включающий диапазон).
<имя столбца> [NOT] BETWEEN <значение1> AND <значение2>.
2.5Списки (IN и NOT IN)
Ключевое слово IN позволяет выбрать значения, совпадающие со значениями из заданного списка.
<имя столбца> [NOT] IN (<значение1>,[<значение2>,[…,[<значениеN>]]])
При использовании ключевого слова IN отпадает необходимость во вводе многочисленных операторов сравнения.
Наиболее полное преимущество ключевого слова IN проявляются во вложенных запросах, называемых подзапросами.
2.6Выбор неопределенных значений
В ситуации, когда возможно появление неизвестных или неполных данных, разработчик имеет на выбор два варианта.
Первый вариант состоит в том, чтобы ограничиться использованием обычных типов данных и не использовать null-значения, а вместо неизвестных данных вводить либо нулевые значения, либо значения специального вида - например, договориться, что строка "АДРЕС НЕИЗВЕСТЕН" и есть те данные, которые нужно вводить вместо неизвестного адреса. В любом случае на пользователя (или на разработчика) ложится ответственность за правильную трактовку таких данных. В частности, может потребоваться написание специального программного кода, который в нужных случаях определял бы такие данные.
Второй вариант состоит в использовании null-значений вместо неизвестных данных. За кажущейся естественностью такого подхода скрываются более глубокие проблемы. Самой очевидной является необходимость использования трехзначной логики (three-valued logic, 3VL) при оперировании с данными, которые могут содержать null-значения. В трехзначной логике кроме значений T - ИСТИНА и F - ЛОЖЬ, введено значение U - НЕИЗВЕСТНО. Логическое значение U - это то же самое, что и null-значение. Трехзначная логика базируется на следующих таблицах истинности:
AND |
OR |
NOT |
||||||||||||||||||||||||||||||||||||||
|
|
|
Зная о подобных следствиях трёхзначной логики, следует избегать применения null-значений для данных, участвующих в операциях, где результат должен быть точно известен.
Для обработки значений NULL при построении условия выбора используется ключевое слово IS NULL.
<имя столбца> IS NULL
