约束,顾名思义为数据表在加上约束后会有一定的限制。
一:四种约束的介绍:
(1)主键约束:
主键约束总共有两大特点:
1:不能重复
2:不能为空
我们要如何理解这两个特点呢?如下图:
id | name | age |
1001 | linweiqi | 19 |
1001 | linweiqi1 | 20 |
违背了不能重复的原则。
id | name | age |
1001 | linweiqi | 19 |
linweiqi2 | 20 |
违背以上两种特点的数据插入都会报错,导致无法插入!!
(2):唯一约束:
唯一约束有一个特点:
不能重复(该特点与主键约束中的不能重复相同)
(3):非空约束:
非空约束有一个特点:
不能为空(该特点与主键约束中的不能为空相同)
ps:唯一约束和非空约束各自‘‘继承了’’主键约束的一个特点,可以看做是主键约束的弱化条件
(4):外键约束:
外键约束的特点:
主要是数据表中的数据会被其他表中有相同类型的数据所约束。
这怎么理解呢?
假设有AB两个数据表
id | name | age |
id | name | address |
假如设A表中的id列为主键,然而B表中的id列是与A表中的id列所表示的内容相同,此时就可以说B表被其他数据表(A表)中相同类型数据(id)所约束,形成外键,对B表来说就有了外键约束。
ps:如上一段话表明了外键约束有一个显著的特征就是有两张表有相同列名(id),且一张表(A表)中的id列被设为主键。
二:怎么添加约束 (1)添加主键,非空,唯一约束
因为这三种约束都加上方式相同,所以统一进行讲解(如果想了解怎么用python中用SQLite3执行sql基本语句,可以查看作者的python中使用SQLite3对数据库的基本操作(基于ubuntu操作系统)一文!!!):
import sqlite3
conn=sqlite3.connect('ff.db')
cur=conn.cursor()
sql='''
create table ff3(
id integer primary key,
age integer)'''
cur.execute(sql)
conn.commit()
我们在id列的数据类型之后添加了‘primary key’这样就算给id列添加了主键约束,非空约束则是把‘primary key’替换成‘not null’;而唯一约束则是替换成‘unique’!!
(2)添加外键约束:
conn=sqlite3.connect('ff.db')
cur=conn.cursor()
sql='''
create table ff4(
id integer primary key,
age integer)'''
cur.execute(sql)
conn.commit()
sql='''
create table ff5(
id integer foreign key ,
age integer)'''
cur.execute(sql)
conn.commit()
conn.close()
【sqlite|python中用SQLite3添加 主键约束 唯一约束 非空约束 外键约束(约束的介绍以及设置)】ps:一张表中id列设为主键,一张表中id列设为外键,这样 ff4这个表格就是ff5表的外键约束啦!!!
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- 数据库|SQL行转列方式优化查询性能实践
- Python专栏|数据分析的常规流程
- mysql|一文深入理解mysql
- 达梦数据库|DM8表空间备份恢复
- 数据技术|一文了解Gauss数据库(开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比)
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索