Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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)

 

Команды DML

Добавление insert into (имя таблицы) [(список полей)] values (список значений)

Удаление

Изменение

Пример. insert into Customer (name) values (‘Иванов’)

Не указанные – либо значения по умолчанию, либо null (или не not null). При нарушении ограничения not null или любого другого добавления не происходит (сообщение об ошибке). Когда список полей опущен, то имеется в виду список всех полей по умолчанию.

insert into (имя таблицы) (команда select). В указанную таблицу добавляется множество записей, выбранных командой select. Предполагается, что результат выборки согласован по типу с полями таблицы.

delete – удаление записей из таблицы.

update – изменение значений полей.

select – выборка данных.

delete from (имя таблицы) where (условия удаления) – удалить все записи из таблицы, удовлетворяющие данному условию (условиям).

delete from Customer where credit=0.

Замечание. В реальности команда delete, как правило, не удаляет записи физически, а лишь помечает их как удалённые.

update (имя таблицы) set (список присваиваний вида: имя поля=выражение) where (условия обновления). В указанной таблице обновить все записи, удовлетворяющие указанным условиям, присвоить указанным полям значения соответствующего выражения.

update Customer set Credit=Credit+100 where city=’Казань’

Как правило, СУБД включают в себя средства восстановления удалённых записей и, собственно, физического удаления помеченных записей.

select [ All/Distinct ] (список выборки) from (список таблиц) [where (условия фильтрации)] [order by (список имён полей или номеров выражений из списка выборки)] [group by (список имён полей, либо номеров выражений из списка выборки)] [having (условия на группу)] [union (другая команда select)]

select Name, Year(date(…))-year(birthday) from Customer

Результат выборки – таблица.

Имена полей этой таблицы совпадают с именами полей исходной таблицы, для сложных выражений генерируется системой.

Опция as используется для задания пользовательских имён результирующей таблицы. Типы полей определяются по типу выражения. Размерность – тёмное место языка.

Опция where: из исходной таблицы отбираются лишь записи, удовлетворяющие заданному условию.

where city=’Казань’

 

Предикаты в SQL

Помимо сравнений и булевых операций возможны и более специфичные для SQL предикаты.

Предикат сравнения по маске: (аргумент) [ not ] like (маска), где маска – произвольная символьная строка, содержащая специальный символ % (символ кратной замены) и _ (символ одиночной замены). Предикат считается истинным, если маску можно превратить в аргумент при подходящей замене знака подчёркивания (_) на одиночный символ и знака % на слово.

where city=’Казань’ and name=’Иван%’

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

(аргумент 1) [ not ] between (аргумент 2) and (аргумент 3)

Предикат истинен, если аргумент1 принадлежит замкнутому интервалу [аргумент 2, аргумент 3] (отрезок).

(аргумент) [ not ] in (список значений) – предикат истинен, если аргумент совпадает с одним из значений списка.

City between ‘Казань’ and ’Москва’

Смотри далее: «Предикаты, использующие выборку».



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 192; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.149.158 (0.009 с.)