標籤:mysql 索引 視圖 約束
索引
索引是一種特殊的檔案(InnoDB資料表上的索引是資料表空間的一個組成部分),它們包含著對資料表裡所有記錄的引用指標。
索引存在的目的是為提高查詢執行的速度。
建立索引:
CREATE INDEX [UNIQUE|FULLTEXT|SPATIAL] INDEX_NAME [INDEX_TYPE] ON TBNAME (INDEX_COL_NAME,...)
INDEX_NAME 索引的名稱,自訂。
INDEX_COL_NAME
COLNAME [(LENGTH)] [ASC|DESC]
LENGTH 建立索引的時候,從左向右比較的字元個數。若建立在TEXT或CHAR類型上,必須定義長度。預設不指定表示全部長度。
ASC 升序排序
DESC 降序排序
INDEX_TYPE
USING {BTERR|HASH}
一般都是用BTREE,不用HASH
INDEX_OPTION
刪除索引:
DROP INDEX INDEX_NAME ON TBNAME
顯示某個表的索引:
SHOW INDEXES FROM TBNAME
視圖(view)
儲存的SELECT語句,基於基表的查詢結果。視圖也叫虛表。一般不建議將內容插入或更新視圖,因為視圖是受到基表的欄位限制。在mysql中用處不是很大。
物化視圖(mysql不支援):
將產生的視圖的結果儲存下來。優點是不用每次都進行查詢,缺點是一但基表更新則必須從新物化。
建立視圖
CREATE VIEW VIEWNAME [COLUMN_LIST] AS SELECT_STATMENT
刪除視圖:
DROP VIEWNAME
修改視圖:
先DROP後CREATE即可。
顯示建立對象的具體語句:
SHOW CREATE TBNAME|VIEW,,,
約束
域約束:資料類型約束
外鍵約束:參考完整性約束
主鍵約束:主鍵是某欄位能唯一標識此欄位所屬的實體,並且不允許為空白。符合這個條件的被稱為候選主鍵。一個表只能有一個主鍵。不允許2個實體在主鍵上出現相同值。
唯一性限制式:每一行的某欄位都不允許出現相同值。但是可以為空白。表中可出現多個。
檢查性約束: 自訂約束條件。mysql上功能比較薄弱。
執行個體:
1.給表添加唯一鍵
mysql>DESC testcourses2;
mysql>SHOW INDEXES FROM testcourses2;
mysql>ALTER TABLE testcourses2 ADD UNIQUE KEY (CourName);
mysql>SHOW INDEXES FROM testcourses2;
2.建立外鍵:
mysql>ALTER TABLE stud ADD FROEIGN KEY (CID) REFENCTS courses(CID);
mysql>INSERT INTO stud (Name,CourName) VALUES (‘zhaoliu‘,4);
3.建立索引:
mysql>SHOW INDEXES FROM stud;
mysql>CREATE INDEX name_on_stud ON stud (Name) USING BTREE;
mysql>SHOW INDEXES FROM stud;
4.刪除索引後重建索引,限定長度為前5個字元,升序排列:
mysql>DROP INDEX name_on_stdu ON stud;
mysql>CREATE INDEX name_on_stud ON stud(Name(5) ASC);
5.建立一個視圖:
mysql> CREATE VIEW sct SELECT * FROM sutdents;
mysql> SHOW TABLES;
mysql> SHOW TABLES STATUS;
6.顯示建立視圖的命令:
mysql>SHOW CREATE sct\G;
本文出自 “小私的blog” 部落格,請務必保留此出處http://ggvylf.blog.51cto.com/784661/1679325
mysql之索引、視圖、約束簡單概念