![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
teng316
走投无路的PHPer,开始接触Python和golang喽~~~
展开
-
MYSQL学习 索引 B+tree B-tree
索引两种索引类型:btree索引、hash索引btree索引:innodb和myisam 使用的都是btree索引,树状结构myisam的数据表存储结构: table.frm 表结构 table.myd 数据 table.myi 索引btree索引常见误区:1,where条件常用的字段全部加上索引, 原因:独立的索引,同时查询时只能使用1个起作用。2,在多列上建立索引后,查询哪个列,索引都将起作用, 原因:多列索引起作用,需要满足左前缀要求3,索引的作用,原创 2021-03-21 17:55:32 · 114 阅读 · 0 评论 -
MYSQL学习 聚簇索引与非聚簇索引
B+Tree结构都可以用在MyISAM和InnoDB上。mysql中,不同的存储引擎对索引的实现方式不同聚簇索引要比非聚簇索引查询效率高很多简单的理解:叶子节点上存储了整体的数据,就是聚簇索引(innodb),否则就是非聚簇索引(myisam)聚簇索引的数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。 *聚簇索引要比非聚簇索引查询效率高很多。聚集索引这种主+辅索引的好处是,当发生数据行移动或者页分裂时,辅助索引树不需要更新,因为辅助索引树存储转载 2021-03-21 18:24:26 · 265 阅读 · 0 评论 -
MYSQL学习 存储引擎
mysql 存储引擎的区别• mysql存储引擎• 答:常用的主要分为两种,一种是innodb,一种是myisam,两者的主要区别是• ①myisam不支持事务处理,而innoDB支持事务处理• ②myisam 不支持外键,innoDB支持外键• ③myisam支持全文检索,而innoDB在MySQL5.6版本之后才支持全文检索• ④数据的存储形式不一样,mysiam表存放在三个文件:结构、索引、数据,innoDB存储把结构存储为一个文件,索引和数据存储为一个文件• ⑤myisam在查询和增加原创 2021-03-21 18:34:25 · 40 阅读 · 0 评论 -
MYSQL学习 创建索引注意
创建索引要求:1,查询频繁2,区分度高3,长度小4,尽量覆盖查询字段tips:1,计算区分度select ( ( select count(distinct(fields)) from table_name ) / ( select count(1) from table_name) )2,左前缀不易区分,解决方案:1,倒序2,伪哈希方案(也会有重复,不是最完美方案) crc32(); 函数作用:是一种伪哈希算法,可以把字符串转为32位整数3,多列索引 需要考虑: 1,列原创 2021-04-05 22:48:23 · 268 阅读 · 0 评论 -
mysql表字段修改-测试题
修改表字段1,导出一张数据表的命令正确的是(A)A:mysqldump -u 用户名 -p 密码 库名 表名 > 文件名(如 D:/a.sql)B:mysqldump -u 用户名 -p 密码 库名 表名 1 表名 2 表名 3 > 文件名(如 D:/a.sql)C:mysqldump -u 用户名 -p 密码 库名 > 文件名(如 D:/a.sql)D:mysqldump -u 用户名 -p 密码 -B 库名 > 文件名(如 D:/a.sql)5,更改表字段名的原创 2020-06-01 22:41:19 · 349 阅读 · 0 评论 -
Mysql int(10) int(11) 字符长度的设置
创建数据表的时候,对于int类型的字段,大家通常默认设置成int(11);那么,我们今天在这里探讨一下,这个长度是10还是11,对于实际存储,有什么影响。首先,创建一张数据表:CREATE TABLE `test` ( `id` int(3) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;我们创建了一张数据表,其中id字段的长度设置为3,这里的3其实和实际保存数据的长度无关。原创 2022-05-03 16:59:38 · 4972 阅读 · 0 评论 -
Mysql group_concat()
作用:group_concat()可以把按照group_by统计出的某一列字段拼接成字符串展示出来。create table emp( emp_id int primary key auto_increment comment '编号', emp_name char(20) not null default '' comment '姓名', salary decimal(10,2) not null default 0 comment '工资', department ch原创 2022-01-05 18:08:09 · 207 阅读 · 0 评论 -
Mysql find_in_set()
关于Mysql的查询,find_in_set();使用场景:判断某个字符串的字段中是否有某个值。举例:在多对多的关系中,创建数据表的时候,一般是三张表,例如一张教师表,一张学生表,一张学生和教师的关联关系表。但是,有些时候,我们会只有两张表,教师表和学生表,在学生表中有一个字段保存了学生关联的多个教师的id学生ID学生名称教师ID1章三1,2,3这个时候,如果需要查询关联了教师ID为1的学生的列表,就可以使用find_in_set()了。使用方法:FIND_IN_SE原创 2022-01-05 16:19:35 · 1196 阅读 · 0 评论 -
mysql查询之按年、月分组
在mysql中,数据表的created_at字段类型是timestamp,使用到了date_format()。现在有以下几个查询场景一、按照创建时间分组,获取月份、周SELECT DATE_FORMAT(created_at,'%Y%u') AS weeks AS count FROM role GROUP BY weeks;SELECT DATE_FORMAT(create_time,'%Y%m') AS months,COUNT(id) AS count FROM rol原创 2021-08-15 19:10:09 · 11990 阅读 · 0 评论