Использование языка SQL. Общие понятия реляционной модели данных. Типовые операции по обработке записей одной реляционной таблицы

Страницы работы

Фрагмент текста работы

квадратные скобки ( [ ] ) заключены необязательные элементы синтаксиса (сами квадратные скобки в этом случае в операторе SQL не используются);

ƒ  Вертикальная черта ( | ), разделяющая два элемента, указывает на то, что в операторе используется либо один элемент, либо второй (сама вертикальная черта в текст оператора также не включается);

ƒ  В фигурные скобки ( { } ) заключаются элементы, разделенные вертикальной чертой (иначе невозможно понять, какие именно элементы предложены на выбор); 

ƒ  Троеточие означает, что далее в операторе следует (в зависимости от контекста) либо выражение, либо повторяются элементы, указанные перед тремя точками.

Для создания реляционной таблицы нужно задать состав и свойства её полей: имя, тип и длину (если нужно) каждого поля. Каждая таблица в базе данных должна иметь уникальное имя.

Синтаксис оператора создания новой таблицы:

CREATE TABLE таблица (поле_1 тип [(размер)]

[NOT NULL] [индекс_1] [, поле_2 тип [(размер)] [NOT NULL]  [индекс_2] [, . . .]] [, CONSTRAINT составной_индекс [,…]]); где таблица – имя создаваемой таблицы; поле_1, поле_2,…- имена полей таблицы (таблица должна содержать хотя бы одно поле); тип – тип данных поля; размер – размер поля в символах (только для текстовых и двоичных полей); индекс_1, индекс_2,… - директивы создания простых индексов (по отдельному полю); составной_индекс – директива создания составного индекса (по нескольким полям). Ограничение для поля NOT NULL (не пустое), требует обязательного заполнения поля допустимыми данными при добавлении новых записей в таблицу. Инструкция на языке SQL заканчивается точкой с запятой.

Каждый индекс имеет уникальное в пределах данной таблицы имя. Для создания простого индекса используется инструкция (помещается за именем поля, входящего в индекс):

CONSTRAINT имя_индекса         {PRIMARY     KEY     |   UNIQUE                                                                      |

REFERENCES внешняя_таблица [(внешнее_поле)]};

Директива создания составного индекса (помещается в любом месте после определения элементов индекса):

CONSTRAINT имя_индекса {PRIMARY KEY (ключевое_поле_1

[, ключевое_поле_2 [,…]]) | UNIQUE (уникальное_поле_1 [,…]]) | FOREIGN KEY (ссылка_1 [, ссылка_2 [,…]]) REFERENCES  внешняя_таблица [(внешнее_поле_1 [, внешнее_поле_2[,…]] )]}; В инструкциях использованы следующие служебные слова: UNIQUE – уникальный индекс (в таблице не может быть двух записей, имеющих одно и то же значение полей, входящих в индекс); PRIMARY KEY – первичный ключ таблицы (может состоять из нескольких полей; упорядочивает записи таблицы); FOREIGN KEY – внешний ключ для связи с другими таблицами (может состоять из нескольких полей); REFERENCES – ссылка на внешнюю таблицу.

ПРИМЕР.

CREATE TABLE Студенты (Имя TEXT, Фамилия TEXT, ДатаРождения DATETIME, CONSTRAINT Индекс1 UNIQUE (Имя, Фамилия, ДатаРождения));

- создаётся таблица Студенты с текстовыми полями Имя, Фамилия, полем ДатаРождения типа дата/время и с составным уникальным индексом с именем Индекс1, включающим все поля этой таблицы.

2.4. Операторы языка обработки данных

Инструкция SELECT

Получив эту инструкцию, ядро MS Jet возвращает из базы данных набор запрошенных записей. Инструкция SELECT формирует запрос на выборку (Select Query). Синтаксис инструкции:

SELECT [предикат] { * | таблица.* | [таблица.]поле_1 

[AS псевдоним_1] [, [таблица.]поле_2 [AS псевдоним_2] [,...]]} 

FROM выражение [, ...] [IN внешняя_база_данных]

[WHERE...] [GROUP BY...] [HAVING...] [ORDER BY...]

[WITH OWNERACCESS OPTION];

Описание параметров инструкции:

предикат - задает различные варианты отбора записей. Возможные значения: ALL (возвращаются все значения, удовлетворяющие условиям отбора), DISTINCT (если записи содержат повторяющиеся значения в выбранных для запроса полях, то возвращается только одна из них), DISTINCTROW (если записи полностью повторяются, то возвращается только одна из них), TOP n [PERCENT] (возвращаются либо первые n записей, либо первые n процентов записей из набора данных). Если предикат не указан, используется значение ALL.

* или таблица.*. Символ звездочка (*) указывает на выбор всех полей таблицы. Если в запросе участвует одна таблица, может использоваться упрощенный синтаксис (*), если таблиц несколько — синтаксис ИмяТаблицы.* указывает на то, что нужно выбрать все поля из конкретной таблицы ИмяТаблицы.

таблица - имя таблицы, данные из которой выбираются.

поле_1, поле_2 - имена полей, из которых выбираются данные.

Если полей несколько, они выбираются в указанном порядке.  псевдоним_1, псевдоним_2 - новые названия для столбцов (заголовки), которые будут использоваться вместо имен полей.

выражение - имена одной или нескольких таблиц, участвующих в запросе. Например, Таблица1, Таблица2 AS Псевдоним. Вместо имени Таблица2 в последующей части SQL-оператора можно использовать Псевдоним. Кроме того, здесь же может быть указана связь между таблицами при помощи операций INNER JOIN (симметричное соединение), LEFT JOIN и RIGHT JOIN (левое и правое соединения). внешняя_база_данных  - если информация запрашивается не из текущей базы данных, сразу за ключевым словом IN нужно указать полный путь и имя файла внешней базы данных, заключенные в одинарные кавычки.

предложение WHERE - вслед за ключевым словом WHERE указывается логическое выражение. Записи из базовых таблиц (запросов) попадают в итоговую выборку в случае истинности этого выражения. Предложение WHERE необязательное, но если оно присутствует, то следует за предложением FROM. 

предложение GROUP BY - содержит список полей, которые используются для группировки записей. Порядок следования полей в этом предложении определяет уровни их группировки. В предложении GROUP BY можно указать до 10 полей. Группировку можно производить и для выражений (например, вычисляемых полей).

предложение HAVING - вслед за предложением HAVING указывается логическое выражение, определяющее, какие из уже отобранных и сгруппированных записей будут отображаться в результирующем наборе данных. От предложения WHERE отличается тем, что записи отбираются уже после группировки. Таким образом, предложение WHERE используется для первоначального

Похожие материалы

Информация о работе