Язык описания данных

Этот раздел описывает все операторы Transact-SQL, связанные с языком определения данных DDL (Data Definition Language). Операторы DDL разделены на три группы, которые рассматриваются по порядку. Первая группа включает операторы, которые создают объекты, вторая группа включает операторы, которые изменяют структуру объектов, а третья группа включает операторы, которые удаляют объекты базы данных.

Оценить
(0 голоса)
Ссылочная целостность усиливает правила добавления и изменения данных в таблице при помощи внешнего ключа и соответствующего ограничения первичного ключа. В примерах 5.7 и 5.10 задаются два таких ограничения: prim_empl и foreignworks. Предложение references в примере 5.10 определяет таблицу employee в качестве родительской таблицы.
Оценить
(0 голоса)
Существуют четыре случая, когда изменение значения внешнего или первичного ключа могут вызвать проблемы. Все эти случаи будут рассмотрены с использованием базы данных sample. Первые два случая влияют на изменения дочерней таблицы, тогда как последние два связаны с изменениями родительской таблицы.
Оценить
(0 голоса)
Добавление новой строки в дочернюю таблицу workson вводит новый номер служащего, для которого нет соответствующего служащего в родительской таблице (employee). Если ссылочная целостность для обеих таблиц задана так, как это сделано в примерах 5.7 и 5.10, то Database Engine отменяет добавление новой строки. Для читателя, знакомого с языком SQL, соответствующим оператором Transact-SQL будет use sample; insert into works_on (emp_no,   ...) values  (11111,   ...);
Оценить
(0 голоса)
В этом случае существующее значение внешнего ключа в таблице workson должно быть изменено на новое значение, для которого нет соответствующего значения в родительской таблице employee. Если ссылочная целостность для обеих таблиц задана так, как это сделано в примерах 5.7 и 5.10, то система базы данных отменит изменение этих строк в таблице workson. Соответствующий оператор Transact-SQL: use sample; update works_on set emp_no = 11111 where emp_no = 10102;
Оценить
(0 голоса)
В этом случае изменяется только существующее значение первичного ключа родительской таблицы, но не меняется соответствующее значение внешнего ключа в дочерней таблице. По этой причине система отменяет изменение строки в таблице employee с номером служащего 10102. Ссылочная целостность требует выполнения условия, что ни одна строка в дочерней таблице (с учетом предложения foreign key) не может присутствовать, если в родительской таблице нет соответствующей строки (предложение primary key). В противном случае строки в дочерней таблице станут «осиротевшими». Если бы модификации, описанные выше, были разрешены, то строки в таблице workson, имеющие номер служащего 10102, стали бы осиротевшими. Система должна отменить это изменение. Соответствующий оператор…
Оценить
(0 голоса)
Database Engine может по-разному реагировать на удаление или изменение первичного ключа таблицы. Если вы постараетесь изменить значение внешнего ключа, и это изменение повлечет несогласованность с соответствующим первичным ключом (см. случаи 1 и 2 в предыдущем разделе), система базы данных всегда будет отменять такое изменение и выдаст сообщение вроде следующего: Server: Msg 547, Level 16,  State 1,  Line 1 UPDATE statement conflicted with COLUMN FOREIGN KEY constraint 1FKemployee'. The conflict occurred in database 'sample', table 'employee', column 'dept_no'. The statement has been terminated. (Оператор изменения конфликтует с ограничением внешнего ключа для столбца 'FKemployee'. Конфликт появился в базе данных 'sample', в таблице…
Оценить
(0 голоса)
Реляционная база данных содержит не только базовые таблицы, которые существуют со своими привилегиями, но также и представления, которые являются виртуальными таблицами. Данные базовых таблиц существуют физически, т. е. они сохранены на диске, в то время как представление является производным от одной или более базовых таблиц. Оператор create view создает новое представление из одной или более существующих таблиц (или представлений), используя оператор select, который является неотъемлемой частью оператора create view. Так как в создании представления всегда присутствует запрос, то оператор create view относится к языку манипулирования данными (DML), а не к языку определения данных (DDL). По этой причине создание и удаление…
Оценить
(0 голоса)
Домен - множество всех возможных допустимых значений, которые может принимать столбец таблицы. Почти все СУБД используют базовые типы данных, такие как шт, char и date, для определения множества возможных значений столбца. Этот метод усиления «целостности домена» является неполным, как можно увидеть из следующего примера. Таблица person имеет столбец zip, который задает ZIP-код (почтовый индекс) города, в котором живет человек. Этот столбец может быть объявлен с типом данных smallint или char(5). Объявление с типом данных smallint является неточным, потому что тип данных smallint содержит все положительные и отрицательные целые числа в диапазоне между -215 и 215- 1. Объявление с использованием char(5)…
Оценить
(0 голоса)
Псевдоним типа данных является специальным видом типа данных, который определяется пользователем при использовании существующих базовых типов данных. Такие типы данных могут быть использованы в операторе create table для определения одного или более столбцов в базе данных. Оператор create type обычно применяется для создания псевдонима типа данных. Синтаксис этого оператора имеет следующий вид: create type [type_schema_name.]   type_name {[ from base_type [( precision [,  scale ])]   [ null | not null ] ] i  [ external name assembly_name [.class_name ]  ]} В примере 5.14 показано создание типа данных «псевдоним» с использованием оператора create type.   В примере 5.14 создается псевдоним типа zip,…
Оценить
(0 голоса)
Оператор create type может быть также применен для создания определенного пользователем типа данных с использованием .NET. В этом случае реализация определенного пользователем типа данных будет определяться в классе сборки Common Language Runtime (CLR). Это означает, что вы можете использовать один из языков .NET, типа С# или Visual Basic для реализации нового типа данных. Дальнейшее обсуждение определенных пользователем типов данных выходит за рамки тематики данной книги.
© 2018 serversql.ru. Все права защищены.