Python基础之MySQL数据库
作者:互联网
一、约束概述
1、为什么要约束
为了防止数据库中存在不符合语义规定的数据和防止错误信息的输入、输出造成无效的操作而提出的
为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制,从以下四个方面考虑
- 实体完整性:例如一个表中不能存在两条相同的,无法区分的记录
- 域完整性:例如年龄范围,性别范围
- 引用完整性:例如学生所在的班级、学校,在学校中要能找到班级、在班级能找到学生
- 用户自定义完整性:例如用户名唯一,密码不能不空
2、什么是约束
约束是指,对字段名下数据的强制约束
约束的方式:
- 创建表时约束:create table
create table 表名(字段名 类型(数字) 约束条件);
3、约束的分类
- 根据约束数据列的限制,约束可分为
- 单列约束:每个约束只能约束一列
- 多列约束:每个约束可约束多列数据
- 根据约束的作用范围,约束可分为
- 列级约束:只能作用在一个列上,跟在列的定义后面
- 表级约束:可以作用在多个列上,单独定义
- 根据约束的作用,约束可分为
- 非空约束:规定某个字段不能为空
- 唯一约束:规定某个字段的数据不能重复
- 主键约束:非空且唯一,一个表只能拥有一个主键字段
- 外键约束:主要体现在父子表中关系数据的约束操作
- 检查约束:控制特定列中的值的完整性约束
- 默认值约束:在不特别添加数据的情况下,该字段名下数据使用默认数据
4、查看当前表已有的约束
方式一:
show create table 表名;
方式二:
describe 表名;/desc 表名;
二、约束语法及用法
1、无符号
-
关键词:unsigned
-
作用:在SQL中,整型和浮点类型都自带正负号,而很多数据并用不到负数,例如人的年龄,手机号码,这时就可以通过约束条件解除正负号
mysql> create table t2(id tinyint unsigned);
Query OK, 0 rows affected (0.01 sec)
2、零填充
-
关键词:zerofill
-
作用:在创建表时,整型和浮点型后一般不用输入数字,系统会默认生成,在添加数据后,系统指挥默认显示该数值的大小及位数,通过零填充加数值,可固定数据值现实位数,不足部分用零填充
mysql> create table t4(id tinyint(2) zerofill);
Query OK, 0 rows affected (0.01 sec)
3、非空
-
关键词:not null
-
作用:所有字段类型,在不做非空约束的情况下,插入的数据值都可以为空(null),在创建表阶段可以约束该字段下数据为非空,约束后在往表内添加数据时,该字段下不能为空,空字符除外
mysql> create table t5(id int(3) zerofill, name varchar(16) not null);
Query OK, 0 rows affected (0.02 sec)
4、默认值
-
关键词:default
-
作用:在创建表阶段,在类型后约束默认值,可在默认值后方填入默认值,添加该字段下的数据时