MySQL中創建視圖、索引
數據庫的三級模式兩級映射:
存儲文件------>基本表----->視圖
內模式 ------->模式 ------>外模式
一、視圖
1、什么是視圖:
視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。
視圖就像一個窗口,通過這個窗口可以看到系統專門提供的數據。
這樣,用戶可以不用看到整個數據庫中的數據,而之關心對自己有用的數據。
數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些數據存放在原來的表中。
使用視圖查詢數據時,數據庫系統會從原來的表中取出對應的數據。
視圖中的數據依賴于原來表中的數據,一旦表中數據發生改變,顯示在視圖中的數據也會發生改變。
2、視圖的作用:
(1)、使操作簡單化,可以對經常使用的查詢定義一個視圖,使用戶不必為同樣的查詢操作指定條件
(2)、增加數據的安全性,通過視圖,用戶只能查詢和修改指定的數據。
(3)、提高表的邏輯獨立性,視圖可以屏蔽原有表結構變化帶來的影響。
3、視圖操作sql:
創建視圖:
create view viewName(參數列表/可以不寫這樣就是默認和下面的select一樣)
as select * from 表名;
例1:
(1)、create table viewdemo(id int primary key , name char(10),score float);
(2)、create view view1
as select* from viewdemo;
(3)、create view view2(name,score)
as select name ,score from viewdemo;
修改視圖:
alter view viewname (columns) as select columns from tableName ;
例:
alter view view2 (id ,name) as select id,name from viewdemo ;
刪除視圖:
drop view if exists view name;
列:
drop view view2;
二、索引
1、什么是索引
索引是一個單獨的、存儲在磁盤上的數據庫結構,它們包含著對數據庫表里所有記錄的引用指針。
2、索引的好處
適當使用索引能提升數據庫查詢速度!
3、實例:
在創建表的時候創建索引
(1)、普通索引(index): 普通索引是MySQL的基本索引類型,允許在定義索引的列中插入重復值和空值
CREATE TABLE book
(2)、唯一索引(unique):唯一索引列的值必須唯一,但允許有空值。主鍵索引是一種特殊的唯一索引,不允許有空值。
例:
(3)、聯合索引:組合索引即是在多個列上創建索引。查詢時,只有在查詢條件中使用了這些字段(創建組合索引的時候指定的哪些列)的最左邊字段時,索引才會被使用。
CREATE TABLE student
(4)、全文索引:MySQL只有MyISAM存儲引擎支持FULLTEXT索引,并且類類型為CHAR、TEXT、VARCHAR。 并且需要指定表的存儲引擎為MyISAM。
例:
在已經存在的表上創建索引:
語法:
(1)、普通索引:ALTER TABLE book ADD INDEX indexName( bookname(30) );
(2)、唯一索引:ALTER TABLE book ADD UNIQUE INDEX UniqueIdx( bookid );
(3)、組合索引:ALTER TABLE book ADD INDEX BkAndInfoIdx( authors(20), info(50) );
使用 create index 創建索引:
語法:
4、刪除索引:
5、總結:
這樣我們的視圖和索引就建立了,是不是建立了視圖我們可以使用show table 來查看,是不是已經建立了索引以及是不是有效我們也可以使用explain select * from student where name='sss';來查看這樣就會出現一張表其中就有select_type 看這里的查詢類型我們就可以知道是不是建立的索引起效。
當我們建立了表、視圖、索引之后如果你想刪除表則要考略這樣一個問題,即和這個表有關的所有對象都刪除還是只
刪除這個表;
cascade(級聯) restrict(限制)以上的事由這兩個來完成。
delete table student cascade; 刪除所有和student表相關的對象(視圖、索引、觸發器、、、)。
delete table student restrict ; 只是刪除了student表。
解釋: 聚簇索引就是邏輯順序和物理順序保持一致,所以只能建立一個聚簇索引,但可以建立多個唯一索引等。
索引: rdbms 中索引一般采用b+樹、hash索引來實現,b+樹索引具有動態平和的有點,而hash索引具有快讀查找的特點。索引是關系數據庫的內部實現技術,屬于內模式的范疇。