首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
为什么DBMS那么重要
DBMS的种类
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
1-3 SQL概要
标准SQL
SQL语句及其种类
SQL的基本书写规则
1-4 表的创建
表的内容的创建
数据库的创建(CREATE DATABASE语句)
表的创建(CREATE TABLE语句)
命名规则
数据类型的指定
约束的设置
1-5 表的删除和更新
表的删除(DROP TABLE语句)
表定义的更新(ALTER TABLE语句)
向Product表中插入数据
第2章 查询基础
2-1 SELECT语句基础
列的查询
查询出表中所有的列
为列设定别名
常数的查询
从结果中删除重复行
根据WHERE语句来选择记录
注释的书写方法
算术运算符
需要注意NULL
比较运算符
对字符串使用不等号时的注意事项
不能对NULL使用比较运算符
2-3 逻辑运算符
NOT运算符
AND运算符和OR运算符
通过括号强化处理
逻辑运算符和真值
含有NULL时的真值
第3章 聚合与排序
3-1 对表进行聚合查询
聚合函数
计算表中数据的行数
计算NULL之外的数据的行数
计算合计值
计算平均值
计算值和小值
使用聚合函数删除重复值(关键字DISTINCT)
3-2 对表进行分组
GROUP BY子句
聚合键中包含NULL的情况
使用WHERE子句时GROUP BY的执行结果
与聚合函数和GROUP BY子句有关的常见错误
3-3 为聚合结果指定条件
HAVING子句
HAVING子句的构成要素
相对于HAVING子句,更适合写在WHERE子句中的条件
3-4 对查询结果进行排序
ORDER BY子句
指定升序或降序
指定多个排序键
NULL的顺序
在排序键中使用显示用的别名
ORDER BY子句中可以使用的列
不要使用列编号
当前位置:
首页>>
技术小册>>
SQL基础教程(上)
小册名称:SQL基础教程(上)
### 约束的设置 在数据库设计中,约束(Constraints)是确保数据准确性和可靠性的关键机制。它们定义了表中数据的规则,限制可以存储在表中的数据类型,并维护表之间的关系一致性。在《SQL基础教程(上)》的“约束的设置”这一章节中,我们将深入探讨不同类型的约束,包括主键约束、外键约束、唯一约束、检查约束(在某些数据库系统中)以及默认值约束和非空约束,并学习如何在SQL中创建、修改和删除这些约束。 #### 1. 引言 数据库管理系统(DBMS)通过约束来强制实施数据的完整性规则。这些规则可以分为两大类:实体完整性(Entity Integrity)和参照完整性(Referential Integrity)。实体完整性确保表中的每一行都能被唯一标识,通常通过主键约束实现。参照完整性则维护表之间的关系,确保一个表中的外键列只包含另一个表主键列中存在的值,通过外键约束实现。 #### 2. 主键约束(Primary Key Constraint) 主键约束是数据库中最常用的约束之一,用于唯一标识表中的每一行。主键列必须包含唯一值,且不允许为空(NULL)。每个表只能有一个主键,但主键可以由一个或多个列(称为复合主键)组成。 ##### 创建主键约束 在创建表时,可以直接指定主键列: ```sql CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), Email VARCHAR(100) ); ``` 或者,在表创建后添加主键约束: ```sql ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID); ``` ##### 复合主键 如果两个或更多列的组合能够唯一标识表中的每一行,可以使用复合主键: ```sql CREATE TABLE Orders ( OrderID INT, ProductID INT, OrderDate DATE, PRIMARY KEY (OrderID, ProductID) ); ``` #### 3. 外键约束(Foreign Key Constraint) 外键约束用于在两个表之间建立关系,确保一个表中的列(外键)只包含另一个表主键列中的值。这有助于维护数据的参照完整性。 ##### 创建外键约束 ```sql CREATE TABLE Orders ( OrderID INT PRIMARY KEY, EmployeeID INT, OrderDate DATE, FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) ); ``` 在这个例子中,`Orders`表的`EmployeeID`列是外键,它引用了`Employees`表的主键`EmployeeID`。 #### 4. 唯一约束(Unique Constraint) 唯一约束确保表中的一列或列组合中的所有值都是唯一的,但允许NULL值存在(除非在创建约束时指定了NOT NULL)。唯一约束用于保护数据的唯一性,但不作为表的主键。 ##### 创建唯一约束 ```sql CREATE TABLE Departments ( DepartmentID INT PRIMARY KEY, DepartmentName VARCHAR(100), ManagerID INT UNIQUE ); ``` 或者,在表创建后添加唯一约束: ```sql ALTER TABLE Departments ADD CONSTRAINT UQ_ManagerID UNIQUE (ManagerID); ``` #### 5. 检查约束(Check Constraint) 检查约束用于限制列中可以存储的值的范围。例如,可以确保年龄列中的值大于0。不是所有的数据库系统都支持检查约束,但它在支持它的系统中非常有用。 ##### 创建检查约束 ```sql CREATE TABLE Students ( StudentID INT PRIMARY KEY, Name VARCHAR(100), Age INT, CHECK (Age > 0) ); ``` 在表创建后添加检查约束: ```sql ALTER TABLE Students ADD CONSTRAINT CHK_StudentAge CHECK (Age > 0 AND Age < 60); ``` #### 6. 默认值约束(Default Constraint) 默认值约束为表中的列指定一个默认值。如果在插入新行时没有为列提供值,则数据库将自动使用默认值。 ##### 创建默认值约束 ```sql CREATE TABLE Courses ( CourseID INT PRIMARY KEY, CourseName VARCHAR(100), IsActive BIT DEFAULT 1 ); ``` 在这个例子中,如果插入新行时没有指定`IsActive`的值,它将默认为1(表示课程是活跃的)。 #### 7. 非空约束(NOT NULL Constraint) 非空约束确保列中不能存储NULL值。它对于需要始终有值的数据列非常有用。 ##### 创建非空约束 ```sql CREATE TABLE Users ( UserID INT PRIMARY KEY, Username VARCHAR(50) NOT NULL, Password VARCHAR(100) NOT NULL ); ``` #### 8. 修改和删除约束 在数据库的设计过程中,有时需要修改或删除已存在的约束。这可以通过`ALTER TABLE`语句实现。 ##### 修改约束 直接修改约束(如更改约束的名称或条件)通常不是直接支持的,但可以通过删除旧约束并添加新约束来实现。 ##### 删除约束 ```sql ALTER TABLE Employees DROP CONSTRAINT PK_Employees; -- 删除主键约束 ALTER TABLE Orders DROP CONSTRAINT FK_Orders_Employees; -- 删除外键约束(注意:FK_Orders_Employees是假设的外键约束名称) ``` 删除约束时,需要知道约束的确切名称。在某些数据库系统中,如SQL Server,可以使用系统视图(如`INFORMATION_SCHEMA.TABLE_CONSTRAINTS`)来查询约束的名称。 #### 9. 结论 在数据库设计中,正确设置约束是确保数据完整性和准确性的关键步骤。通过主键约束、外键约束、唯一约束、检查约束、默认值约束和非空约束,可以强制实施数据的各种规则,从而保护数据免受无效或不一致的修改。了解如何在SQL中创建、修改和删除这些约束,对于任何希望成为高效数据库管理员或开发人员的人来说,都是必不可少的技能。 在本章节中,我们详细探讨了不同类型的约束及其用法,并提供了具体的SQL示例来说明如何在创建表时或之后添加这些约束。希望这些内容能够帮助你更好地理解和应用SQL中的约束设置,从而设计出更加健壮和可靠的数据库系统。
上一篇:
数据类型的指定
下一篇:
1-5 表的删除和更新
该分类下的相关小册推荐:
SQL基础教程(中)
SQL基础教程(下)
PostgreSQL入门教程
高性能的Postgres SQL