Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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) Название команды модификации 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 с.) |