不知道大家有没有遇到过分库分表使用MyCat的数据库。对于这种数据库,相信大家在使用Navicat连接的时候,会发现有很明显当时我自己的表是存在的,但是使用Navicat的时候,左边是看不到表的,这就导致对于不熟悉添加字段和查看表结构的同学来说是一种折磨。今天阿粉就给大家整理了一些经典的SQL,方便大家以后想看的时候直接拉出来。熟悉MySQL的加表页面。很多人在创建表的时候,直接在这里定义表的结构,然后直接保存。让有权限的人为你执行建表语句。这个时候,SQL语句就是用来建表的。CREATETABLE表名(列名1数据类型,列名2数据类型,列名3数据类型,...)但是这样指定肯定不行,得有主键对吧?举个最简单的:CREATETABLE`USER`(`ID`varchar(64)NOTNULL,`Name`varchar(64)NULL,`Age`int(11)NULL,PRIMARYKEY(`ID`))我们创建一个USER表,然后给表添加主键就完成了基本表的创建。想添加字段时找不到表怎么办?这很简单。ALTERTABLE语句的语法格式如下;ALTERTABLEtable_nameADDcolumn_namedatatypedefaultxxxCOMMENT'Comment'这种语法table_name是你的表名,column_name是你的字段名,datatype是你的字段类型,default是你字段的默认值,COMMENT后面是对应的注释字段,是不是很简单?虽然简单,但是对于很多直接习惯使用Navicat的人来说,还得去百度一下。现在他们不需要了。只需将其加入书签并将其拉过来,以便下次继续使用。如果你觉得我们为这个表设计的某个字段的类型不合适,应该怎么改呢?同样是ALTER语法:ALTERTABLEtable_nameMODIFYCOLUMNcolumn_namedatatypecomment'comment';其实和加字段区别不大,只是MODIFY是修改的意思。毕竟写代码还有CRUD!MYSQL查看表结构当你找不到表,又确信表一定存在的时候,这时就得用到一个关键字DESC,看到这个关键字的时候,相信小伙伴们都是一头雾水。什么鬼,DESC不是用来排序的吗?没错,DESC确实是用来排序的,但是这个DESC不是另一个DESC,这里的DESC其实是DESCRIBE的缩写,排序用的DESC是DESCEND的缩写。你懂吗?语句DESCtable_name可以成功显示你创建的表的结构。MYSQL查看表索引的语句相信大家都知道。显示来自tbname的索引;这里要注意的是每个字段的含义。1.表:表名。2.Non_unique:如果索引不能包含重复值则为0,如果可以则为1。这就是通常所说的唯一索引。3.key_name为索引名。如果名称相同,则表示相同的索引,而不是重复的。比如上图中的第四条和第五条数据,索引名称都是name,其实就是一个联合索引。4.Seq_in_index索引中列的序号,从1开始。对于上图中的四五条数据,Seq_in_index一条为1,一条为2,表示在联合索引中的顺序,我们可以推断索引在联合索引中的顺序。5.Column_name索引的列名。6.Collat??ion是指列在索引中的存储方式,大概就是字符顺序的意思。7、Cardinality是基数的意思,表示索引中唯一值个数的估计值。我们知道一个字段的重复值越少越适合做索引,所以我们一般根据Cardinality来判断索引是否具有高选择性。如果这个值很小,那么我们需要重新评估这个字段是否适合索引。8.Sub_part前面索引的意思,如果该列只是部分索引,就是要索引的字符数。如果对整个列进行了索引,则为NULL。9.Packed表示关键字是如何压缩的。如果未压缩则为NULL。压缩一般包括压缩传输协议、压缩列方案和压缩表方案。10.Null如果列包含NULL,则包含YES。11、index_type表示索引类型。Mysql目前有以下几种索引类型:FULLTEXT、HASH、BTREE、RTREE。12.CommentIndex_comment评论的含义。说到查看索引,那就不得不说说增删索引了。索引类型:UNIQUE(唯一索引):相同值不能出现,NULL值INDEX(普通索引):允许相同索引内容PROMARYKEY(主键索引):不允许相同值fulltextindex(全文索引):可以针对value中的某个词,但是效率实在是不敢恭维。组合索引:本质上是将多个字段构建到一个索引中,必须唯一创建列值的组合。IndexCREATEINDEXindex_nameONtable_name(column_name)delete索引DROPINDEXindex_nameONtable_name很简单。我不会说太多。这里有一个比较经典的。如果表已经创建好,再添加索引,那么就得ALTER了。ALTERTABLEtable_nameaddINDEX`index_name`(`xxx`,`xx`,`x`)上面语句替换表名、索引名和字段名,然后创建一个联合索引,看起来很简单不是吗。最后阿芬做个总结:建表总结CREATETABLE`USER`(`ID`varchar(64)NOTNULL,`Name`varchar(64)NULL,`Age`int(11)NULL,PRIMARYKEY(`ID`))添加字段ALTERTABLEtable_nameMODIFYCOLUMNcolumn_namedatatypecomment'Comment';查看表结构DESCtable_name查看表索引showindexfromtbname;createindexCREATEINDEXindex_nameONtable_name(column_name)删除表索引DROPINDEXindex_nameONtable_name增加表索引ALTERTABLEtable_nameaddINDEX`index_name`(`xxx`,`xx`,`x`)
