Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД.doc
Скачиваний:
1
Добавлен:
25.11.2018
Размер:
183.81 Кб
Скачать

Структура sql

Data Definition Language Data Manipulation Language

(язык определения данных) (язык преобразования данных)

create/alter/drop table insert – добавление записи

Команды создания и изменения delete – удаление записи

структуры таблицы: update – изменение значений полей

create/alter/drop index* select – команда выборки

database*

* - в стандарте отсутствует

alter – изменять

drop – удалить

Грубо говоря, SQL состоит из команды select.

Create Table (имя таблицы) ((имя поля, тип поля [размерность]), {ограничение целостности уровня поля})

Так описываются все поля таблицы. В конце стоит ограничение целостности уровня записи и (в ANSI) уровня ссылочной целостности.

Типы данных полей: integer, character (символьная строка), decimal, numeric, smallint, float, real, double precision, date, time.

Другие популярные, но в стандарт не входящие, типы: money/currency, autoinc (авто приращение +1).

Ограничение целостности уровня поля:

Not null – в поле не разрешены значения null.

Unique – значения поля не должны повторяться.

Primary key – данное поле содержит значение первичного ключа.

Check <предикат> - проверка значения поля.

Default <выражение> - автоматически появляется при добавлении записи.

References* <имя таблицы > (имя поля этой таблицы) – ссылается на заданное поле заданной таблицы. Данное поле является внешним ключом по отношению к заданному полю как к первичному.

Ограничение целостности уровня записи:

Unique – уникальная запись (не может повторяться)

Primary key (список полей) – данный список полей образует первичный ключ.

Check <предикат> - предикат ссылается на несколько полей записи.

Foreign key (список 1 полей) – внешний ключ.

References (имя таблицы) имена полей – задан список полей 1, играет роль внешнего ключа по отношению к заданной таблице как к родительской, в которой список 2 является первичным ключом.

Ограничение ссылочной целостности

(Согласно ANSI)

Название команды модификации

Insert Cascades

Delete of (имя родительской таблицы) Nulls

Update Restricted

Create Index имя список полей

У него нет семантики

В рамках реляционного подхода таблица есть отношения, то есть множество, а в понятии множества порядок перечисления элементов отсутствует, но такой порядок исключительно важен в реализации. Все быстрые алгоритмы поиска (доступа) основаны на некотором упорядочивании компонент файла. Проблема: доступ к разным значениям нуждается в разном порядке компонент. Решение: хранить нужные порядки в разных файлах логически, то есть хранить не сами записи, а ссылки на них. Любая реализация SQL сама создаёт множество индексных файлов, содержащих такие ссылки. В частности, создаются индексы для значений ключевых полей.

Create table Customer (ID integer not null primary key, name char(20), city char(20), credit decimal not null check(credit>=0), birthday date check(year(birthday)>1900))

Create table Employee (ID integer not null primary key, name char(20), city char(20), comm decimal not null default 0, birthday date)

/*comm – доля выручки с заказа*/

Create table Orders (ID integer not null primary key, Cust_Ref integer not null references Customer(ID) //*//, Emp_Ref integer references Employee(ID) //*//, startdate not null, finishdate not null check(startdate<finishdate)

* - имеется первичный ключ по умолчанию

delete of Customer cascades

delete of Employee nulls

update of Customer cascades

Create table Item (Order_Ref integer not null, Product_Ref integer not null, amount integer not null default 1, unique(Order_Id, Product_Ref), foreign key (Product_Ref) references Product(ID)

/*amount – количество единиц товара*/

Create table Product (ID integer not null primary key, name char(30), price decimal not null check(price>0), type char(10) not null)