Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ SQL\T-SQL ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


T-SQL 2014: Ключи и ограничения


USE test;
GO

--Первичный ключ или primary key — в реляционной модели данных один из потенциальных ключей отношения, выбранный в качестве основного ключа
--Первичный ключ это - столбец, значения которого во всех строках уникальны
--В таблице возможно наличие только одного ограничения по первичному ключу
--Все столбцы с ограничением PRIMARY KEY должны иметь признак NOT NULL
--Если допустимость значения NULL не указана, то для всех столбцов c ограничением PRIMARY KEY устанавливается признак NOT NULL

--Создание первичного ключа в новой таблице
CREATE TABLE test.dbo.keys
(
   ID int NOT NULL,
   name VARCHAR(MAX),
   email VARCHAR(MAX)
   CONSTRAINT PK_T_ID PRIMARY KEY CLUSTERED (ID)
);

--Удаление первичного ключа
ALTER TABLE test.dbo.keys DROP CONSTRAINT PK_T_ID; 

--Создание первичного ключа в существующей таблице
ALTER TABLE test.dbo.keys ADD CONSTRAINT PK_T_ID PRIMARY KEY CLUSTERED (ID);


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

--Создание ограничения уникальности
CREATE TABLE test.dbo.un
(
   UN int NOT NULL,
   name VARCHAR(MAX),
   email VARCHAR(MAX)
   CONSTRAINT AK_UN UNIQUE(UN),
);

--Удаление ограничения уникальности
ALTER TABLE test.dbo.un DROP CONSTRAINT AK_UN; 

--Создание ограничения уникальности в существующей таблице
ALTER TABLE test.dbo.un ADD CONSTRAINT AK_UN UNIQUE (UN); 


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

--Создание внешнего ключа в новой таблице
--Предложения ON DELETE CASCADE и ON UPDATE CASCADE обеспечевают распространение изменений, вносимых в таблицу keys на таблицу fk
--ON DELETE CASCADE - при удалении строк и ON UPDATE CASCADE при изменении соответственно

CREATE TABLE test.dbo.fk 
(
    TID int NOT NULL, 
    name VARCHAR(MAX),
    email VARCHAR(MAX)
    CONSTRAINT PK_T_TID PRIMARY KEY NONCLUSTERED(TID), 
    CONSTRAINT FK_T_TID FOREIGN KEY(TID) 
    REFERENCES test.dbo.keys(ID)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);

--Удаление внешнего ключа
ALTER TABLE test.dbo.fk  DROP CONSTRAINT FK_T_TID; 

--Создание внешнего ключа в существующей таблице
--ADD CONSTRAINT таблица_с_внешним_ключом FOREIGN KEY(столбец) REFERENCES основная_таблица(столбец) 

ALTER TABLE test.dbo.fk 
ADD CONSTRAINT FK_T_TID FOREIGN KEY(TID) 
    REFERENCES test.dbo.keys(ID) 
    ON DELETE CASCADE
    ON UPDATE CASCADE
;

--Проверим работу CASCADE
--Добавим тестовые данные

INSERT INTO test.dbo.keys VALUES (1, '1', '1')
INSERT INTO test.dbo.fk VALUES (1, '1', '1')

--При изменении данных в таблице keys, изменения благодаря ON UPDATE CASCADE внесутся в таблицу fk
UPDATE test.dbo.keys SET ID = 7 WHERE id = 1
SELECT * FROM test.dbo.fk

--При удалении данных в таблице keys, изменения благодаря ON DELETE CASCADE внесутся в таблицу fk
DELETE test.dbo.keys WHERE ID = 7
SELECT * FROM test.dbo.fk


--Создание ограничений
CREATE TABLE test.dbo.ch
(
    i int
    CONSTRAINT chi CHECK (i >= 1)
);

--Удаление ограничений
ALTER TABLE test.dbo.ch  DROP CONSTRAINT chi; 

--Создание ограничений в созданной таблице
ALTER TABLE test.dbo.ch
ADD CONSTRAINT chi CHECK (i >= 1);

--Проверим работу ограничения
INSERT INTO test.dbo.ch VALUES (1)
INSERT INTO test.dbo.ch VALUES (-1)
SELECT * FROM test.dbo.ch


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект