
- •1. Введение в бд
- •2. Теоретические основы бд
- •2.1 Базы данных
- •2.2. Архитектуры обработки информации
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3 Модели баз данных
- •2.3.1 Иерархическая модель данных
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3.2 Сетевая модель данных
- •Ошибка! Ошибка связи.
- •2.3.3 Реляционная модель данных
- •3. Реляционный подход к организации бд
- •3.1 Базовые понятия реляционных баз данных
- •Ошибка! Ошибка связи.
- •3.2 Фундаментальные свойства отношений
- •3.3 Взаимосвязь отношений
- •4. Реляционная алгебра
- •4.1 Обзор реляционной алгебры
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •4.2 Теоретико-множественные операторы
- •4.3 Специальные реляционные операторы
- •4.4 Зависимые реляционные операторы
- •4.5 Примитивные реляционные операторы
- •4.6 Запросы, невыразимые средствами реляционной алгебры
- •4.7 Кросс-таблицы
- •5. Проектирование бд
- •5.1. Цели и этапы проектирования
- •5.2 Уровни моделирования (проектирования) бд
- •5.3 Критерии оценки качества логической модели данных
- •5.4 Нормализация и ее необходимость
- •5.5 Теория нормализации
- •5.6 Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Ошибка! Ошибка связи.
- •6. Элементы языка sql
- •6.1 Типы данных
- •6.2 Операторы dml (определения объектов базы данных)
- •6.2.1 Операторы работы с таблицами
- •6.3 Операторы dml (операторы манипулирования данными)
- •6.3.1 Примеры использования операторов манипулирования данными
- •Insert - вставка строк в таблицу
- •6.3.2 Update - обновление строк в таблице
- •6.3.3 Delete - удаление строк в таблице
- •6.3.4 Выбор данных из таблицы select
- •6.3.4.1 Общий синтаксис команды select
- •6.3.4.2 Примеры работы с использованием оператора select
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •6.3.4.3 Порядок выполнения оператора select
- •6.3.4.4 Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
- •6.4 Объекты и концепции базы данных
- •6.4.1 Таблицы (Tables)
- •6.4.2 Столбцы (Columns)
- •6.4.3 Типы данных (Data types)
- •Тип данных blob
- •6.4.4 Домены (Domains)
- •6.4.5 Справочные ограничения целостности (Referential integrity constraints)
- •6.4.6 Индексы (Indexes)
- •6.4.7 Представления (Views)
- •6.4.8. Хранимые процедуры (Stored procedures)
- •6.4.9 Триггеры (Triggers)
- •6.4.10 Генераторы (Generators)
- •6.4.11 Защита (Security)
- •6.5 Операторы sql для работы с объектами бд
- •6.5.1 Представления
- •6.5.2 Хранимые процедуры
- •6.5.3 Генераторы
- •6.5.4 Триггеры
- •6.5.5 Индексы
- •6.6 Инструкции sql
- •7. Физическая организация и работа субд
- •7.1 Хранение данных
- •Ошибка! Ошибка связи.
6.3.4.1 Общий синтаксис команды select
SELECT возвращает данные из таблицы, вида или сохраненной процедуры. Различныные инструкции SELECT выполняют слдующие действия:
Возвращают одиночную стоку или часть строки из таблицы. Это операция упоминается, как sigleton выбор.
Непосредственно возвращают список строк или список частичных строк из таблицы.
Возвращают связанные строки, или частичные строки из join двух или более таблиц.
Возвращают все строки, или частичные строки из union двух или более таблиц.
Любая инструкция SELECT содержит два обязательных предложения (SELECT, FROM) и возможно другие предложения (WHERE, GROUP BY, HAVING, UNION, PLAN, ORDER BY). Предложения SELECT и FROM обязательны и для sigleton, и для multi-row SELECT; все другие предложения перечисленные ниже факультативны. Следующая таблица объясняет назначение каждого предложения:
Предложение |
Назначение |
SELECT |
Список столбцов, которые возвращаются. |
FROM |
Определяет таблицы в которых ищутся значения. |
WHERE |
Определенное условие поиска, которое используется, чтобы выбрать необходимые стоки из множества всех строк. Предложение WHERE может содержать инструкцию SELECT, которая упоминается, как подзапрос |
GROUP BY |
Группирует возвращенные строки основываясь на общих значениях столбцов. Используется совместно с HAVING. |
HAVING |
Restricts rows generated by GROUP BY to a subset of those rows. |
UNION |
Комбинирует результаты двух или более инструкций SELECT создавая одиночную динамическую таблицу исключая повторяющиеся строки. |
ORDER BY |
Определяет порядок сортировки строк возвращенных SELECT, по умолчанию в возрастающем порядке (ASC), или в убывающем порядке (DESC). |
PLAN |
Определяет план запроса, который будет использоваться оптимизатором запроса вместо обычного выбора. |
Синтаксис
SELECT [DISTINCT | ALL] {* | <значение> [, <значение> ...]}
FROM <табл_ссылка> [, <табл_ссылка> ...]
[WHERE <условие_поиска>]
[GROUP BY колонка [COLLATE collation] [, колонка [COLLATE collation] ...]
[HAVING <условие_поиска>]
[UNION <select_выражение>]
[PLAN <plan_выраж>]
[ORDER BY <порядок>]
<значение> = {
колонка [<array_dim>] | <constant> | <expr> | <function>
| NULL | USER | RDB$DB_KEY
}
<array_dim> = [x:y [, x:y ...]]
Внешние скобки (выделены жирным) должны быть присутствовать при ссылке на массив.
<constant> = num | "string" | charsetname "string"
<expr> = Допустимое выражение SQL, результат которого одиночное значение.
<function> = {
COUNT (* | [ALL] <значение> | DISTINCT <значение>)
| SUM ([ALL] <значение> | DISTINCT <значение>)
| AVG ([ALL] <значение> | DISTINCT <значение>)
| MAX ([ALL] <значение> | DISTINCT <значение>)
| MIN ([ALL] <значение> | DISTINCT <значение>)
| CAST (<значение> AS <datatype>)
| UPPER (<значение>)
| GEN_ID (генератор, <значение>)
}
<табл_ссылка> = <joined_имя_табл> | имя_табл | имя_представл | имя_проц [(<значение> [, <значение> ...])] [alias]
<joined_имя_табл> = <табл_ссылка> <тип_соединения> JOIN <табл_ссылка>
ON <условие_поиска> | (<joined_имя_табл>)
<join-type> = {[INNER] | {LEFT | RIGHT | FULL } [OUTER]} JOIN
<условие_поиска> = {<значение> <оператор>
{<значение> | (<select_one>)}
| <значение> [NOT] BETWEEN <значение> AND <значение>
| <значение> [NOT] LIKE <значение> [ESCAPE <значение>]
| <значение> [NOT] IN (<значение> [, <значение> ...] | <select_list>)
| <значение> IS [NOT] NULL
| <значение> {[NOT] {= | < | >} | >= | <=}
{ALL | SOME | ANY} (<select_list>)
| EXISTS (<select_выражение>)
| SINGULAR (<select_выражение>)
| <значение> [NOT] CONTAINING <значение>
| <значение> [NOT] STARTING [WITH] <значение>
| (<условие_поиска>)
| NOT <условие_поиска>
| <условие_поиска> OR <условие_поиска>
| <условие_поиска> AND <условие_поиска>}
<оператор> = {=|<|>|<=|>=|<>}
<select_one> = SELECT on a single column that returns exactly one row.
<select_list> = SELECT on a single column that returns zero or more rows.
<select_выражение> = SELECT on a list of values that returns zero or more rows.
<plan_выраж> =
[JOIN | [SORT] MERGE] (<plan_item> | <plan_выраж>
[, <plan_item> | <plan_выраж> ...])
<plan_item> = {имя_табл | alias}
NATURAL | INDEX (<index> [, <index> ...]) | ORDER <index>
<порядок> =
{колонка | int} [COLLATE collation] [ASC[ENDING] | DESC[ENDING]]
[, <порядок>]
Аргумент |
Описание |
SELECT [DISTINCT | ALL] |
Определяет данные, для поиска. DISTINCT удаляет повторяющиеся значения из возвращенных данных. ALL, параметр по умолчанию, возвращает все данные. |
{* | <значение> [, <значение> ...]} |
* - возвращает все столбцы из определенной таблицы. <значение> [, <значение> ...] - возвращает определенный список столбцов и значений. |
FROM <табл_ссылка> [,<табл_ссылка> ...] |
Список таблиц, видов и сохраненных процедур, из которых возвращаются данные. Список может включать JOIN, объединения могут быть вложенными. |
имя_табл |
Имя существующей таблицы в базе данных. |
имя_представл |
имя существующего вида в базе данных. |
имя_проц |
Имя существующей сохраненной процедуры, которая функционирует, как инструкция SELECT. |
alias |
Псевдоним - краткое, альтернативное имя для таблицы или вида. After declaration in tabdef, alias can stand in for subsequent references to a имя_табл or имя_представл. |
<joined_имя_табл> |
Ссылка таблицы состоящая из JOIN. |
<тип_соединения> |
Тип выполнения объединения. По умолчанию INNER. |
WHERE <search_условие> |
Определяет условия, которые ограничивают подмножество возвращаемых строк из всех доступных строк. |
GROUP BY <колонка>[, <колонка> ...] |
Разделяет результаты запроса в группы содержащие все строки с одинаковыми значениями, основанными на списке столбцов. |
COLLATE collation |
Определяет порядок сопоставления для данных возвращаемых запросом. |
HIVING <search_условие> |
Используется совместно с GRUP BY. Определяет условия, которые ограничивают группировку возвращаемых строк. |
UNION |
Комбинирует две или более таблиц, которые имеют полностью, либо частично одинаковую структуру. |
PLAN <plan_выраж> |
Определяет план доступа для оптимизатора InterBase, который используется в течении поиска. |
<plan_item> |
определяет таблицу и индексный метод для плана. |
ORDER BY <порядок> |
Определяет порядок в котором строки возвращены. |