> 文档中心 > 2022年3月29日记:Linux服务器开发, SQL语句,索引,视图,存储过程,触发器(2)

2022年3月29日记:Linux服务器开发, SQL语句,索引,视图,存储过程,触发器(2)

────────────────────────────────────

┌————————————┐
│▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦。
└————————————┘
对你的感情正在充电中,请稍侯…

────────────────────────────────────
推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
https://ke.qq.com/course/417774?flowToken=1042807
────────────────────────────────────

SQL语句,索引,视图,存储过程,触发器

  • 前言
    • 数据库的分类
    • OLTP or OLAP
    • 为什么mysql需要连接池?
    • 范式
    • 删除表
  • 分组查询
    • 聚合函数
  • 联合查询
  • 问:为什么inodb需要主动创建主键索引?
  • 总结

前言

今天又重新刷了一遍mysql的第一节课,好久不看已经有些生疏了。主要是mysql的运行机制,B+树的存储结构。随着时间的推移,对于mysql我又感觉已经完全的生疏了,还是应该将数据库安装在本地,实际操作翻云覆雨一番。

在这里插入图片描述

数据库的分类

  • mysql关系型数据库
  • nosql,mongodb,redis非关系型数据库
  • elasticsearch

OLTP or OLAP

Online transaction processing ,增删改查数据处理,实时性高。
On-Line Analytical Processing,对过去发生的事情进行统计分析。
前者更倾向于记录,后者更倾向于分析。

为什么mysql需要连接池?

select(listenfd+1,readfds,NULL,NULL,0);int clientfd=accept(listenfd,&adddr,&len);my_thread_create(key_thread_one_connection,&id&connection_attrib,handle_connection,(void*)channel_info);while(1){int n=read(clientfd,buff,sz);do_command();}

使用连接池可以减少密码验证等等用去的时间。

引擎需要将经常使用的数据放到buffer缓冲区中来,主要描述的是表,而非数据库一个笼统的概念。

三范式

保持数据的原子性,又要保持相关性与直接性。

  • 反范式

删除表

  • 删除表结构:DROP TABLE’table_name’;
  • 以页为单位删除表结构+数据:TRUNCATE TABLE ‘table_name’;
  • 以行为单位删除表结构+数据:DELETE TABLE ‘table_name’;

分组查询

两个步骤组成:

  • 去重
  • 合并

聚合函数

  • count()
  • group_concat(‘age’)
  • sum()
  • avg()
  • max()
  • min()

联合查询

在这里插入图片描述
**需要注意的是:not in/in需要进行全表扫描,所以要进行优化。**月牙用来优化not in。

问:为什么inodb需要主动创建主键索引?

总结

通过今天的学习,mysql也算是有了一个初步的了解。这确实是看的第三遍了,依然感觉有很多的收获。对mysql运行机制有了一了一个整体的概念,但是就如mark老师所说,课下的努力必不可少。
目前的学习计划还是有条不紊地、有节奏的上课,每天写一篇csdn博客,然后利用其余时间对mysql相关知识进行补充。
今天就先这样啦,感觉虽然字数不多,但是收获还是很多。