Mysql视图与数据备份
一.視圖view,是一種結構(有行有列)但沒結果(結構中不存放真實數據)的虛擬表,虛擬表中的結構不是自己定
???? 義而是由基表產生(視圖的的數據來源)
??????????? 1.創建視圖:create view 視圖名字 select 語句(可以是普通select語句、連接查詢、聯合查詢、子查詢);
??????????????????? 1):創建單表視圖:create view stu as select * from student;
??????????????????? 2):創建多表視圖(視圖基表多張的情況下:字段名不能重復):?create view class as select s.*,
????????????????????????????c.teacher,c.room from student as s left join my_class as c?on s.id=c.id;
???????????? 2.查看視圖結構:desc 視圖名稱/show tables/show create view class;
???????????? 3.使用視圖:select * from 視圖名稱;
???????????? 4.修改視圖:alter view? as 新視圖名 select 語句;
???????????? 5.刪除視圖:drop view 視圖名稱;
???????????? 6.視圖的意義:
???????????????????? 1):節省sql語句:可以用視圖保存復雜的sql語句
???????????????????? 2):視圖安全,視圖主要針對數據查詢,如果視圖結構進行處理(刪除),不會影響基表數據(相對安全)。
???????????????????? 3):視圖往往在大型項目、多系統中使用,可以對外提供必要的數據
???????????????????? 4):視圖可以提供友好型,可以專門設計針對不同的需求。
???????????????????? 5):視圖可以更好的進行權限控制
???????????? 7.視圖數據操作
???????????????????? 1):新增數據(針對視圖):不能向多表視圖插數據,視圖如果沒有包含基表中的非空字段則不能插入成功。
?????????????????????????? insert into stu values(6,'leetcode','male',24);
???????????????????? 2):刪除數據:多表試圖不能刪除數據
????????????????????????????
????????????????????????? delete from stu1 where id=1;
??????????????????? 3):更新數據:無論單表還是多表都可以更新視圖
?????????????????????????? update stu_class set sex='male' where id=5;
?????????????????????????? 限制更新
?????????????????????????????create view stu2 as select * from student where age>30 with check option;
??????????????????????????????
??????????????????????? 4)視圖算法:系統對視圖及外部查詢select的一種解析方式
??????????????????????????????????? 1.undefined:未定義(系統默認),這不是一種實際的算法,告訴系統沒有定義算法,系統隨機選擇
??????????????????????????????????? 2.temptable:臨時算法,系統先執行視圖的select語句,后執行外部的查詢語句。
????????????????????????????????????????create algorithm=temptable view stu4 as? select * from student order by height desc;
??????????????????????????????????? 3.merge(效率高,常態):合并算法,系統應先將視圖select語句和外部查詢語句合并后執行查詢。
??????????????????????????????????? 總結:如果視圖select語句中包含(where、group by、having、order by、limit)建議使用temptable
二.數據備份與還原
????????????? 1.概念:備份將當前數據或記錄保留,還原將以保留的數據恢復到對應的表中。
????????????? 2.myisam和innodb:數據存儲對比
?????????????????? ?? 1):innodb只有表結構數據全部存儲在ibadata1文件中
??????????????????? ? 2):myisam將表、數據、索引分別單獨存儲。直接將三個文件放在對應的數據庫下即可使用
??????????????????????
??????????? 3.數據庫高級備份:自己定義字段和行的處理方式
??????????????????? 1.語法:select ? */字段列表?? into outfile 文件路徑?? files 字段處理 lines 行處理??? from 數據源;
??????????? 4.Sql備份及還原
???????????????????? 1) 備份:mysqldump -u root -p 數據庫 表 > E:\sql\student.sql;
???????????????????? 2) 還原:mysql -u root -p 數據庫 <E:\sql\student.sql; 或 source E:\sql\student.sql ???????????????
總結
以上是生活随笔為你收集整理的Mysql视图与数据备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sql高级查询(三)
- 下一篇: linux cmake编译源码,linu