MySQL易忘常用的知识点

2023-05-16

目录

  • 目录
  • 前言
  • WHERE
  • DISTINCT
  • GROUP BY
  • SELECT语句完整的执行顺序
  • NOT NULLNULL和default默认值
  • MySQL中文字节问题
  • 关于MYSQL Incorrect string value
  • 参考

前言

  这里介绍MySQL中不得不记却经常被我们遗忘的重要知识点。

WHERE

  • where条件中不能使用聚合函数,如:sum、max等,而针对分组而言,采用having设置分组条件,在having中可使用聚合函数。
  • 必须在GROUP BY 子句之前指定 WHERE 子句。(如果存在的话)

DISTINCT

  在MySQL中提供关键字distinct来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重复记录的所有值。其原因是除distinct目标字段外还查询其他字段,则distinct无法根据目标字段进行记录去重的操作。

GROUP BY

  • group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
  • group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素:
    • select子句中查询的列名必须为分组列或列函数。列函数对于group by子句定义的每个组各返回一个结果。
    • 如果需要筛选结果,则可以先使用where 再用group by或者先用group by再用having。当然如果可以使用的话,具体场景具体分析。
  • 对于标准SQL而言,使用group by子句必须满足上述提到的第一个要素,即select子句中查询的列名必须为分组列或列函数。但是在MySQL中扩展了 GROUP BY 的功能:
    • 不加聚合函数的情况下,返回的结果是 GROUP BY 结果集中第一行;
    • select子句中选择的字段不必在 GROUP BY 中存在。
    • 但在版本5.7以上(包括5.7)的MySQL会标准一些,也就是上面的不标准使用不再被兼容。参考group by的常见错误-SQL-GROUP BY语句在MySQL中的一个错误使用被兼容的情况。在这种情况下,如果使用group by不遵循上述提到的两个要素,就将会发生错误。

SELECT语句完整的执行顺序

  1. from子句组装来自不同数据源的数据;
  2. where子句基于指定的条件对记录行进行筛选;
  3. group by子句将数据划分为多个分组;
  4. 使用聚集函数进行计算;
  5. 使用having子句筛选分组;
  6. 计算所有的表达式;
  7. 使用order by对结果集进行排序;
  8. select 集合输出。

NOT NULL、NULL和default默认值

  当前MySQL环境是5.6.7。
  字段设置为NOT NULL,当向该表插入一条记录,而记录没有包含该字段的数据时,并不会因为NOT NULL的字段而插入失败。针对字段类型,MySQL会自动插入值,如字符串类型的字段,此时会插入空字符串;int类型的字段会插入0;decimal 如 decimal(8,2) 的字段会插入 0.00,而 decimal(8,3) 的字段会插入 0.000。(这一点跟我以前认为的不太一样,可能是因为MySQL版本的问题。)当向该表插入一条记录时,NOT NULL的字段不能被插入 NULL 值。
  字段设置为NULL,当向该表插入一条记录,而记录没有包含该字段的数据时,该字段的值会被设置为NULL。
  字段设置为NOT NULL或NULL 并设置了default默认值,当向该表插入一条记录,而记录没有包含该字段的数据时,则该字段的值会被默认值。

MySQL中文字节问题

  MySQL 4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节) ;
  MySQL 5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个。

关于MYSQL Incorrect string value

  • 关于MYSQL Incorrect string value

参考

  • 关于group by 两个或以上条件的分析
  • MySQL中Distinct和Group By语句的基本使用教程
  • 解析mysql中:单表distinct、多表group by查询去除重复记录
  • mysql distinct 去重、group by 用法解析(详细)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL易忘常用的知识点 的相关文章

