1. 程式人生 > >Mysql進階4

Mysql進階4

3265164 Mysql 進階

級聯動作
     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 級聯動作
     註意:
        在已有表中添加外鍵時,會收到表中原有數據的限制

數據備份(mysqldump,在Linux終端下操作)

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

數據恢復

1、命令格式
    mysql -u用戶名 -p 目標庫名 < 路徑/XXX.sql
2、從所有庫的備份文件中恢復某一個庫
    mysql -u用戶名 -p --one-database 庫名 < all_mysql.sql
3、註意
    1、恢復庫時如果恢復到原庫會將表中數據覆蓋,新增的表不會刪除
    2、在數據恢復時如果要恢復的庫不存在,則先要創建空庫

事務和事務回滾

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數據庫編程

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進階4