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

约束,顾名思义为数据表在加上约束后会有一定的限制。

:四种约束的介绍:

(1)主键约束:

主键约束总共有两大特点:

1:不能重复

2:不能为空

我们要如何理解这两个特点呢?如下图:

idnameage
1001linweiqi19
1001linweiqi120

如果说 设id这个列名为主键,则如图所示的就不被允许,因为’id‘列中出现了重复的1001

违背了不能重复的原则。

idnameage
1001linweiqi19
linweiqi220

如果说设id这个列名为主键,则如图的数据中不被允许,因为在插入数据时没有添加’id‘列的数据,违背了不能为空的原则。

违背以上两种特点的数据插入都会报错,导致无法插入!!

   (2):唯一约束:

唯一约束有一个特点:

不能重复(该特点与主键约束中的不能重复相同)

   (3):非空约束:

非空约束有一个特点:

不能为空(该特点与主键约束中的不能为空相同

ps:唯一约束和非空约束各自‘‘继承了’’主键约束的一个特点,可以看做是主键约束的弱化条件

 (4):外键约束:

外键约束的特点:

主要是数据表中的数据会被其他表中有相同类型的数据所约束。

这怎么理解呢?

假设有A   B   两个数据表

 

A
idnameage
B
idnameaddress

假如设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()

ps:一张表中id列设为主键,一张表中id列设为外键,这样 ff4这个表格就是ff5表的外键约束啦!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值