SQL Server创建数据库和数据表的相关约束实现方法

1. SQL Server 创建数据库

在进行数据库操作之前,需要先创建数据库。创建数据库的语句为:

CREATE DATABASE database_name;

其中,database_name 表示要创建的数据库的名称。

创建数据库的过程中可以定义数据文件和日志文件的存储位置和大小等参数,具体语法如下:

CREATE DATABASE database_name

ON

PRIMARY

(NAME = logical_data_name, FILENAME = 'path\file_name.mdf',

SIZE = size_megabytes, MAXSIZE = max_size_megabytes, FILEGROWTH = growth_increment )

LOG ON

(NAME = logical_log_name, FILENAME = 'path\file_name.ldf',

SIZE = size_megabytes, MAXSIZE = max_size_megabytes, FILEGROWTH = growth_increment )

其中,“PRIMARY”表示主文件组,logical_data_name 表示数据文件的逻辑名称,path\file_name.mdf 表示数据文件的存储路径,size_megabytes 表示数据文件的初始大小(单位为 MB),max_size_megabytes 表示数据文件的最大大小,growth_increment 表示数据文件的增长量(单位为 MB)。同样地,logical_log_name 表示日志文件的逻辑名称,path\file_name.ldf 表示日志文件的存储路径,size_megabytes 表示日志文件的初始大小(单位为 MB),max_size_megabytes 表示日志文件的最大大小,growth_increment 表示日志文件的增长量(单位为 MB)。

2. SQL Server 创建数据表

2.1 创建简单的数据表

在创建数据表时,需要给出数据表的名称和表中的列名及其数据类型。创建数据表的语句格式如下:

CREATE TABLE table_name (

column1 datatype,

column2 datatype,

column3 datatype,

.....

);

其中,table_name 表示要创建的数据表的名称,column1、column2、column3 等表示数据表的列名,datatype 表示数据类型。

例如,我们要创建一个名叫 Customers 的数据表,其中包括 ID、Name、Age 三个列,ID 为整型,Name 为字符串类型,Age 为整型。则创建 Customers 数据表的语句如下:

CREATE TABLE Customers (

ID INT,

Name VARCHAR(255),

Age INT

);

2.2 设置数据表的主键

主键是数据表中用于唯一标识每一行记录的一列或一组列,主键的值必须是唯一的且不能为空。设置主键的语句格式如下:

CREATE TABLE table_name (

column1 datatype PRIMARY KEY,

column2 datatype,

column3 datatype,

.....

);

其中,column1 表示要设置为主键的列,PRIMARY KEY 表示设置为主键。

以名为 Customers 的表为例,我们要设置其 ID 列为主键,则修改 Customers 表的语句如下:

CREATE TABLE Customers (

ID INT PRIMARY KEY,

Name VARCHAR(255),

Age INT

);

2.3 设置数据表的外键

外键用于建立两个数据表之间的关系,外键指向另一个数据表中的主键。设置外键的语句格式如下:

CREATE TABLE table_name1 (

column1 datatype,

column2 datatype,

....,

CONSTRAINT FK_name

FOREIGN KEY (column_name)

REFERENCES table_name2 (column_name)

);

其中,table_name1 表示要创建的数据表名称,column1、column2 等表示数据表的列名,FK_name 表示外键名称,column_name 表示要设置为外键的列名,table_name2 表示被引用的数据表名称,column_name 表示被引用数据表中的列名。

例如,我们创建一个名为 Orders 的数据表,其中包括 ID、OrderNumber 两个列,还要引用 Customers 表中的 ID 列作为外键,代码如下:

CREATE TABLE Orders (

ID INT NOT NULL,

OrderNumber VARCHAR(255) NOT NULL,

CONSTRAINT FK_Order_Customer FOREIGN KEY (ID)

REFERENCES Customers(ID)

);

2.4 添加默认值

当插入数据时,如果未指定某些列的值,则这些列将设置为默认值。可以为数据表的每个列指定一个默认值。设置默认值的语句格式如下:

CREATE TABLE table_name (

column1 datatype DEFAULT default_value,

column2 datatype DEFAULT default_value,

column3 datatype DEFAULT default_value,

.....

);

其中,column1、column2、column3 等表示数据表的列名,datatype 表示数据类型,default_value 表示默认值。

以名为 Orders 的数据表为例,我们为其添加默认值,将 ID 列的默认值设置为 1,代码如下:

CREATE TABLE Orders (

ID INT NOT NULL DEFAULT 1,

OrderNumber VARCHAR(255) NOT NULL,

CONSTRAINT FK_Order_Customer FOREIGN KEY (ID)

REFERENCES Customers(ID)

);

2.5 添加 CHECK 约束

CHECK 约束用于限制数据表中某些列的取值范围,只有当指定的条件成立时,才能插入数据。添加 CHECK 约束的语句格式如下:

CREATE TABLE table_name (

column1 datatype constraint_name CHECK(condition),

column2 datatype,

column3 datatype,

.....

);

其中,table_name 表示要创建的数据表名称,column1、column2、column3 等表示数据表的列名,datatype 表示数据类型,constraint_name 表示约束名称,condition 表示约束条件。

以名为 Products 的数据表为例,我们要添加 CHECK 约束,限制价格必须大于 0,代码如下:

CREATE TABLE Products (

ProductName VARCHAR(255) NOT NULL,

Price DECIMAL(10,2) NOT NULL,

CONSTRAINT CHK_Price CHECK (Price > 0)

);

2.6 添加 UNIQUE 约束

