Mysql進階4
阿新 • • 發佈:2018-04-17
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