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

Навигация

⇒ SQL\T-SQL ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

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

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


T-SQL 2012: Первичные, внешние ключи, ограничения, уникальность


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

USE tsql;

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

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


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

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

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


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

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

CREATE TABLE 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 dbo.keys(ID)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);

--Создание внешнего ключа в существующей таблице
ALTER TABLE dbo.fk 
ADD CONSTRAINT FK_T_TID FOREIGN KEY(TID) 
    REFERENCES dbo.keys(ID) 
    ON DELETE CASCADE
    ON UPDATE CASCADE
;

--Проверим работу CASCADE
insert into dbo.keys values (1, '1', '1')
insert into dbo.fk values (1, '1', '1')

UPDATE dbo.keys SET ID = 7 WHERE id = 1
SELECT * FROM dbo.fk

DELETE dbo.keys WHERE ID = 7
SELECT * FROM dbo.fk


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

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

--Проверим работу ограничения
insert into dbo.ch values (1)
insert into dbo.ch values (-1)


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

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

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

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

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





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