mysql之索引、視圖、約束簡單概念

來源:互聯網
上載者:User

標籤:mysql   索引   視圖   約束   

   索引
        索引是一種特殊的檔案(InnoDB資料表上的索引是資料表空間的一個組成部分),它們包含著對資料表裡所有記錄的引用指標。
        索引存在的目的是為提高查詢執行的速度。

        建立索引:
            CREATE INDEX [UNIQUE|FULLTEXT|SPATIAL] INDEX_NAME [INDEX_TYPE] ON TBNAME (INDEX_COL_NAME,...)

            INDEX_NAME 索引的名稱,自訂。

            INDEX_COL_NAME
                COLNAME [(LENGTH)] [ASC|DESC]
                    LENGTH 建立索引的時候,從左向右比較的字元個數。若建立在TEXT或CHAR類型上,必須定義長度。預設不指定表示全部長度。
                    ASC 升序排序
                    DESC 降序排序


            INDEX_TYPE
                USING {BTERR|HASH}
                一般都是用BTREE,不用HASH

            INDEX_OPTION

        刪除索引:
            DROP INDEX INDEX_NAME ON TBNAME

        顯示某個表的索引:
            SHOW INDEXES FROM TBNAME


    視圖(view)
        儲存的SELECT語句,基於基表的查詢結果。視圖也叫虛表。一般不建議將內容插入或更新視圖,因為視圖是受到基表的欄位限制。在mysql中用處不是很大。

        物化視圖(mysql不支援):
            將產生的視圖的結果儲存下來。優點是不用每次都進行查詢,缺點是一但基表更新則必須從新物化。

        建立視圖
            CREATE VIEW VIEWNAME [COLUMN_LIST] AS SELECT_STATMENT

        刪除視圖:
            DROP VIEWNAME

        修改視圖:
            先DROP後CREATE即可。


    顯示建立對象的具體語句:
        SHOW CREATE TBNAME|VIEW,,,


    約束
        域約束:資料類型約束
        外鍵約束:參考完整性約束
        主鍵約束:主鍵是某欄位能唯一標識此欄位所屬的實體,並且不允許為空白。符合這個條件的被稱為候選主鍵。一個表只能有一個主鍵。不允許2個實體在主鍵上出現相同值。
        唯一性限制式:每一行的某欄位都不允許出現相同值。但是可以為空白。表中可出現多個。
        檢查性約束: 自訂約束條件。mysql上功能比較薄弱。



    執行個體:
        1.給表添加唯一鍵
            mysql>DESC testcourses2;
            mysql>SHOW INDEXES FROM testcourses2;
            mysql>ALTER TABLE testcourses2 ADD UNIQUE KEY (CourName);
            mysql>SHOW INDEXES FROM testcourses2;

        2.建立外鍵:
            mysql>ALTER TABLE stud ADD FROEIGN KEY (CID) REFENCTS courses(CID);
            mysql>INSERT INTO stud (Name,CourName) VALUES (‘zhaoliu‘,4);

        3.建立索引:
            mysql>SHOW INDEXES FROM stud;
            mysql>CREATE INDEX name_on_stud ON stud (Name) USING BTREE;
            mysql>SHOW INDEXES FROM stud;

        4.刪除索引後重建索引,限定長度為前5個字元,升序排列:
            mysql>DROP INDEX name_on_stdu ON stud;
            mysql>CREATE INDEX name_on_stud ON stud(Name(5) ASC);

        5.建立一個視圖:
            mysql> CREATE VIEW sct SELECT * FROM sutdents;
            mysql> SHOW TABLES;
            mysql> SHOW TABLES STATUS;

        6.顯示建立視圖的命令:
            mysql>SHOW CREATE sct\G;

本文出自 “小私的blog” 部落格,請務必保留此出處http://ggvylf.blog.51cto.com/784661/1679325

mysql之索引、視圖、約束簡單概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.