SQL Server中的数据约束

SQL Server是一个由微软开发和维护的关系数据库管理系统(RDBMS),它支持各种事务处理、数据存储和检索等操作。在数据库中,约束是一种用于防止不想要的数据被插入表中的预定义规则。本文将探讨SQL Server中可用的不同类型约束及其示例。

什么是约束?

在SQL Server中,约束是可以在列或多个列上强制执行的预定义规则,以确保不期望的数据不会插入到表中。约束有助于确保表中存储的数据的完整性、准确性和可靠性。如果执行的SQL操作符合指定的约束规则标准,则所需的操作将成功执行。然而,如果数据违反了约束,SQL操作将中止并显示错误消息。

不同类型的约束

以下是SQL Server中一些常见的约束类型:

默认情况下,SQL Server中的表列允许存储NULL值。NOT NULL约束确保列不接受NULL值作为输入。这意味着如果列上指定了NOT NULL约束,用户在插入新记录或更新现有记录时不能不添加值。

CREATE TABLE STUDENT(std_id INT NOT NULL, std_name varchar(50) NOT NULL, age INT NOT NULL);

尝试插入缺少值的记录将因NOT NULL约束而失败。

CHECK约束指定了可以插入到SQL Server指定表列中的有效输入值范围。当提供任何SQL语句以插入或更新值时,只有当CHECK约束得到满足时,语句才能成功执行。

CREATE TABLE STUDENT(std_id INT PRIMARY KEY, std_name varchar(50) NOT NULL, res_address varchar(50) NOT NULL, zip_code INT CHECK (zip_code LIKE REPLICATE ('[0-9]', 5)));

尝试插入不符合ZIP代码格式的记录将因CHECK约束而失败。

UNIQUE约束确保在SQL Server中指定的表列中没有重复值。当在表上定义UNIQUE约束时,SQL Server会自动创建索引。在具有UNIQUE约束的列中,只接受一个NULL值。

CREATE TABLE STUDENT(std_id INT PRIMARY KEY, std_name varchar(50) UNIQUE, res_address varchar(50) NOT NULL);

尝试插入具有相同名称的记录将因UNIQUE约束而失败。

DEFAULT约束用于为表中的一列或多列提供默认值。如果在INSERT语句中没有为具有DEFAULT约束的列指定值,SQL Server将插入其默认分配的值。

CREATE TABLE STUDENT(std_id INT PRIMARY KEY IDENTITY(1,1), std_name varchar(50), year_of_birth bigint DEFAULT 1998);

插入新学生数据时,默认的出生年份将自动设置为1998。

CREATE TABLE STUDENT(std_id INT PRIMARY KEY IDENTITY(1,1), std_name varchar(50), year_of_birth bigint DEFAULT 1998); CREATE TABLE STUDENT(std_id INT PRIMARY KEY IDENTITY(1,1), std_name varchar(50), year_of_birth bigint DEFAULT 1998); CREATE TABLE grades(std_id int not null FOREIGN KEY references STUDENT (std_id), grade varchar(3), primary key(std_id));
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485