1).創建表的時候創建索引 CREATE TABLE table_name(PRoperty_name1 data_type1 [limit],property_name2 date_type2 [limit],…,property_namen data_typen,[UNIQUE | FULL TEXT | SPATIAL] INDEX | KEY [name] (PROPERTYNAME [(length)] [ASC | DESC])); 其中的INDEX 和 KEY 是指定字段,二選一即可,[name]是為這個索引取名,PROPERTYNAME是索引對應的字段,ASC照例是升序排序,DESC是降序排序 ①.創建普通索引 ②.創建唯一性索引 使用UNIQUE約束 ③.創建全文索引 使用FULLTEXT約束 只能創建在CHAR、VARCHAR或TEXT類型上且只有MyISAM引擎支持全文索引 ④.創建單列索引 保證只對應一個字段 ⑤.創建多列索引 在多個字段上創建一個索引,只有使用了第一個字段的索引才會被使用 ⑥.創建空間索引 SPATIAL 存儲引擎是MyISAM 索引字段必須有非空約束NOT NULL,數據類型是空間數據類型 GEOMETRY、POINT、LINESTRING、POLYGON等 2).在已存在的表上創建索引 CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名 ON 表名 (屬性名 [(長度)] [ASC|DESC]); 3).用ALTER TABLE語句來創建索引 ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名 (屬性名 [(長度)] [ASC | DESC]);
DROP INDEX 索引名 ON 表名
1).創建視圖 CREATE [ALGORITHM={UNDEFINED | MERGE | TEMPTABLE}] VIEW 視圖名 [(屬性清單)] AS SELECT 語句 [WITH [CASCADED | LOCAL] CHECK OPTION]; 創建視圖需要CREATE VIEW 權限,同時也應該具有SELECT權限 查詢權限使用SELECT: SELECT Select_priv , Create_view_priv FROM MySQL.user WHERE user = ‘用戶名’; 2).查看視圖 必須有SHOW VIEW 的權限 ①.DESCRIBE 基本信息 語法:DESCRIBE 視圖名; ②.SHOW TABLE STATUS 查看基本信息 語法:SHOW TABLE STATUS LIKE 視圖名; ③.SHOW CREATE VIEW 查看詳細信息 語法:SHOW CREATE VIEW 視圖名; 例子:在views表中查看視圖詳細信息: SELECT * FROM information_schema.views;
3).修改視圖 ①.CREATE OR REPLACE VIEW 語句 語法:CREATE OR REPLACE [ALGORITHM={UNDIFINED|MERGE|TEMPTABLE}] VIEW 視圖名 [(屬性清單)] AS SELECT 語句 [WITH [CASCADED|LOCAL] CHECK OPTION]; ②.ALTER 語句 只能修改已存在的視圖 ALTER [ALGORITHM={UNDIFINED|MERGE|TEMPTABLE}] VIEW 視圖名 [(屬性清單)] AS SELECT 語句 [WITH [CASCADED|LOCAL] CHECK OPTION]; 4).更新視圖 指通過視圖來插入、更新和刪除表中的數據 有些視圖是不可更新的,如: 1.視圖中包含SUN(),COUNT(),MAX(),MIN()… 2.包含UNION,UNION ALL,DISTINCT,GROUP BY,HAVING等關鍵字 3.常量視圖 4.視圖中的SELECT中包含子查詢 5.由不可更新的視圖導出的視圖 6.創建視圖是,ALGORITHM為TEMPTABLE類型 7.視圖對應的表上存在沒有默認值的列,而且該列沒有包含在視圖里 WITH[CASCADED|LOCAL] CHECK OPTION 也能決定視圖能否更新 5).刪除視圖 用戶必須擁有DROP權限 DROP VIEW [IF EXISTS] 視圖名列表 [RESTRICT | CASCADED] 其中的IF EXISTS 判斷視圖是否存在,存在則刪除,否則則不需要刪除 查看DROP權限 SELECT Drop_priv FROM mysql.user WHERE user=‘用戶名’;
以上部分就MySQL的索引和視圖的內容
|
新聞熱點
疑難解答