Вы путаете сладкое с мягким.
Constraint ограничение - когда вы задаёте параметры таблицы при помощи create/alter table
вы говорите, что для такого-то поля задаётся constraint (ограничение).
Ограничениями может быть primary key, foreign key, unique, default, check и т. д. - это всё ограничения.
Вот таблица:
CREATE TABLE MYTABLE (
ID BIGINT NOT NULL CONSTRAINT PK_MYTABLE PRIMARY KEY,
CLIENT BIGINT NOT NULL CONSTRAINT FK_MYTABLE_CLIENT FOREIGN KEY REFERENCES CLIENTS(ID),
EMAIL NVARCHAR(100) NOT NULL CONSTRAINT UQ_MYTABLE_EMAIL UNIQUE,
ACTIVE BIT NOT NULL CONSTRAINT DF_MYTABLE_ACTIVE DEFAULT (1)
)
Что переводится как:
Создать таблицу MYTABLE (с полями):
ID целое 64 бит, не допускать пустых,
ограничение с названием PK_MYTABLE вида "Первичный ключ",
CLIENT целое 64 бит, не допускать пустых,
ограничение с названием FK_MYTABLE_CLIENT вида "Внешний ключ", который ссылается на таблицу CLIENTS, поле ID,
EMAIL строковое длиной 100, не допускать пустых,
ограничение с названием UQ_MYTABLE_EMAIL вида "Должно быть уникальным",
ACTIVE бит, не допускать пустых,
органичение с названием DF_MYTABLE_ACTIVE вида "Значение по умолчанию" равное 1
Есть и альтернативный синтаксис, где ключевое слово constraint не используется.
В основном его применяют, когда надо явно задать имя на ограничение.