python18、MYSQL(三)

表结构修改:
字段名的修改:
修改字段名:alter table 表名 change 原字段名 + 新字段名 + 字段值的类型;
添加字段:ALTER TABLE tb_name ADD 字段名 + 类型;
(后面可以加frist表示把添加的字段放到第一位
加after+已有的字段名表示放在字段名后面)
drop能删除表,库
delete能删除字段内容

约束条件(创建表时定义的后面在修改时都要遵循):
在没有设置默认值的情况下,默认值为NULL

查询结果时:= =是空字符,但= null =不是

创建表格时给字段加上非空约束条件后,后面用到insert插入时必须给加了非空的字段赋值,不能只插入其他不插入非空字段的

唯一约束,unique key,key的键值显示uni,不重复

主键约束:
主键 = 非空 + 唯一(有两者的效果)
key显示pri

自增长约束(使非空约束的字段自动获取数据,不用在插入时特意赋值):
auto_increment放在主键后
自动编号,和主键组合使用,为了避免某些字段数据本身定义特别所以一般和主键字段使用不影响别的字段,
一个表里面只能有一个自增长
默认是从1开始,并以1递增,如果要改变需要在输完values值的括号后加上auto_increment=多少就是从什么数字开始,并以1递增

外键:

  1. B表中的id_b字段,只能添加 id_a中已有的数据。
  2. A表中id_a 被参照的数据, 不能被修改和删除。
    一对一:
    用主键对主键的方式来实现这种关系
    用外键的方式,
    把两个表的主键关联
    foreign key (id_b) references(参考的意思) a(id_a)这个是被参考对象

一对多:
用主键对外键的方式来实现这种关系
用外键的方式,
把两个表的主键和非主键关联
dept_id int not null, # 所属学院 id
foreign key(dept_id) references department这里要写表格名在前(d_id) #外键
创建新的和被参考id同性质的id

多对多:
对于多对多关系,需要创建中间表实现。
直接联合两个主键,外键提取两个主键而不止一个
primary key(s_id,cours_id), # 联合主键
foreign key(s_id) references student(s_id), # 关联学生id
foreign key(cours_id) references cours(cours_id) # 关联 课程id

删除这种一对一以上的表要把子表删了才能删主表

navicat:清理外键,一般会从外键最后被清理的位置重新生成一个旧的数据,为了彻底删除。

可以先用查询编辑器:SET FOREIGN_KEY_CHECKS=0 来关闭所有外键,

然后TRUNCATE TABLE 表名 ,进行清理

最后不要忘记让外键恢复:SET FOREIGN_KEY_CHECKS=1 来开启所有的外键

引入日志来做标记:

import logging

logger=logging.getLogger(____name)来引出该模块

然后就可以用logger了,logger.warning(随便写标记内容)

录入数据容易出错的地方可以用try和except

try:

​ ··············

except Exception(所有错误的类型模块) as e:

​ self.conn.rollback()(这里作回滚操作,避免有误差就直接停止进程了)

​ logger.warning(“内容”,e)(报告错误)

e:是异常的实例化,用了instance的表示方式来表示异常。

rollback : 数据回滚,将事务中已经执行成功的部分回到最初的状态。

猜你喜欢

转载自blog.csdn.net/qwe863226687/article/details/113969350