Mysql Advanced 4

cascading 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, operate under Linux terminal)

1、命令格式
    mysqldump -u用户名 -p 源库名 > 路径/XXX.sql
2、示例
    1、备份day03库,放到用户主目录下mydata/day03.sql
3、源库名的表示方式
    --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.sql
2、从所有库的备份文件中恢复某一个库
    mysql -u用户名 -p --one-database 库名 < all_mysql.sql
3、注意
    1、恢复库时如果恢复到原库会将表中数据覆盖,新增的表不会删除
    2、在数据恢复时如果要恢复的库不存在,则先要创建空库

Transactions and transaction rollbacks

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 返回数据条数或影响行数

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324629286&siteId=291194637