日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

mysql字段简索引_MySQL常用的一些语句,索引,字段等

發(fā)布時(shí)間:2023/12/2 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql字段简索引_MySQL常用的一些语句,索引,字段等 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、庫相關(guān):

建庫:

character set:指定編碼

COLLATE:排序規(guī)則 utf8mb4_general_ci 大小寫不敏感

CREATE DATABASE `test_db` default character set utf8mb4 COLLATE utf8mb4_general_ci;

查看建庫語句:

SHOW CREATE DATABASE `test_db`;

2、數(shù)據(jù)表相關(guān):

建表:

CREATE TABLE `video` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(100) NOT NULL DEFAULT '' COMMENT '視頻名字',

`cat_id` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '分類id',

`image` varchar(200) NOT NULL DEFAULT '',

`url` varchar(200) NOT NULL DEFAULT '',

`type` tinyint(2) unsigned NOT NULL DEFAULT '0',

`content` text,

`uploader` varchar(200) NOT NULL DEFAULT '',

`create_time` int(10) unsigned NOT NULL DEFAULT '0',

`update_time` int(10) unsigned NOT NULL DEFAULT '0',

`status` tinyint(2) unsigned NOT NULL DEFAULT '0',

PRIMARY KEY (`id`),

INDEX `cat_info`(`cat_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

查看表:

SHOW CREATE TABLE `video`;#建表語句

DESC `video`;

DESCRIBE `video`;

修改表的存儲(chǔ)引擎:

ALTER TABLE `video` ENGINE=MyISAM;

ALTER TABLE `video` ENGINE=InnoDB;

3、索引增加查看刪除

索引創(chuàng)建:

3.a、加主鍵索引

ALTER TABLE `table_name` ADD PRIMARY KEY (`column`)

復(fù)合主鍵:

ALTER TABLE `table_name` ADD PRIMARY KEY(`column1`,`column2`);

3.b、加唯一索引

ALTER TABLE `table_name` ADD UNIQUE (`column`)

3.c、加單列索引

ALTER TABLE `table_name` ADD INDEX index_name (`column`)

3.d、加全文索引

ALTER TABLE `table_name` ADD FULLTEXT (`column`)

Note:

3.e、添加復(fù)合索引[多列索引] [最左前綴原則]

ALTER TABLE `table_name` ADD INDEX index_name (`column1`,`column2`,`column3`)

Note:

note.1

多個(gè)單列索引與單個(gè)多列索引的查詢效果不同,因?yàn)閳?zhí)行查詢時(shí),MySQL只能使用一個(gè)索引,會(huì)從多個(gè)索引中選擇一個(gè)限制最為嚴(yán)格的索引。

平時(shí)用的SQL查詢語句一般都有比較多的限制條件,所以為了進(jìn)一步榨取MySQL的效率,就要考慮建立組合索引。

例如對(duì)上面video表中針對(duì)name和create_time建立一個(gè)組合索引:

name字段取前50個(gè)字符建立索引。

ALTER TABLE `video` ADD INDEX index_name_ctime (name(50),create_time)

建立這樣的組合索引,其實(shí)是相當(dāng)于分別建立了下面兩組組合索引:

* name,create_time

* name

為什么沒有create_time這樣的組合索引呢?

這是因?yàn)镸ySQL組合索引“最左前綴”的結(jié)果。簡單的理解就是只從最左面的開始組合。并不是只要包含這兩列的查詢都會(huì)用到該組合索引,如下面的幾個(gè)SQL所示:

能使用到上面的索引:

* SELECT * FROM `video` WHREE name='測(cè)試' AND create_time=1234567890;

* SELECT * FROM `video` WHREE name='測(cè)試';

不能使用上面的索引:

* SELECT * FROM `video` WHREE create_time=1234567890;

note.2、索引不會(huì)包含有NULL值的列

只要列中包含有NULL值都將不會(huì)被包含在索引中,復(fù)合索引中只要有一列含有NULL值,那么這一列對(duì)于此復(fù)合索引就是無效的。

所以我們?cè)跀?shù)據(jù)庫設(shè)計(jì)時(shí)不要讓字段的默認(rèn)值為NULL。

note.3、索引列排序

MySQL查詢只使用一個(gè)索引,因此如果where子句中已經(jīng)使用了索引的話,那么order by中的列是不會(huì)使用索引的。

因此數(shù)據(jù)庫默認(rèn)排序可以符合要求的情況下不要使用排序操作,盡量不要包含多個(gè)列的排序,如果需要最好給這些列創(chuàng)建復(fù)合索引。

note.4、like語句操作

使用like時(shí),只有 like "aaa%" 才會(huì)使用到索引

note.5、不要在列上進(jìn)行運(yùn)算

例如:select * from users where YEAR(create_date)<2007,將在每個(gè)行上進(jìn)行運(yùn)算,這將導(dǎo)致索引失效而進(jìn)行全表掃描,

因此我們可以改成:select * from users where create_date

note.6、字符串字段的索引,查詢時(shí)帶上單引號(hào)

參考文章:

note.7、最后

MySQL只對(duì)以下操作符才使用索引:

,>=,between,in,以及某些時(shí)候的like(不以通配符%或_開頭的情形)。

而理論上每張表里面最多可創(chuàng)建16個(gè)索引,不過除非是數(shù)據(jù)量真的很多,否則過多的使用索引也不是那么好玩的,比如我剛才針對(duì)text類型的字段創(chuàng)建索引的時(shí)候,系統(tǒng)差點(diǎn)就卡死了。

索引查看:

SHOW INDEX FROM `table_name`;

索引刪除:

DROP INDEX `index_name` ON `table_name`;

ALTER TABLE `table_name` DROP INDEX `index_name`;

4、字段增加修改刪除

增加:

增加字段:

ALTER TABLE `table_name` ADD `email` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '郵箱';

增加字段,并將增加的字段位于某個(gè)字段后面:

ALTER TABLE `table_name` ADD `email` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '郵箱' AFTER `telephone`;

修改:

修改字段數(shù)據(jù)屬性:

ALTER TABLE `table_name` MODIFY `email` CHAR(80) NOT NULL DEFAULT '' COMMENT '定長郵箱';

修改字段名稱和屬性:

ALTER TABLE `table_name` CHANGE `email` `user_email` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '用戶郵箱';

給字段設(shè)置默認(rèn)值:

ALTER TABLE `table_name` ALTER `user_email` SET DEFAULT 'username@qq.com';

修改自增長鍵的起始值:

ALTER TABLE `table_name` AUTO_INCREMENT=100;

刪除:

刪除字段:

ALTER TABLE `table_name` DROP COLUMN `user_email`;

刪除多個(gè)字段:

ALTER TABLE `table_name` DROP COLUMN `user_email`,DROP COLUMN `telephone`;

總結(jié)

以上是生活随笔為你收集整理的mysql字段简索引_MySQL常用的一些语句,索引,字段等的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。