UNIQUE 约束用于保证数据表中某些列的取值是唯一的。添加 UNIQUE 约束的语句格式如下:

CREATE TABLE table_name (

column1 datatype,

column2 datatype,

column3 datatype,

.....

CONSTRAINT constraint_name UNIQUE (column1,column2,..),

);

其中,column1、column2、column3 等表示数据表的列名,datatype 表示数据类型,constraint_name 表示约束名称。

以名为 Customers 的数据表为例,我们要添加 UNIQUE 约束,保证 Email 列的值是唯一的,代码如下:

CREATE TABLE Customers (

ID INT PRIMARY KEY,

Name VARCHAR(255) NOT NULL,

Age INT,

Email VARCHAR(255) UNIQUE

);

2.7 添加 DEFAULT 约束

DEFAULT 约束用于为数据表中某些列设置默认值。添加 DEFAULT 约束的语句格式如下:

CREATE TABLE table_name (

column1 datatype DEFAULT default_value,

column2 datatype,

column3 datatype DEFAULT default_value,

.....

);

其中,column1、column2、column3 等表示数据表的列名,datatype 表示数据类型,default_value 表示默认值。

以名为 Orders 的数据表为例,我们要添加 DEFAULT 约束,将 CreateDate 列的默认值设置为当前日期,代码如下:

CREATE TABLE Orders (

ID INT NOT NULL,

OrderNumber VARCHAR(255) NOT NULL,

CreateDate DATE DEFAULT GETDATE(),

CONSTRAINT FK_Order_Customer FOREIGN KEY (ID)

REFERENCES Customers(ID)

);

2.8 添加 PRIMARY KEY 约束

PRIMARY KEY 约束用于保证数据表中某一列或某几列的值是唯一的,并且不能为空。添加 PRIMARY KEY 约束的语句格式如下:

CREATE TABLE table_name (

column1 datatype,

column2 datatype,

.....

CONSTRAINT constraint_name PRIMARY KEY (column1,column2,...)

);

其中,column1、column2 等表示数据表的列名,datatype 表示数据类型,constraint_name 表示约束名称。

以名为 Orders 的数据表为例,我们要添加 PRIMARY KEY 约束,将 ID 列设置为主键,代码如下:

CREATE TABLE Orders (

ID INT NOT NULL PRIMARY KEY,

OrderNumber VARCHAR(255) NOT NULL,

CONSTRAINT FK_Order_Customer FOREIGN KEY (ID)

REFERENCES Customers(ID)

);

2.9 添加 FOREIGN KEY 约束

FOREIGN KEY 约束用于建立两个数据表之间的关系,FOREIGN KEY 约束指向另一个数据表中的主键。添加 FOREIGN KEY 约束的语句格式如下:

CREATE TABLE table_name (

column1 datatype,

column2 datatype,

.....

CONSTRAINT constraint_name

FOREIGN KEY (column_name)

REFERENCES table_name2 (column_name)

);

其中,column1、column2 等表示数据表的列名,datatype 表示数据类型,constraint_name 表示约束名称,column_name 表示要设置为外键的列名,table_name2 表示被引用的数据表名称,column_name 表示被引用数据表中的列名。

以名为 Orders 的数据表为例,我们要添加 FOREIGN KEY 约束,将 ID 列作为外键,并引用 Customers 表中的 ID 列,代码如下:

CREATE TABLE Orders (

ID INT NOT NULL,

OrderNumber VARCHAR(255) NOT NULL,

CONSTRAINT FK_Order_Customer FOREIGN KEY (ID)

REFERENCES Customers(ID)

);

2.10 添加 ON DELETE 级联操作

在需要关联两个数据表时,需要在外键约束中添加 ON DELETE 级联操作来处理在删除主表记录时,如何操作与之有关的子表记录。ON DELETE 级联操作有以下几种类型:

CASCADE:级联删除,删除主表时同时删除关联的子表记录。

SET NULL:置空,删除主表时将关联的子表记录的外键列设为 NULL。

SET DEFAULT:置默认值,删除主表时将关联的子表记录的外键列设为默认值。

添加 ON DELETE 级联操作的语法如下:

CREATE TABLE table_name (

.....

CONSTRAINT constraint_name

FOREIGN KEY (column_name)

REFERENCES table_name2 (column_name)

ON DELETE CASCADE --ON DELETE SET NULL/ON DELETE SET DEFAULT

);

其中,table_name 表示要创建的数据表名称,column_name 表示要设置为外键的列名,table_name2 表示被引用的数据表名称,column_name 表示被引用数据表中的列名,constraint_name 表示约束名称,CASCADE/SET NULL/SET DEFAULT 表示要执行的级联操作类型。

以名为 Orders 的数据表为例,我们要添加 ON DELETE CASCADE 级联操作,代码如下:

CREATE TABLE Orders (

ID INT NOT NULL,

OrderNumber VARCHAR(255) NOT NULL,

CONSTRAINT FK_Order_Customer FOREIGN KEY (ID)

REFERENCES Customers(ID)

ON DELETE CASCADE

);

3. 总结

通过本文的介绍,我们了解了如何在 SQL Server 中创建数据库和数据表,并实现了数据表的相关约束,包括主键、外键、默认值、CHECK 约束、UNIQUE 约束、DEFAULT 约束、PRIMARY KEY 约束、FOREIGN KEY 约束和 ON DELETE 级联操作。这些约束可以保证数据表中数据的完整性和准确性,为后续数据操作提供了保障。

数据库标签