SQL 约束学习笔记
约束是用于限制表中数据的规则,确保数据的完整性和一致性。SQL 提供了多种约束类型,包括主键约束、非空约束、唯一约束和检查约束。
1. 约束的类型
(1)主键约束(Primary Key)
- 定义:主键约束用于唯一标识表中的每一行,具有非空和唯一性。
- 语法:
1 2 3 4
| CREATE TABLE 表名 ( 列名 数据类型 PRIMARY KEY, ... );
|
(2)非空约束(Not Null)
- 定义:非空约束用于确保列中的值不能为空。
- 语法:
1 2 3 4
| CREATE TABLE 表名 ( 列名 数据类型 NOT NULL, ... );
|
(3)唯一约束(Unique)
- 定义:唯一约束用于确保列中的值不能重复。
- 语法:
1 2 3 4
| CREATE TABLE 表名 ( 列名 数据类型 UNIQUE, ... );
|
(4)检查约束(Check)
- 定义:检查约束用于确保列中的值满足指定条件。
- 语法:
1 2 3 4
| CREATE TABLE 表名 ( 列名 数据类型 CHECK (条件), ... );
|
2. 约束的创建
(1)第一种写法:在列定义时直接添加约束
1 2 3 4 5 6 7 8 9 10 11 12
| CREATE TABLE TAB_USER ( ID VARCHAR2(3) PRIMARY KEY, NAME VARCHAR2(10) NOT NULL, SAL NUMBER(5, 3) UNIQUE, AGE NUMBER(3) CHECK (AGE >= 1 AND AGE <= 150), GENDER VARCHAR2(3) DEFAULT '男' );
|
(2)第二种写法:在表定义后添加约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| CREATE TABLE TAB_USER ( ID VARCHAR2(3), NAME VARCHAR2(10) NOT NULL, SAL NUMBER(5, 3), AGE NUMBER(3), GENDER VARCHAR2(3) DEFAULT '男', CONSTRAINT TAB_USER_ID_PK PRIMARY KEY (ID), CONSTRAINT TAB_USER_SAL_UK UNIQUE (SAL), CONSTRAINT TAB_USER_AGE_CK CHECK (AGE BETWEEN 1 AND 150) );
|
3. 约束的删除
语法:
1
| ALTER TABLE 表名 DROP CONSTRAINT 约束名;
|
示例:
1 2
| ALTER TABLE TAB_USER DROP CONSTRAINT TAB_USER_SAL_UK;
|
4. 插入数据
示例:
1 2 3 4 5 6
| INSERT INTO TAB_USER (ID, NAME, SAL, AGE) VALUES (1, '张三', 100.50, 25); INSERT INTO TAB_USER (ID, NAME, SAL, AGE) VALUES (2, '李四', 200.75, 30);
SELECT * FROM TAB_USER;
|
5. 综合示例
(1)创建表并添加约束
1 2 3 4 5 6 7 8 9 10 11 12
| CREATE TABLE TAB_USER ( ID VARCHAR2(3) PRIMARY KEY, NAME VARCHAR2(10) NOT NULL, SAL NUMBER(5, 3) UNIQUE, AGE NUMBER(3) CHECK (AGE BETWEEN 1 AND 150), GENDER VARCHAR2(3) DEFAULT '男' );
|
(2)插入数据
1 2 3 4 5 6
| INSERT INTO TAB_USER (ID, NAME, SAL, AGE) VALUES (1, '张三', 100.50, 25); INSERT INTO TAB_USER (ID, NAME, SAL, AGE) VALUES (2, '李四', 200.75, 30);
SELECT * FROM TAB_USER;
|
(3)删除约束
1 2
| ALTER TABLE TAB_USER DROP CONSTRAINT TAB_USER_SAL_UK;
|
6. 总结
- 主键约束:用于唯一标识表中的每一行。
- 非空约束:用于确保列中的值不能为空。
- 唯一约束:用于确保列中的值不能重复。
- 检查约束:用于确保列中的值满足指定条件。