随机推荐

  • 重拾Hibernate框架——实体类、主键生成策略、session绑定本地线程

    目录 目录实体类持久化类的编写规则Hibernate主键生成策略实体类操作 案例准备对实体类CRUD操作 添加操作查询操作修改操作删除操作saveOrUpdate方法 实体类对象状态Hibernate一级缓存Hibernate事务操作 规范
  • 重拾Hibernate框架——一对多关联

    目录 目录前言一对多映射配置 创建实体类让两个实体类之间相互表示配置映射关系配置核心配置文件Hibernate工具类 一对多关联操作 级联保存级联删除修改操作 inverse属性 前言 这里将以公司和员工为例 xff0c 其中公司与员工是一
  • Visual C++2010学习版详细安装教程

    获取该资源花了本人很长时间 xff0c 为了你们需要VC2010系列的编程软件更容易 xff0c 本人把我找到VC2010系列安装包放在了我的百度网盘分享 xff0c 该资源来之不易 xff0c 请广大朋友们好好珍惜 xff01 由于我换了
  • 重拾Hibernate框架——多对多关联

    目录 目录前言多对多映射配置 创建实体类让两个实体类之间相互表示配置映射关系配置核心配置文件Hibernate工具类 多对多关联操作 级联保存级联删除一般不使用 维护第三张表关系 前言 这里将以用户和角色为例 xff0c 其中用户与角色是多
  • 重拾Hibernate框架——查询操作

    目录 目录前言OID查询对象导航查询HQL查询 查询所有条件查询排序查询分页查询投影查询聚合函数的使用 QBC查询 查询所有条件查询 Restrictions类的常用方法 排序查询 Order类的常用方法 分页查询统计查询 Projecti
  • Struts2框架自学之路——结果页面的配置

    目录 目录Struts2中结果页面的配置 全局结果页面局部结果页面result标签的type属性 Struts2中结果页面的配置 在struts xml核心配置文件中 xff0c 我们可以配置Action类的URL访问路径 xff0c 以及
  • Struts2框架自学之路——Action获取表单数据的方式以及表单数据的封装

    目录 目录Action获取表单数据的方式 通过ActionContext类获取使用ServletActionContext类获取通过特定接口访问在Action中操作域对象 Action中原始方式封装表单数据Struts2中表单数据的封装 属
  • Struts2框架自学之路——值栈

    目录 目录Servlet和Action的区别什么是值栈获取值栈对象值栈的内部结构向值栈存放数据 向值栈存放对象向值栈存放List集合 从值栈获取数据 获取字符串获取对象获取List集合其他操作 EL表达式获取值栈数据 Servlet和Act
  • Struts2框架自学之路——拦截器

    目录 目录Struts2拦截器概述重要知识点自定义拦截器 拦截器的结构自定义登录拦截器 创建登录访问的首页登录页面以及登录操作添加登录拦截器功能 Struts2拦截器概述 Struts2框架封装了很多功能 xff0c 而这些功能大多在拦截器
  • Linux简介及系统安装

    目录 目录Linux简介 Linux的应用Linux与Windows的不同字符界面的优势 Linux系统安装 VMware简介虚拟机的新建与设置注意点Linux的系统分区安装Linux系统Linux系统的安装日志 Linux简介 Linux
  • Linux常用命令

    目录 目录命令基本格式文件处理命令 目录或文件处理Linux中常见目录链接命令 搜索命令 文件搜索命令命令搜索命令字符串搜索命令find命令与grep命令的区别 帮助命令压缩与解压缩命令关机和重启命令其他常用命令 挂载命令用户登录查看和用户
  • 对php-fpm的理解重述

    目录 目录CGI的出现FastCGIphp fpm摘录 FPM的请求处理流程nginx转发请求给FPM 参考 CGI的出现 早期的Web服务器只能处理HTML等静态文件 xff0c 随着PHP等动态语言的出现 xff0c Web Serve
  • Shell编程——基础入门

    目录 目录Shell概述 Shell是什么Shell的分类 脚本执行方式 echo输出命令第一个脚本 Bash的基本功能 命令别名与快捷键历史命令 history命令历史命令的调用命令与文件补全 输入输出重定向 输出重定向输入重定向 多命令
  • Linux命令之<cp命令>

    cp命令用来复制文件或者目录 xff0c 是Linux系统中最常用的命令之一 一般情况下 xff0c shell会设置一个别名 xff0c 在命令行下复制文件时 xff0c 如果目标文件已经存在 xff0c 就会询问是否覆盖 xff0c 不
  • PHPer的进阶探索之旅

    目录 目录前言魔术常量PHP常量详解define和const的区别PHP中的闭包PSR 规范PHP命令空间Web性能优化与HTTP2 前言 作为一个PHPer xff0c 一直认为Java与PHP都 差不多 xff0c 尽管身边的人会说大型
  • Linux下的VIM编辑器

    目录 目录VIM编辑器的概述VIM编辑器的操作模式vim命令的使用操作模式的命令 底行模式的常用指令命令模式的常用指令VIM键位指令图 VIM编辑器的概述 VIM其实VI编辑器的升级版本 VIM相对于VI xff0c 增强的功能 xff1a
  • Linux中的磁盘管理

    目录 目录磁盘管理命令向服务器添加硬盘磁盘分区 分区模式之MBR分区分区模式之GPT分区 分区操作 Linux中的MBR分区Linux中的GPT分区 分区格式化操作挂载分区Linux中的swap分区 磁盘管理命令 xff08 1 xff09
  • Linux中的用户管理

    目录 目录概述关于用户组的配置文件关于用户的配置文件用户和用户组的基本命令 用户组操作用户操作 用户和用户组的进阶命令 主要组与附属组 其他命令 概述 使用操作系统的人 xff0c 我们称之为用户 在Linux中允许多个不同用户同时登录同一
  • Linux中的计划任务Crontab

    目录 目录介绍安装并检查Crontab服务入门栗子Crontab的基本组成 用户任务调度 crontab命令的使用及相关文件Crontab的任务配置格式 系统任务调度系统级任务调度与用户级任务调度 注意事项参考 介绍 Crontab是什么
  • MySQL易忘常用的知识点

    目录 目录前言WHEREDISTINCTGROUP BYSELECT语句完整的执行顺序NOT NULLNULL和default默认值MySQL中文字节问题关于MYSQL Incorrect string value参考 前言 这里介绍MyS