sqlite|python中用SQLite3添加 主键约束 唯一约束 非空约束 外键约束(约束的介绍以及设置)

约束,顾名思义为数据表在加上约束后会有一定的限制。
一:四种约束的介绍: (1)主键约束:
主键约束总共有两大特点:
1:不能重复
2:不能为空
我们要如何理解这两个特点呢?如下图:

id name age
1001 linweiqi 19
1001 linweiqi1 20
如果说 设id这个列名为主键,则如图所示的就不被允许,因为’id‘列中出现了重复的1001
违背了不能重复的原则。
id name age
1001 linweiqi 19
linweiqi2 20
如果说设id这个列名为主键,则如图的数据中不被允许,因为在插入数据时没有添加’id‘列的数据,违背了不能为空的原则。
违背以上两种特点的数据插入都会报错,导致无法插入!!
(2):唯一约束:
唯一约束有一个特点:
不能重复(该特点与主键约束中的不能重复相同)
(3):非空约束:
非空约束有一个特点:
不能为空(该特点与主键约束中的不能为空相同)

ps:唯一约束和非空约束各自‘‘继承了’’主键约束的一个特点,可以看做是主键约束的弱化条件
(4):外键约束:
外键约束的特点:
主要是数据表中的数据会被其他表中有相同类型的数据所约束。
这怎么理解呢?
假设有AB两个数据表

A
id name age
B
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表的外键约束啦!!!

    推荐阅读