Mysql 視圖、索引

1、視圖:
一、視圖的定義:視圖是物理表的映射結果,物理表變化,視圖確定變化。sql

create view v_name as select 列名(也能夠是函數計算出來的結果如 avg()) from 表;

二、視圖的做用:
2.一、權限控制
好比某幾列,容許用戶查詢,其它列不容許。
能夠經過視圖開放其中一列或者幾列,起到權限控制的做用。
如商品表中的進貨價格、進貨商等重要信息,通常用戶是不能看到的。
2.二、簡化複雜的查詢語句。數據庫

三、視圖可否更新、刪除、添加?
若是view的每一行與物理表一一對應,則能夠,視圖變化物理表變化。
若是view的行是由物理表多行通過計算獲得的結果,view不能夠更新的。ide

2、delete與truncate的區別:函數

一、delete是DML的,只是刪除表中的數據。性能

二、truncate是DDL的,先刪除表,在建立表。code

舉例:建立一個列自增加的表,操做一下就一目瞭然啦....索引

3、索引:內存

對於提升數據庫性能,索引是個物美價廉的方式。不用加內存,不用改程序,不用調sql,只須要正確創建索引,就能夠把查詢速度提升百倍千倍。不過天下沒有免費的午飯,創建索引提升了查詢速度,但下降了增、刪、改的速度。權限控制

一、索引是數據的目錄,能快速定位行數據的位置。it

二、索引提升了查詢速度,可是下降了增、刪、改的速度(增刪改時 索引表也要變動),所以並不是索引越多越好。

三、索引通常創建在查詢頻率高的列上加,而且加在重複度低的列上效果更好。

四、索引分類:

(1)、index|key 普通索引:提升查詢速度。
A、建立表時指定:create table test(id int,key(id));
B、建立表後添加:alter table 表名 add index(id)或 create index index_name on tableName(列)

(2)、unique |unique key惟一索引:加快查詢速度,而且約束數據不能重複。
A、建立表時指定:create table test(id int primary key,name varchar(30),email varchar(30) unique);
或者create table test(id int primary key,name varchar(30),email varchar(30),unique (email));
B、建立表後添加: alter table 表名 add unique(列)

(3)、primary key主鍵索引:加快查詢速度,而且約束數據不能重複。

A、建立時指定:
create table test(id int primary key)

B、建立表後添加:
alter table 表名 add primary key(列)

(4)、fulltext全文索引:
主要是針對文字的檢索,只對MyISAM引擎有效,在InnoDB上無效。而且在中文環境下幾乎是無效的,要分詞加索引才能夠,通常用第三方解決方案,如compass。
(5)、主鍵索引和惟一索引的區別:
主鍵索引不能爲空,不能重複;惟一索引能夠爲空,不能重複。
4、經常使用的語句:

一、show databases :顯示全部數據庫;

二、show create database 數據庫名:顯示建立數據庫的語句。

三、show create table 表名:顯示建立表的語句。

四、show index from 表名:顯示錶的索引。

五、show table status :當前庫顯示全部表的status;

六、show table status like 表名:當前庫顯示某張表的status;

七、select database():顯示當前庫名。

八、select user():顯示當前用戶。

九、explain sql語句:顯示sql語句的執行情況。

十、添加/刪除索引:alter table 表名 add [index|unique] 索引名(列名)drop table index 索引名 on 表名十一、添加/刪除主鍵索引:alter table 表名 add primary key(列名)drop table primary key on 表名

相關文章
相關標籤/搜索