日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MySQL命令梳理_MySQL操作命令梳理(1)

發布時間:2023/12/19 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL命令梳理_MySQL操作命令梳理(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、索引

1、創建索引

索引的創建可以在CREATE TABLE語句中進行,也可以單獨用CREATE INDEX或ALTER TABLE來給表增加索引。以下命令語句分別展示了如何創建主鍵索引(PRIMARY KEY),聯合索引(UNIQUE)和普通索引(INDEX)的方法。

mysql>ALTER TABLE 表名 ADD INDEX 索引名 列名;

mysql>ALTER TABLE 表名 ADD UNIQUE 索引名 列名;

mysql>ALTER TABLE 表名 ADD PRIMARY KEY 索引名 列名;

mysql>CREATE INDEX 索引名 ON 表名 列名;

mysql>CREATE UNIQUE INDEX 索引名 ON 表名 列名;

例如:

mysql>ALTER TABLE `article` ADD INDEX `id`; //給article表增加id索引

或者:

mysql>ALTER TABLE `article` ADD INDEX (`id`,`order_id`); //給article表增加id索引,order_id索引

2、重建索引

重建索引在常規的數據庫維護操作中經常使用。在數據庫運行了較長時間后,索引都有損壞的可能,這時就需要重建。對數據重建索引可以起到提高檢索效率。

mysql> REPAIR TABLE 表名 QUICK;

3、查詢數據表索引

MySQL查詢表索引命令的有兩種命令形式:

mysql>SHOW INDEX FROM 表名;

或者:

mysql> SHOW keys FROM 表名;

比如:

mysql>SHOW INDEX FROM uc_member;+-----------+------------+---------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

+-----------+------------+---------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+

| uc_member | 0 | PRIMARY | 1 | member_id | A | 1099 | NULL | NULL | | BTREE | |

| uc_member | 1 | idx_nickname_passwd | 1 | member_nickname | A | 549 | NULL | NULL | | BTREE | |

| uc_member | 1 | idx_nickname_passwd | 2 | member_password | A | 1099 | NULL | NULL | | BTREE | |

| uc_member | 1 | member_mobile | 1 | member_mobile | A | 1099 | NULL | NULL | | BTREE | |

+-----------+------------+---------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+

4 rows in set (0.00 sec)

解釋:

Non_unique 如果索引不能包括重復詞,則為0。如果可以,則為1。

Key_name 索引的名稱。

Seq_in_index 索引中的列序列號,從1開始。

Column_name 列名稱。

Collation 列以什么方式存儲在索引中。在MySQL中,有值‘A'(升序)或NULL(無分類)。

Cardinality 索引中唯一值的數目的估計值。通過運行ANALYZE TABLE或myisamchk -a可以更新。基數根據被存儲為整數的統計數據來計數,所以即使對于小型表,該值也沒有必要是精確的?;鶖翟酱?#xff0c;當進行聯合時,MySQL使用該索引的機 會就越大。

Sub_part 如果列只是被部分地編入索引,則為被編入索引的字符的數目。如果整列被編入索引,則為NULL。

Packed 指示關鍵字如何被壓縮。如果沒有被壓縮,則為NULL。

Null 如果列含有NULL,則含有YES。如果沒有,則該列含有NO。

Index_type 用過的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

4、刪除索引

刪除索引可以使用ALTER TABLE或DROP INDEX語句來實現。

DROP INDEX可以在ALTER TABLE內部作為一條語句處理,其格式如下:

mysql>DROP index 索引名 ON 表名 列名;

mysql>ALTER TABLE 表名 DROP INDEX 索引名 列名;

mysql>ALTER TABLE 表名 DROP UNIQUE 索引名 列名;

mysql>ALTER TABLE 表名 DROP PRIMARY KEY 索引名 列名;

在上面前三條語句中,都刪除了table_name中的索引index_name。

而在最后一條語句中,只在刪除PRIMARY KEY索引中使用,因為一個表只可能有一個PRIMARY KEY索引,因此也可不指定索引名。

如果沒有創建PRIMARY KEY索引,但表具有一個或多個UNIQUE索引,則MySQL將刪除第一個UNIQUE索引。

如果從表中刪除某列,則索引會受影響。對于多列組合的索引,如果刪除其中的某列,則該列也會從索引中刪除。

如果刪除組成索引的所有列,則整個索引將被刪除。

二、Mysql索引概念:

索引就好比一本書的目錄,它會讓你更快的找到內容,顯然目錄(索引)并不是越多越好,假如這本書1000頁,有500也是目錄,它當然效率低,目錄是要占紙張的,而索引是要占磁盤空間的。

Mysql索引主要有兩種結構:hash和B+樹:

hash:hsah索引在mysql比較少用,他以把數據的索引以hash形式組織起來,因此當查找某一條記錄的時候,速度非???當時因為是hash結構,每個鍵只對應一個值,而且是散列的方式分布.所以他并不支持范圍查找和排序等功能.

B+樹:b+tree是mysql使用最頻繁的一個索引數據結構,數據結構以平衡樹的形式來組織,因為是樹型結構,所以更適合用來處理排序,范圍查找等功能.相對hash索引,B+樹在查找單條記錄的速度雖然比不上hash索引,但是因為更適合排序等操作,所以他更受用戶的歡迎.畢竟不可能只對數據庫進行單條記錄的操作.

Mysql常見索引有:主鍵索引、唯一索引、普通索引、全文索引、組合索引

PRIMARY KEY(主鍵索引): ALTER TABLE 表名 ADD PRIMARY KEY 列名

UNIQUE(唯一索引): ALTER TABLE 表名 ADD UNIQUE 列名

INDEX(普通索引): ALTER TABLE 表名 ADD INDEX 索引名 列名

FULLTEXT(全文索引): ALTER TABLE 表名 ADD FULLTEXT 列名

組合索引:ALTER TABLE 表名 ADD INDEX 索引名 (列名1,列名2, 列名3)

Mysql各種索引區別:

普通索引:最基本的索引,沒有任何限制

唯一索引:與"普通索引"類似,不同的就是:索引列的值必須唯一,但允許有空值。

主鍵索引:它 是一種特殊的唯一索引,不允許有空值。

全文索引:僅可用于 MyISAM 表,針對較大的數據,生成全文索引很耗時好空間。

組合索引:為了更多的提高mysql效率可建立組合索引,遵循”最左前綴“原則。

索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。

普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對數據的訪問速度。

普通索引允許被索引的數據列包含重復的值。如果能確定某個數據列將只包含彼此各不相同的值,在為這個數據列創建索引的時候就應該用關鍵字UNIQUE把它定義為一個唯一索引。也就是說,唯一索引可以保證數據記錄的唯一性。

主鍵,是一種特殊的唯一索引,在一張表中只能定義一個主鍵索引,主鍵用于唯一標識一條記錄,使用關鍵字 PRIMARY KEY 來創建。

索引可以覆蓋多個數據列,如像INDEX(columnA, columnB)索引,這就是聯合索引。

主鍵分為復合主鍵和聯合主鍵

復合主鍵就是指你表的主鍵含有一個以上的字段組成 。

例如:

create table test

(

name varchar(19),idnumber,

value varchar(10),

primary key (id,name)

)

上面的id和name字段組合起來就是你test表的復合主鍵 (若其一為單索引字段時,左邊的id才會有索引)

它的出現是因為你的name字段可能會出現重名,所以要加上ID字段這樣就可以保證你記錄的唯一性

一般情況下,主鍵的字段長度和字段數目要越少越好。

聯合主鍵,顧名思義就是多個主鍵聯合形成一個主鍵組合,體現在聯合。

(主鍵原則上是唯一的,別被唯一值所困擾。)

索引可以極大的提高數據的查詢速度,但是會降低插入、刪除、更新表的速度,因為在執行這些寫操作時,還要操作索引文件。

簡單的例子

主鍵A跟主鍵B組成聯合主鍵

主鍵A跟主鍵B的數據可以完全相同(困擾吧,沒關系),聯合就在于主鍵A跟主鍵B形成的聯合主鍵是唯一的。

下例主鍵A數據是1,主鍵B數據也是1,聯合主鍵其實是11,這個11是唯一值,絕對不充許再出現11這個唯一值。(這就是多對多關系)

主鍵A數據?主鍵B數據

1      1

2      2

3      3

主鍵A與主鍵B的聯合主鍵值最多也就是

11

12

13

21

22

23

31

32

33

總結

以上是生活随笔為你收集整理的MySQL命令梳理_MySQL操作命令梳理(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。