標籤: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.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
資料恢複
1、命令格式 mysql -u使用者名稱 -p 目標庫名 < 路徑/XXX.sql2、從所有庫的備份檔案中恢複某一個庫 mysql -u使用者名稱 -p --one-database 庫名 < all_mysql.sql3、注意 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