我无法理解你的确切问题,因为我想让你理解 sql 中约束的概念,包括它的定义和类型。
约束用于限制可以进入表的数据类型。
可以在创建表时(使用 CREATE TABLE 语句)或创建表后(使用 ALTER TABLE 语句)指定约束。
约束类型:
•非空
•独特
•首要的关键
•外键
•查看
•默认
用小例子解释约束的类型:-
SQL NOT NULL 约束
•NOT NULL 约束强制列不接受NULL 值。
• NOT NULL 约束强制字段始终包含一个值。这意味着如果不向该字段添加值,您将无法插入新记录或更新记录。
•以下 SQL 强制“P_Id”列和“LastName”列不接受 NULL 值:
•创建表人
(
P_Id int 非空,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255)
)
SQL 唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。
CREATE TABLE 上的 SQL 唯一约束
当“Persons”表时,以下 SQL 在“P_Id”列上创建 UNIQUE 约束
被建造:
MySQL:
创建表人员
(
P_Id int 非空,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
唯一 (P_Id)
)
SQL Server / Oracle / MS 访问:
创建表人员
(
P_Id int NOT NULL 唯一,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255)
)
要允许命名 UNIQUE 约束并在多个列上定义 UNIQUE 约束,请使用以下 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
创建表人员
(
P_Id int 非空,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
约束 uc_PersonID 唯一 (P_Id,LastName)
)
ALTER TABLE 上的 SQL 唯一约束
要在已创建表时在“P_Id”列上创建 UNIQUE 约束,请
使用以下 SQL:
MySQL / SQL Server / Oracle / MS Access:
改变表人
添加唯一 (P_Id)
要允许命名 UNIQUE 约束并在多个列上定义 UNIQUE 约束,请使用以下 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
改变表人
添加约束 uc_PersonID 唯一 (P_Id,LastName)
删除唯一约束
要删除 UNIQUE 约束,请使用以下 SQL:
MySQL:
改变表人
删除索引 uc_PersonID
SQL Server / Oracle / MS 访问:
改变表人
删除约束 uc_PersonID
SQL 主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,每个表只能有一个主键。
CREATE TABLE 上的 SQL PRIMARY KEY 约束
以下 SQL 在“Persons”表为“P_Id”列时创建主键
创建:
MySQL:
创建表人员
(
P_Id int 非空,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
主键 (P_Id)
)
SQL Server / Oracle / MS 访问:
创建表人员
(
P_Id int 非空主键,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255)
)
要允许命名 PRIMARY KEY 约束并在多个列上定义 PRIMARY KEY 约束,请使用以下 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
创建表人员
(
P_Id int 非空,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
约束 pk_PersonID 主键 (P_Id,LastName)
)
CREATE TABLE 上的 SQL FOREIGN KEY 约束
以下 SQL 在创建“Orders”表时在“P_Id”列上创建一个 FOREIGN KEY: MySQL:
创建表订单
(
O_Id int 非空,
OrderNo int NOT NULL,
P_Id 整数,
主键(O_Id),
外键 (P_Id) 参考人员 (P_Id)
)
SQL Server / Oracle / MS 访问:
创建表订单
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
要允许命名 FOREIGN KEY 约束并在多个列上定义 FOREIGN KEY 约束,请使用以下 SQL 语法:MySQL / SQL Server / Oracle / MS Access:
创建表订单
(
O_Id int 非空,
OrderNo int NOT NULL,
P_Id 整数,
主键(O_Id),
约束 fk_PerOrders 外键 (P_Id)
参考人员(P_Id)
)
CREATE TABLE 上的 SQL CHECK 约束
以下 SQL 在创建“Persons”表时在“P_Id”列上创建 CHECK 约束。CHECK 约束指定列“P_Id”只能包含大于 0 的整数。
MySQL:
创建表人员
(
P_Id int 非空,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
检查 (P_Id>0)
)
SQL 默认约束
DEFAULT 约束用于在列中插入默认值。
CREATE TABLE 上的 SQL DEFAULT 约束
当创建“Persons”表时,以下 SQL 在“City”列上创建一个 DEFAULT 约束:
我的 SQL / SQL Server / Oracle / MS Access:
创建表人员
(
P_Id int 非空,
姓氏 varchar(255) 非空,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255) 默认 'Sandnes'
)
DEFAULT 约束也可用于插入系统值,通过使用 GETDATE() 之类的函数:
创建表订单
(
O_Id int 非空,
OrderNo int NOT NULL,
P_Id 整数,
OrderDate 日期 DEFAULT GETDATE()
)
上面的解释是使用约束的一般格式,希望它可以帮助你克服你的问题.......................