mysql 索引和事務、視圖
阿新 • • 發佈:2018-08-28
多列 命令控制 操作 普通 mysql索引 事務 查看 錯誤 速度 MySQL索引的建立對於MySQL的高效運行是很重要的,索引可以大大提高MySQL的檢索速度,數據庫索引就好比好比是一本書全面的目錄。
索引分5類
- 普通索引,這是最基本的索引類型,而且他沒有唯一性之類的限制。
- 唯一性索引,這種索引和前面的“普通索引”基本相同,但有一個區別:索引列的所有值只能出現一次,即必須唯一。
- 主鍵索引,主鍵是一種唯一性索引,該索引要求主鍵中的每個值都唯一,不允許為空。
- 全文索引,索引類型為FULLTEXT,全文索引可以在CHAR、VARCHAR或者TEXT類型的列上創建。
- 單列索引和多列索引,索引可以在單列上創建的索引,也可以在多列上創建的索引。多列索引可以區分其中一列可能有相同值的行。
創建索引方法
1.創建普通索引,命令格式是:
CREATE INDEX <索引的名字> ON tablename (列的列表);
2.創建唯一索引,命令格式是:
CREATE UNIQUE INDEX <索引名字>
ON tablename(列的列表);
3.創建主鍵索引,有兩種方式,一種是在創建表的同時創建主鍵,主鍵索引自動創建,命令格式如下:
CREATE TABLE tablename ([....],PRIMARY KEY(列的列表));
另一種是已經創建了表,沒有指定主鍵,然後修改表加入主鍵,主鍵索引會自動創建,命令格式如下:
ALTER TABLE tablename ADD PRIMARY KEY(列的列表);
4.創建表示指定或修改表時指定全文索引,命令格式如下:
CREATE TABLE 表名 (列名 TEXT,FULLTEXT(列名));
5.創建多列索引,命令格式如下:
CREATE INDEX 多列索引名字 ON 列名_列名;
6.查詢索引:
SHOW INDEX FROM 表名 \G;
key_name 對應的是索引名字。Non_unique 對應值是1,表示不是唯一性索引,對應值為0,表示是唯一性索引。
7.刪除索引:
DROP INDEX 索引名 from 表名;
事務:一組操作共同執行或者都不執行,結果保持一致。
事務的四大特性:
- 原子性:不可分割,視為一個整體。
- 一致性:前後結果保持一致。
- 隔離性:對數據進行修改的所有並發事務是彼此隔離的,表示事務是獨立的,不應以任何方式依賴或影響其他事務。
- 持久性:一旦執行成功,不可逆轉,數據永久變更。
Mysql中使用命令控制事務需要用到3個命令:
- begin :表示開始一個事務,後面會有多條數據庫操作語句執行。
- commit:表示提交一個事務,對應前面的begin操作,他們之間的數據庫操作語句一起完成。
- rollback:表示回滾一個事務,在begin和commit之間,如果某一個數據庫操作語句出現錯誤,執行rollback回滾,數據庫回到begin之前的狀態。
視圖:數據庫中的虛擬表,一張或者多表中的數據給不同權限用戶提供訪問。
1.創建一個查詢結果的視圖:
CREATE VIEW 視圖名 AS SELECT * FROM 表名 條件(where score>80);
2.查看視圖:
SELECT * FROM 視圖名;
3.刪除一個視圖:
DROP VIEW IF EXISTS 視圖名;
IF EXISTS 參數指判斷視圖是否存在,如果存在則執行,不存在則不執行。
mysql 索引和事務、視圖