試圖算法、儲存引擎、備份還原

試圖算法

視圖算法:系統對視圖以及外部查詢視圖的select語句的一種解析方式

一、視圖算法分三種

1)undefined:未定義(默認的)

2)temptable:臨時表算法

3)merge:合并算法

-- 獲取所有班級中最高的一個學生?

create view my_v5 as?

?-- temptable:臨時表算法?

select * from my_student order by height desc;?

select * from my_v5 group by c_id;?

-- merge:合并算法

select * from my_student group by c_id order by height desc;

二、算法指定:在創建視圖的時候create algorithm=指定算法 view 視圖名字 as select語句;

算法指定:

-- 在創建視圖的時候create algorithm=指定算法 view 視圖名字 as select語句;?

-- 指定算法為臨時表算法?

create algorithm=temptable view my_v6 as

select * from my_student order by height desc;?

select * from my_v6 group by c_id;


備份還原

1、方式:

1)數據表備份(不推薦、有限制)-存儲引擎對比

2)單表數據備份

3)SQL備份

4)增量備份

-- 查看當前MySQL版本

select @@version;

1)數據表備份-存儲引擎對比

存儲引擎:innodb、myisam

innodb:只有表結構,數據全部存儲到 ibdata1 文件中(InnoDB:免費)

myisam:表、數據和索引全部單獨分開存儲

-- 創建myisam表

create table my_myisam(

id int

)charset utf8 engine=myisam;

-- 向my_myisam表插入幾條記錄

insert into my_myisam values(1),(2),(3);

create database test charset utf8;

2)單表數據備份-刪除-還原

1.備份:select */字段列表 into outfile 文件所在路徑 from 數據源;

-- 單表數據備份(路徑必須存在但文件名不能存在,路徑復制過來換成"/")

select * into outfile 'D:/1908/Q2/web/student.txt' from my_student;

select * into outfile 'D:/1908/Q2/web/class.txt' from my_class;

2.高級備份:select */字段列表 into outfile 文件所在路徑 fields 字段處理 lines 行處理 from 數據源;

1>fields:字段處理,enclosed by? —??字段使用什么內容包裹(默認'')、terminated by? —?字段以什么結束(默認'\t')、escaped by? —?特殊符號用什么處理(默認'\\')

? ? ? ? ? ? 2>lines:行處理,starting by(默認'')、terminated by(默認'\r\n')

-- 指定備份處理方式

select * into outfile 'D:/1908/Q2/web/class1.txt'

-- 字段處理

fields

enclosed by '"' -- 數據使用雙引號包裹

terminated by '|'-- 使用豎線分隔字段數據

-- 行處理

lines

starting by 'START:'

from my_class;

3.單表刪除

-- 不小心刪除班級表的數據

delete from my_class;

select * from my_class;

4.單表還原?

數據還原:

load data infile 文件所在路徑

into table 表名[(字段列表)]

fields 字段處理

lines 行處理;

-- 還原數據

load data infile 'D:/1908/Q2/web/class1.txt'

into table my_class

-- 字段處理

fields

enclosed by '"' -- 數據使用雙引號包裹

terminated by '|'-- 使用豎線分隔字段數據

-- 行處理

lines

starting by 'START:';

select * from my_class;

3)SQL備份(備份>,還原<,會先把原來的"干掉")

備份:mysqldump.exe

mysqldump/mysqldump.exe -hPup 數據庫名字 [數據表名字1 [數據表名字2...]] > 外部文件路徑

整庫備份:

mysqldump/mysqldump.exe -hPup 數據庫名字 > 外部文件路徑

--必須先退出才能執行

\q -- 退出

-- SQL備份(不能換行,必須一行寫完,運行的時候不能復制注釋行)

mysqldump -uroot -p2361559775 mydb my_student > D:/1908/Q2/web/student.sql

-- 整庫備份

mysqldump -uroot -p2361559775 mydb > D:/1908/Q2/web/mydb.sql

-- 再刪除

drop table my_student;

show tables;-- 查詢所有的表

--再次退出執行

\q -- 退出

SQL還原數據

方案一:使用mysql.exe客戶端還原

mysql.exe/mysql -hPup 數據庫名字 < 備份文件目錄

-- 方法一:還原數據:mysql客戶端還原

mysql -uroot -p2361559775 mydb my_student < D:/1908/Q2/web/student.sql

select * from my_student;

-- 查看

-- 再刪除刪除

drop table my_student;

方案二:使用SQL指令還原

source 備份文件所在路徑

-- 方法二:SQL指令還原SQL備份(可以備份結構)

source D:/1908/Q2/web/student.sql;

select * from my_student;-- 查看

4)增量備份

備份的是系統日志文件(刪除或修改都可以還原)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容