本教程详细介绍了在Microsoft SQL Server数据库管理系统中如何添加各种类型的约束(如主键、外键、唯一等)及其相关的SQL语法。
### SQL Server 中增加约束的方法与相关管理命令
#### 一、增加约束的SQL语句
在 SQL Server 中,约束是用来确保表中的数据符合特定规则的一种机制。常用的约束包括:主键约束、唯一约束、默认值约束、检查约束以及外键约束。
**1. 主键约束(Primary Key)**
主键约束用于确保表中的一列或多列具有唯一值,并且不允许为空值。创建主键约束的语法如下:
```sql
ALTER TABLE 表名
ADD CONSTRAINT 约束名 PRIMARY KEY (主键);
```
例如,在表`Students`中创建名为`PK_Students`的主键约束,指定`StudentID`作为主键:
```sql
ALTER TABLE Students
ADD CONSTRAINT PK_Students PRIMARY KEY (StudentID);
```
**2. 唯一约束(Unique)**
唯一约束用于确保表中的一列或多列具有唯一值,但允许为空值。创建唯一约束的语法如下:
```sql
ALTER TABLE 表名
ADD CONSTRAINT 约束名 UNIQUE (字段);
```
例如,在表`Employees`中创建名为`UQ_Employees_Email`的唯一约束,指定`Email`作为唯一字段:
```sql
ALTER TABLE Employees
ADD CONSTRAINT UQ_Employees_Email UNIQUE (Email);
```
**3. 默认值约束(Default)**
默认值约束用于设定表中某列的默认值。创建默认值约束的语法如下:
```sql
ALTER TABLE 表名
ADD CONSTRAINT 约束名 DEFAULT (默认值) FOR 字段;
```
例如,在表`Orders`中创建名为`DF_Orders_OrderDate`的默认值约束,指定`OrderDate`的默认值为当前日期:
```sql
ALTER TABLE Orders
ADD CONSTRAINT DF_Orders_OrderDate DEFAULT (GETDATE()) FOR OrderDate;
```
**4. 检查约束(Check)**
检查约束用于限制列中的值范围。创建检查约束的语法如下:
```sql
ALTER TABLE 表名
ADD CONSTRAINT 约束名 CHECK (字段 BETWEEN 值1 AND 值2);
```
例如,在表`Students`中创建名为`CK_Students_Age`的检查约束,确保`Age`字段的值在10到100之间:
```sql
ALTER TABLE Students
ADD CONSTRAINT CK_Students_Age CHECK (Age BETWEEN 10 AND 100);
```
**5. 外键约束(Foreign Key)**
外键约束用于在两个表之间建立关联。创建外键约束的语法如下:
```sql
ALTER TABLE 表名
ADD CONSTRAINT 约束名 FOREIGN KEY (字段) REFERENCES 参照表 (参照字段);
```
例如,在表`Orders`中创建名为`FK_Orders_Customers`的外键约束,参照`Customers`表中的`CustomerID`字段:
```sql
ALTER TABLE Orders
ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID);
```
#### 二、SQL Server 系统存储过程
除了增加约束的语句外,SQL Server 还提供了许多系统存储过程来管理和操作数据库。以下是一些常见的系统存储过程及其用法:
**1. `sp_attach_db`**
该存储过程用于将已删除的数据库重新加载到 SQL Server 中。其语法如下:
```sql
EXEC sp_attach_db @dbname=数据库名称,@filename1=路径;
```
例如,将名为“会计部门”的数据库加载到 SQL Server 中:
```sql
EXEC sp_attach_db @dbname=会计部门,@filename1=c:mssqldata会计部门.mdf;
```
**2. `sp_rename`**
该存储过程用于重命名数据库。其语法如下:
```sql
EXEC sp_rename 原数据库名称,新数据库名称;
```
例如,将“会计部门”数据库重命名为“业务部门”:
```sql
EXEC sp_rename 会计部门,业务部门;
```
**3. `sp_changedbowner`**
该存储过程用于更改数据库的所有者。其语法如下:
```sql
EXEC sp_changedbowner 新所有者名称;
```
例如,将数据库的所有者更改为 MIKE:
```sql
EXEC sp_changedbowner MIKE;
```
**4. `sp_helpdb`**
该存储过程用于显示数据库的相关信息。其语法如下:
```sql
EXEC sp_helpdb 数据库名称;
```
例如,显示“会计部门”数据库的信息:
```sql
EXEC sp_helpdb 会计部门;
```
以上是关于 SQL Server 中增加约束的方法及相关管理命令的详细介绍。这些命令对于数据库管理员来说是非常有用的工具,能够帮助他们有效地管理数据库结构和数据完整性。通过正确地使用这些命令,可以确保数据的安全性和一致性。