如果你觉得对你有用,请留下一个赞再走,谢谢!!

文章目录

  • 一、SQL语句查询模板
  • 二、查看性能的语句
    • 2.1 查看是否用上索引(必须会)
    • 2.2 慢查询哪里看
    • 2.3 连接数、索引sql
  • 三、事务隔离性
  • 四、优化SQL(千万级数据测试)
  • 五、MYSQL经典50题(含答案)
  • 六、分享交流

一、SQL语句查询模板

在实际开发中,读远远大于写,所以数据查询的模板格式必须掌握

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]...
FROM <表名或者视图名>[,<表名或者视图名>...]|(<SELECT语句>[AS]<别名>
[where<表达式>]
[GROUP BY<列名1>[HAVING<表达式>]
[ORDER BY<列名2>[ASC|DESC]]
LIMIT;

开发中常用sql语句:

  1. 随意获取一条数据(抽奖)
SELECT * FROM table_name ORDER BY RAND() LIMIT 1;
  1. 批量删除数据(管理端一键删除)
# 加个limit避免大量事务等待而删除失败,提高效率(批量更新也一样)
DELETE FROM table_name LIMIT num1
  1. 添加索引
ALTER  TABLE  `table_name`  ADD  INDEX index_name (  `column`  )
  1. 一般的增删改查自行百度
  2. 持续更新中……

二、查看性能的语句

2.1 查看是否用上索引(必须会)

  • sql语句是否用上索引,用explain关键字
    explain select * from test

    分析:

type:
常用的类型有: ALL、index、range、 ref、eq_ref、const、system、NULL

  • ALL:全表扫描
  • index: 遍历索引树
  • range: 只检索给定范围的行,使用一个索引来选择行
  • ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
  • 性能上: ref > range > index > ALL

2.2 慢查询哪里看

  1. 查看当前数据库是否开启了慢查询日志功能
    show variables like '%slow%'

    分析:
       a. slow_query_logON代表已开启慢查询日志
       b. slow_query_log_file代表日志的位置

  2. 查看多少秒算慢查询
    show variables like 'long_query_time'

    分析:
       a. 默认是10秒,这里为了测试设置成这样

  3. 如何开启慢查询(配置文件在哪??,了解即可)
    a. 登录mysql客户端,输入如下命令
    select @@basedir;

    这是MySQL安装位置

    b. 输入select datadir;

    MySQL的配置文件就存放在此处
    c. my.ini中修改配置参数

  4. 通过慢查询的日志,定位sql

    说明: 这条语句被定位到的原因是上面将慢查询时间改的很短很短。

2.3 连接数、索引sql

  1. 查看连接数
    show status like 'connections'
  2. 查看表索引
    show index from table_name(table_name用你自己的表名)

三、事务隔离性

3.1 事务的隔离性:

  • 读未提交
    read uncommitted;
  • 读与提交
    read committed;
  • 可重复读(mysql默认的)
    repeatable read;

隔离性可用如下语句相应修改:

# 读未提交
set session transaction isolation level read uncommitted;
# 读已提交
set session transaction isolation level read committed;
# 可重复读
set session transaction isolation level repeatable read;

3.2 数据不一致性包括:

  • 丢失修改
  • 不可重复读
  • 读‘脏’数据

3.3 锁:

悲观锁 乐观锁
理解 在数据库层面上做并发控制 应用系统层面上做并发控制
分类 读锁、排它锁(写锁) x
语法 写锁:for update, 读锁:lock in share mode; 一般在数据库字段中添加版本号进行比对
实现者 MYSQL数据库本身 开发者自己
使用场景 数据量大,多写操作时 数据量小,多读操作时

四、优化SQL(千万级数据测试)

  • 索引失效的情况,在项目应用中能有替换方案就用替换方案
  1. not exist, !=,not in ,不会使用索引
  2. where中用like进行%xx%或者%xx模糊匹配
  3. where条件中有or,即使条件有索引,也用不上
  4. select * ……全表扫描,按需取出相应的列

真实数据操作:
先为name加上索引
alter table test add index indx_name('name')
1. 用union代替in 、or

select name from test where name in('逆风','猪猪');
# 换成
select name from test where name = '逆风' union select name from test where name = '猪猪';


其它的自行可以去尝试……

五、MYSQL经典50题(含答案)

光说不练歪把子

如果你能把这50道经典题都自行完成了,那公司里的sql业务难不到你的了。

还等什么!!撸起袖子开干吧!!!!
如何获取资源:

  1. 戳我->资源链接
  2. 关注公众号回复sql经典50题

六、分享交流

最后有兴趣一起交流的,可以关注我的公众号:这里你能够学到很实用的技巧,不是常用的我不说,公众号回复提取码即可获取以下学习资料啦啦啦啦,喜欢就拿去吧!!

(链接时常会失效,若出现此类情况,可以加我微信:17722328325(加时请备注:学习资料))

  1. Java web从入门到精通电子书

  2. Python机器学习电子书

  3. Python400集(北京尚学堂)

  4. JavaScript项目案例、经典面试题

  5. Java300集(入门、精通)

  6. Java后端培训机构录集(同事培训内部提供)

  7. java重要知识pdf文档(价值连城呀呀,不收藏你会后悔的)



        喜欢就关注吧,点个赞吧

程序员MYSQL急救包——(能救命,能加薪)相关推荐

  1. 过年了,程序员同学如何给老板提加薪?

    还有不到一个月的时间就要过春节了!对大多数人而言,年终奖的确让人很期待.但是有一件事让很多程序员同学「耿耿于怀」,那就是如何开口给老板提加薪呢?一般而言,程序员都不善于和老板提这个问题,一是因为脸皮薄 ...

  2. 程序员该不该主动提加薪?

    阅读文本大概需要3分钟. 程序员该不该主动提加薪这个问题应该很多程序员困惑,特别刚就业一两年的小伙伴,我觉得这个问题很有普遍性,应该是很多程序员普遍关注的问题,因此拿出来和大家一起聊聊. 在文章开始之 ...

  3. 程序员该不该主动提加薪?| 畅言

    作者 | 纯洁的微笑 责编 | 胡巍巍 很早之前有一个网友,问笔者一个问题,我觉得这个问题很有普遍性,应该是很多程序员普遍关注的问题,因此拿出来和大家一起聊聊. 问题如下:最近一直在纠结怎么向上司提加 ...

  4. 如何把程序员从久坐颈椎病中拯救出来?我为程序员做了这个救命APP

    Life++ 久坐救命教练 - (程序员版) 「Life++」- 你的久坐救命教练,在办公室随时随地对抗久坐带来的巨大伤害. 我们每个人都在"慢性自杀": - 上班8小时坐着,吃饭 ...

  5. 推荐 10 个 GitHub 上最火的程序员简历项目,少说加薪 3K 的简历技巧!

    面试 大家好,我是你们的 猫哥,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 前言 猫哥是一个常年混迹在 GitHub 上的猫星人,所以发现了不少好的前端开源项目.常用技巧,在此分享给大家. 公众号:前端 ...

  6. 黑马程序员mysql答案_干货|MySQL常见问题及答案汇总

    MySQL是一种开放源代码的关系型数据库管理系统.数据库按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. 在学习MySQ ...

  7. 初级程序员Mysql最新安装步骤(安装,卸载,常见问题)

    快速安装mysql mysql8.0下载地址 在这里插入图片描述 Login登录----Sign Up注册账户 在这里插入图片描述 我的电脑-->高级设置-->系统变量-->新建-- ...

  8. 黑马程序员---MYSQL数据库---01

    一:数据库的特点: 1:持久化存储 2:读写速度极快 3:保证数据有效性. 数据库是来干啥的?? 存储和管理数据. 二:数据库的分类: 1:关系型数据库:MySQL ,SQL Server, Orac ...

  9. 想成为高级程序员MYSQL的那些知识你需要全懂

    MySql常用命令 登录mysql mysql -u username -p 数据库授权 grant all privileges on *.* to iCache@'192.168.101.221' ...

最新文章

  1. eclipse/MyEclipse 日期格式、注释日期格式、时区问题
  2. mysql sqlserver schema_MySQL数据库数据迁移到SQLserver
  3. 微型计算机和接口技术考题,微型计算机接口技术以及应用考题
  4. Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition by
  5. python 字符串%和format_Python必懂知识点,格式化字符串,到底用.format还是%
  6. 小马哥讲Spring核心编程思想 第十周 Spring资源管理
  7. 城市空气质量监测系统解决方案
  8. k620显卡linux驱动下载,K620k620驱动的安装方法和丽台k620显卡可以玩哪些游戏
  9. 怎么使用播放麦克风输入的音频呢
  10. Git入门——tortoisegit使用问题:git不显示图标?
  11. Ubuntu 修改只读文件
  12. 如何关闭机房迦卡他卡进程,让你轻松上网。
  13. 学计算机大学报什么专业好就业前景,学哪些专业就业前景好?附未来最吃香的十大专业...
  14. 项目开发相关(附 Git 使用)
  15. violate关键字的用法
  16. 用Python实现的Internet电话软件(P2P-SIP)开源
  17. 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
  18. “政务上链” 能否解决新数据孤岛、安全风险等问题
  19. 高通退出服务器芯片市场,华为会跟随退出么?
  20. 查出反向木马的反向连接域名

热门文章

  1. c++实现二叉排序树
  2. 金融市场基础知识-全书读书笔记汇总
  3. 微信小程序自定义导航栏组件(完美适配所有手机),可自定义实现任何你想要的功能
  4. 关于浏览器input输入框自带屎黄色样式的修改(个人笔记)
  5. Apache Tomcat 强化和安全指南
  6. IA-RED²:视觉变换器的可解释性冗余降低
  7. 每天学一点点英语——(ignorance)
  8. 情态动词---情态动词表推测的三种时态
  9. 女子能顶半边天,谷歌权势最大的15个女人
  10. linux看电影软件下载,LINUX总结第5篇:Cent os常用软件(看电影、听音乐、看pdf、看word等)...