MySQL數據庫筆記10——視圖、DBA命令、數據庫設計三範式

1.視圖
1.1 什麼是視圖?
      站在不同的角度去看待數據,即同一張表的數據,通過不同的角度去看待。

1.2 怎麼創建視圖?怎麼刪除視圖?
create view myview as select empno,ename from emp;
drop view myview;
注意:只有DQL語句才能以視圖對象的方式創建出來。

1.3 對視圖進行增刪改查,會影響原表數據(通過視圖影響原表數據的,不是直接操作的原表)。可以對視圖進行CRUD操作。

1.4 面向視圖操作
create table emp_bak as select * from emp;
create view myview as select empno,ename,sal from emp_bak;

查詢:select * from myview;
修改:update myview set ename=‘hehe’,sal=1 where empno=7369; //通過視圖修改原表數據
刪除:delete from myview where empno=7369; //通過視圖刪除原表數據

1.5 視圖的作用
      視圖可以隱藏表的實現細節。保密級別較高的系統,數據庫只對外提供相關的視圖,java程序員只對視圖對象進行CRUD操作。

2.DBA命令
2.1 新建用戶
create user username identified by ‘password’;

2.2 將數據庫中的數據導出
在windows的dos命令窗口中執行:(導出整個庫)
mysqldump dbname>D:\dbname.sql -uroot -proot

在windows的dos命令窗口中執行:(導出指定數據庫中的指定表)
mysqldump dbname emp>D:\dbname.sql -uroot -proot

2.3 導入數據
create database dbname;
use dbname;
source D:\dbname.sql

3.數據庫設計三範式
3.1 什麼是設計範式?
設計表的依據,按照這個三範式設計的表不會出現數據冗餘。

3.2三範式有哪些?
第一範式:任何一張表都應該有主鍵,並且每一個字段原子性不可再分。

第二範式:建立在第一範式的基礎之上,所有非主鍵字段完全依賴於主鍵,不能產生部分依賴。
例如:在這裏插入圖片描述
      這張表就存在部分依賴,學生姓名部分依賴了主鍵的一個字段學生編號,而沒有依賴教師編號;同樣,教師姓名也部分依賴於主鍵的一個字段教師編號。此表出現大量冗餘,主要涉及到的冗餘字段爲學生姓名和教師姓名。
      解決方法:多對多,三張表,關係表有兩外鍵。

第三範式:建立在第二範式的基礎之上,所有非主鍵字段直接依賴主鍵,不能產生傳遞依賴。
例如:
在這裏插入圖片描述
      這張表存在傳遞依賴,班級名稱字段存在冗餘,因爲班級名稱字段沒有直接依賴於主鍵,班級名稱字段依賴於班級編號,班級編號依賴於學生編號,這就是傳遞依賴。
      解決辦法:將冗餘的字段單獨拿出來建表。一對多,兩張表,多的表加外鍵。

提醒:在實際開發中,以滿足客戶的需求爲主,有的時候會拿冗餘換執行速度。

3.3一對一怎麼設計?兩種方案。
      有時在實際設計中,會將一張表拆成兩張表,如下例用戶表。
(1)主鍵共享
在這裏插入圖片描述
(2)外鍵唯一
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章