Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
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) Название команды модификации
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; просмотров: 292; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.10 (0.009 с.) |