sqlserver里面添加约束条件

本文介绍了SQL中五种主要的表约束类型:主键约束、check约束、unique约束、默认约束和外键约束,并提供了每种约束的具体应用实例,帮助读者更好地理解和使用这些约束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.主键约束:


格式为:
alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)


例子:
alter table emp add constraint ppp primary key (id);


 


2.check约束:就是给一列的数据进行了限制
格式:
alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)


例子:
alter table emp add constraint xxx check(age>20);


 


3.unique约束:这样的约束就是给列的数据追加的不重复的约束类型


格式:
alter table 表名 add constraint 约束名称 约束类型(列名)
例子:
alter table emp add constraint qwe unique(ename);


 


4.默认约束:意思很简单就是让此列的数据默认为一定的数据


格式:
alter table 表名称 add constraint 约束名称 约束类型 默认值) for 列名


例子:


alter table emp add constraint jfsddefault 10000 for gongzi;


 


5.外键约束:
格式:
alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称 (列名)


例子:
alter table emp add constraint jfkdsj foreign key (did) references dept (id);






6删除约束 alter table 表名 drop constraint 约束名
### 如何在 SQL Server 中为字段添加约束条件 #### 添加主键 (Primary Key) 约束 主键用于唯一标识表中的每一行记录。可以使用 `ALTER TABLE` 或创建表时定义主键。 ```sql -- 创建表时指定主键 CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, Name NVARCHAR(50), Position NVARCHAR(50) ); -- 已有表添加主键 ALTER TABLE Employees ADD CONSTRAINT PK_EmployeeID PRIMARY KEY (EmployeeID); ``` 此方法确保了 `EmployeeID` 字段的值不为空且具有唯一性[^1]。 --- #### 添加外键 (Foreign Key) 约束 外键用于维护两个表之间的参照完整性,防止非法数据被插入到关联字段中。 ```sql -- 创建表并指定外键 CREATE TABLE Orders ( OrderID INT PRIMARY KEY, EmployeeID INT, FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) ); -- 已有表添加外键 ALTER TABLE Orders ADD CONSTRAINT FK_Order_Employee FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID); ``` 当设置了外键后,在尝试删除或更新父表 (`Employees`) 的记录时,如果子表 (`Orders`) 存在依赖,则会阻止这些操作以保护数据一致性[^4]。 --- #### 添加唯一性 (Unique) 约束 唯一性约束确保某列或多列组合中的所有值都必须不同。 ```sql -- 创建表时指定唯一性约束 CREATE TABLE Users ( UserID INT PRIMARY KEY, Email NVARCHAR(255) UNIQUE ); -- 已有表添加唯一性约束 ALTER TABLE Users ADD CONSTRAINT UQ_Email UNIQUE (Email); ``` 这一步骤保证了 `Email` 列中的每一个邮箱地址都是唯一的[^1]。 --- #### 添加检查 (Check) 约束 检查约束用于限制某一列可能接受的值范围。 ```sql -- 创建表时指定检查约束 CREATE TABLE Products ( ProductID INT PRIMARY KEY, Price DECIMAL(10, 2), CHECK (Price >= 0) ); -- 已有表添加检查约束 ALTER TABLE Products ADD CONSTRAINT CHK_Price CHECK (Price >= 0); ``` 这里通过 `CHECK` 条件验证价格是否大于等于零,从而避免负数或其他不合理数值进入数据库[^3]。 --- #### 综合示例 下面是一个综合的例子,展示如何在一个表中应用多种类型的约束: ```sql CREATE TABLE Students ( StudentID INT PRIMARY KEY IDENTITY(1,1), -- 自增主键 FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, BirthDate DATE CHECK(BirthDate <= GETDATE()), -- 检查出生日期不超过当前时间 EnrollmentDate DATE DEFAULT(GETDATE()), -- 设置默认入学时间为今天 Email NVARCHAR(255) UNIQUE -- 邮箱地址唯一 ); ``` 在此例子中: - 使用了自动生成的身份列作为主键; - 对某些字段设定了不可为空的要求; - 应用了检查逻辑来限定合法输入; - 定义了一条默认规则以便自动填充特定情况下缺失的信息; - 并且规定电子邮件不得重复出现于任何两笔记录之间[^1][^3]。 --- ### 注意事项 对于复杂的业务场景,建议先设计好完整的 ER 图再逐步实现各层间的联系与控制机制。此外还需注意性能调优方面的影响因素,例如过多索引可能会降低写入效率等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值