索引與完整性約束(note6)


第七周(mysql索引與完整性)

1. 索引

  1. 索引的分類:

    • 普通索引(index):最基本的索引類型,沒有唯一性之類的限制,創建普通索引的關鍵字是index
    • 唯一性索引(unique):與普通索引基本相同,唯一區別就是所有值只能出現一次
    • 主鍵(primary key):主鍵是一種唯一性索引
    • 全文索引(fulltext):mysql支持全文檢索和全文索引,全文索引只能在varchar或text類型的列上創建
  2. create index語句創建:可以在一個已有表上創建,一個表可以創建多個索引,如果一個索引列可包含多個列,中間用逗號隔開,但它們屬於同一個表,這樣的索引叫作重復索引

    #	例子一:
    #根據xs表的學號列上的前5個字符創建一個升序索引xh_xs
    USE xscj;
    CREATE INDEX xh_xs
    ON xs(學號(5) ASC);
    
    #在xs_kc表的學號列和課程號列上建立一個復合索引xskc_in
    CREATE INDEX xskc_in
    ON xs_kc(學號,課程號);
    
    
    
    
  3. 在建立表是創建索引:索引也可以在創建表時一起創建

    #	例子二:
    #在mytest數據庫中創建成績cj表,學號和課程號的聯合主鍵,並在成績列上創建索引
    USE mytest;
    CREATE TABLE xs_kc(
    學號 CHAR(6) NOT NULL,
    課程號 CHAR(3) NOT NULL,
    成績 TINYINT(1),
    學分 TINYINT(1),
    PRIMARY KEY(學號,課程號),
    INDEX cj(成績)
    );
    
    SHOW INDEX FROM xs_kc;  //查看命令執行結果
    
  4. alter table 語句創建

    #	例子三:
    #在xs表的姓名列上創建一個非唯一的索引
    USE xscj;
    ALTER TABLE xs ADD INDEX xs_xm USING BTREE(姓名);
    
    #以xs表為例(假設表中主鍵未定),創建這樣的索引,以加速表的檢索速度
    ALTER TABLE xs ADD INDEX mark(出生日期,性別);
    
  5. 刪除索引

    #當一個索引不在需要的時候,可以用 drop index 語句或者 alter table 語句刪除它
    (1)使用 drop index: drop index 索引名 on 表名
    (2)使用 alter table: 
    		alter [ignore] table 表名 drop primary key	//刪除主鍵
    		alter [ignore] table 表名 索引名			//刪除索引
    		alter [ignore] table 表名 drop foreign key fk symbol //刪除外鍵
    		
    #其中,drop 子句可以刪除各種類型的索引。用戶使用 drop primary key 字句時不需要提供索引名稱,因為一個表只有一個主鍵
     
     
     #	例子四:
     #刪除xs表上的mark索引
     #刪除xs表上的mark索引
    DROP INDEX mark ON xs;
    
    ALTER TABLE xs DROP INDEX mark;
    
    #如果從表中刪除列,索引可能會受影響。如果所刪除的列為索引的組成部分,則該列也會從索引中刪除。如果組成索引的所有列都被刪除,則整個索引將會被刪除。
    

2.Mysql 數據完整性約束

  1. 主鍵約束

    • 作為列的完整性約束時,只需要在列定義的時候加上關鍵字primary key;

    • 作為表的完整性約束時,需要在語句最后加上一條primary key(列…)子句

      #創建表xs1,將姓名定義為主鍵
      CREATE TABLE xs1(
      學號 VARCHAR(6) NULL,
      姓名 VARCHAR(8) NOT NULL PRIMARY KEY,
      出生日期 DATETIME
      );
      
      #當表中的主鍵為復合主鍵時,只能定義為表的完整性約束
      #創建course表來記錄每門課程的學生學號、姓名、課程號、學分和畢業日期。
      #其中學號、課程號和畢業日期構成復合主鍵
      CREATE TABLE  course(
      學號 VARCHAR(6) NOT NULL,
      姓名 VARCHAR(8) NOT NULL,
      畢業日期 DATE NOT NULL,
      課程號 VARCHAR(3),
      學分 TINYINT,
      PRIMARY KEY(學號,姓名,畢業日期)
      );
      
  2. 替代鍵約束

  3. 參照完整性約束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM