試圖算法
視圖算法:系統對視圖以及外部查詢視圖的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)增量備份
備份的是系統日志文件(刪除或修改都可以還原)