Cascade Action
1、cascade :数据级联更新 当主表删除记录或者更改被参考字段的值时,从表会级联更新 2、restrict(默认) 当主表删除或者更新被参考字段的值时,如果从表中有相关联记录则不允许主表删除或更新,必须先删除从表中相关联记录 3、set null 当主表删除或者更新被参考字段值时,从表中相关联记录的外键字段值自动设置为NULL 4、no action(同restrict) on delete no action on update no action 同restrict,都是立即检查外键限制 6、删除外键 alter table 表名 drop foreign key 外键名; 注意: 1、外键名的查看方式 show create table 表名; 7、在已有表中添加外键 alter table 表名 add foreign key(参考字段名) references 被参考表名(被参考字段名) on delete 级联动作 on update 级联动作 注意: 在已有表中添加外键时,会收到表中原有数据的限制
Data Backup (mysqldump, operating under Linux terminal)
1、命令格式 mysqldump -u用户名 -p 源库名 > 路径/XXX.sql2、示例 1、备份day03库,放到用户主目录下mydata/day03.sql3、源库名的表示方式 --all-databases 备份所有库 库名 备份单个库 -B 库1 库2 库3 备份多个库 库名 表1 表2 备份指定库的指定表4、练习 1、备份所有库all_mysql.sql 2、备份MOSHOU和day02库为md2.sql 3、备份MOSHOU库下的sanguo、hero两张表sh.sql
Data recovery
1、命令格式 mysql -u用户名 -p 目标库名 < 路径/XXX.sql2、从所有库的备份文件中恢复某一个库 mysql -u用户名 -p --one-database 库名 < all_mysql.sql3、注意 1、恢复库时如果恢复到原库会将表中数据覆盖,新增的表不会删除 2、在数据恢复时如果要恢复的库不存在,则先要创建空库
Transaction and transaction rollback
1、定义 一件事从开始发生到结束的整个过程2、作用 确保数据的一致性3、属性 1、原子性:一个事务是不可分割的工作单位,事务中的各个操作要么都做,要么都不做 2、一致性:事务必须从一个一致性状态到另一个一致性状态 3、隔离性:一个事务的执行不能被其他并发的事务干扰 4、持久性:一个事务一旦提交,它对数据库中数据的改变是持久性的4、事务及事务回滚的应用 1、MySQL中默认的SQL语句结果会自动commit到数据库 show variables like "autocommit"; 2、事务应用 1、开启事务 mysql> start transaction; mysql> ... 一句或多句SQL命令 ##此时autocommit被禁用,SQL命令不会对数据库中数据做修改 2、终止事务 mysql> commit; | rollback; 3、注意 事务和事务回滚只针对于对表记录的操作:增删改有效,对库和表的操作无效5、案例 1、背景 你:建行卡 你朋友:工行卡 你在建行的自动提款机上给你朋友转账5000元 2、过程 表1:CCB create table CCB( name char(20), money int ); insert into CCB values("转钱",100000); 表2:ICBC create table ICBC( name char(20), money int ); insert into ICBC values("借钱",0);
Python database programming
1、python数据库接口(Python DB-API) 1、定义 为开发人员提供的数据库应用编程接口 2、支持的数据库服务软件 MySQL、Oracle、SQL_Server、Sybase、MongoDB ... 3、Python提供的操作MySQL的模块 pymysql 4、pymysql的使用流程 1、建立数据库连接 2、创建游标对象 3、使用游标对象的方法和SQL语句操作数据库 4、提交commit 5、关闭游标对象 6、关闭数据库连接 5、建立数据库连接 1、语法 对象名=pymysql.connect ("主机地址","用户名","密码","库名",charset="utf8",port=3306) 2、connect对象(db)支持的方法 1、cursor() 创建一个游标对象 2、commit() 提交到数据库(增删改) 3、rollback() 回滚 4、close() 关闭数据库连接 3、关于cursor对象支持的方法 1、execute(op) 执行基本SQL命令 2、fetchone() 取得结果集的第一行记录 3、fetchmany(size)取得结果集的size行记录 4、fetchall() 取得结果集的所有行 5、close() 关闭游标对象 属性: rowcount 返回数据条数或影响行数
MySQL Advanced 4