1. 程式人生 > >mysql 索引、檢視、約束

mysql 索引、檢視、約束

USE shop_product_db;

-- 索引
/*
作用
通過索引可以更加快速高效地查詢資料。
使用者無法看到索引,它們只能被用來加速查詢。
注意
更新一個包含索引的表需要比更新一個沒有索引的表花費更多的時間,這是由於索引本身也需要更新。因此,理想的做法是僅僅在常常被搜尋的列(以及表)上面建立索引。
唯一索引
唯一索引表明此索引的每一個索引值只對應唯一的資料記錄
*/
-- ----------------------------------------
-- 建立普通索引
CREATE INDEX  t_supplier_index
on t_supplier (supplierId);

-- 撤銷索引
ALTER TABLE t_supplier
DROP INDEX t_supplier_index;


-- 建立唯一索引
CREATE  UNIQUE INDEX  t_supplier_index
ON t_supplier (supplierId)


-- ------------------------------
-- ------------------------------

/*檢視是基於 SQL 語句的結果集的視覺化的表。
檢視是虛擬的表,本身不包含資料,也就不能對其進行索引操作。對檢視的操作和對普通表的操作一樣
*/
-- 建立檢視
CREATE VIEW top_2_user_view AS
SELECT classId,className
FROM t_productclass
WHERE classId < 3;


-- 查詢檢視
SELECT * FROM top_2_user_view;

-- 撤銷檢視
DROP VIEW top_2_user_view;


-- -----------------------------------------
-- ------------------------------------------

-- 約束
-- ----------------------------
/*
SQL 約束用於規定表中的資料規則。
如果存在違反約束的資料行為,行為會被約束終止。
約束可以在建立表時規定(通過 CREATE TABLE 語句),或者在表建立之後規定(通過 ALTER TABLE 語句)。

約束型別
NOT NULL - 指示某列不能儲存 NULL 值。
UNIQUE - 保證某列的每行必須有唯一的值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的結合。確保某列(或兩個列多個列的結合)有唯一標識,有助於更容易更快速地找到表中的一個特定的記錄。
FOREIGN KEY - 保證一個表中的資料匹配另一個表中的值的參照完整性。
CHECK - 保證列中的值符合指定的條件。
DEFAULT - 規定沒有給列賦值時的預設值。
*/


-- 建立表時使用約束條件

CREATE TABLE Users (
  Id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增Id',
  Username VARCHAR(64) NOT NULL UNIQUE DEFAULT 'default' COMMENT '使用者名稱',
  Password VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '密碼',
  Email VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '郵箱地址',
  Enabled TINYINT(4) DEFAULT NULL COMMENT '是否有效',
  PRIMARY KEY (Id)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='使用者表';