1. 程式人生 > >mysql 索引和事務、視圖

mysql 索引和事務、視圖

多列 命令控制 操作 普通 mysql索引 事務 查看 錯誤 速度

MySQL索引的建立對於MySQL的高效運行是很重要的,索引可以大大提高MySQL的檢索速度,數據庫索引就好比好比是一本書全面的目錄。

索引分5類

  1. 普通索引,這是最基本的索引類型,而且他沒有唯一性之類的限制。
  2. 唯一性索引,這種索引和前面的“普通索引”基本相同,但有一個區別:索引列的所有值只能出現一次,即必須唯一。
  3. 主鍵索引,主鍵是一種唯一性索引,該索引要求主鍵中的每個值都唯一,不允許為空。
  4. 全文索引,索引類型為FULLTEXT,全文索引可以在CHAR、VARCHAR或者TEXT類型的列上創建。
  5. 單列索引和多列索引,索引可以在單列上創建的索引,也可以在多列上創建的索引。多列索引可以區分其中一列可能有相同值的行。

    創建索引方法

    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 表名;

事務:一組操作共同執行或者都不執行,結果保持一致。

事務的四大特性:

  1. 原子性:不可分割,視為一個整體。
  2. 一致性:前後結果保持一致。
  3. 隔離性:對數據進行修改的所有並發事務是彼此隔離的,表示事務是獨立的,不應以任何方式依賴或影響其他事務。
  4. 持久性:一旦執行成功,不可逆轉,數據永久變更。
    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 索引和事務、視圖