day037 mysql之单表查询
一、单表查询语法
select distinct 字段1,字段2,... from 库名.表名
where 条件
group by 字段
having 筛选条件
order by 字段
limit 限制显示条数
二、关键字执行优先级
from > where > group by > having > select > distinct > order by > limit
执行步骤:
1、from 找到表
2、 拿着where指定的约束条件,去表中取一条条记录
3、将取出的记录按group by 分组,如果没有group by 则整体为一组
4、将分组结束进行having条件筛选
5、执行select
6、distinct 去重
7、将结果按order by 排序
8、limit限制显示条数
三、简单查询
select * from employee; #查询表employee 中所有信息 select name,salary from employee; #查询表employee 中姓名,工资 #去重
select distinct post from employee; #查询post字段信息并去重 #通过四则运算查询
select salary*12 from employee; #查询工资乘以12 #自定义显示格式
select concat("姓名: ",name," 年薪: ", salary*12) as gongzibiao from employee; # 表头和数据都是自己定义的格式
#concat()用于连接字符串 concat_ws() 将第一个参数作为分隔符进行字符串拼接
四、where 条件
where 不能使用聚合函数
where语句可以使用的有;
1、比较运算符: = > < >= <= !=
2、逻辑运算 and or not ,在多个条件中可以直接使用
3、between a and b
4、in(x, y, z)
5、like 模糊匹配 %表示匹配一个字符,_表示匹配一个字符
#单条件查询
select name from employee where post ='sale'; #多条件查询
select name from employee where post='sale' and asalary >1000; #between and 关键字
select name from employee where salary between 1000 and 20000; # is 关键字 (用于判断是否为null)
select post from employee where post_comment is NULL; # in 关键字
select name from employee where salary in(3000,4000,8000); #like 关键字
select * from employee where name like"al%" ; # %表示匹配所有字符
select * from employee where name like"al_" ; # _表示匹配任意一个字符
五、分组group by
大前提:
分组发生字where之后,即分组是基于where之后得到的记录而进行的。
可以按照任意字段分组,但是分组完毕后,比如group by post,只能查看post字段,如果想查看
组内信息,需要借助于聚合函数。
聚合函数:
聚合函数聚合的是组的内容,如没有分组,则默认是一组
group_concat() #字符串拼接
select group_concat(name) from meployee group by post; count() #统计个数
select count(*) from employee; max() #最大值
select max(salary) from employee ; min() #最小值
select min(salary) from employee; avg() #平均数
select avg(salary) from employee; sum() #总数
select sum(salary) from employee;
练习:
#统计各部门年龄在30岁以上员工的平均工资
select post ,avg(salary) from employee where age>=30 group by post
六、having 过滤
having的语法格式和where是一模一样的,只不过having是在分组之后进行的进一步的过滤,where不能使用聚合函数,having是可以使用聚合函数的
#!!!执行优先级从高到低:where > group by > having
#1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。 #2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,having是可以使用聚合函数
#练习:
统计各部门年龄在30岁及以上员工的平均薪资,并且保留平均工资大于10000的部门
select post, avg(salary) from employee where age>=30 group by post having avg(salary)>10000;
七、order by 排序
select * from employee order by salary; #按工资排序 默认是升序
select * from employee order by salary asc; # asc 表示升序
select * from employee order by salary desc; # desc 表示降序
select * from employee order by age, salary desc #先按年龄升序 再按工资降序排列
八、limit 限制记录条数
可以应用于分页显示
# 练习
select * from employee order by salary desc limit 3; #取三条数据
select * from employee order by salary desc limit 0,5 ; #从索引0开始,取五条数据,默认第一条数据索引是0
select * from employee order by salary desc limit 5,5 ; #从索引5开始,取五条数据
九、使用正则表达式
格式:
select * from employee where name regexp 正则表达式;
# 练习
select * from employee where name regexp ' ^jin.*[g|n]$ ' ; #查询所有员工中名字是jin开头,n或g结尾的员工信息
####
对字符串的匹配方式:
1、精确匹配 where name ='dasab' ;
2、模糊匹配 where name like 'da%' ;
3、正则表达式 where name regexp 'b$' ;
day037 mysql之单表查询的更多相关文章
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- Mariadb/MySQL数据库单表查询基本操作及DML语句
Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...
- day 38 MySQL之单表查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...
- Mysql数据库单表查询
1.单表查询语法 #查询数据的本质:mysql会到你本地的硬盘上找到对应的文件,然后打开文件,按照你的查询条件来找出你需要的数据.下面是完整的一个单表查询的语法 select * from,这个sel ...
- MySQL之单表查询、多表查询
一.单表查询: 单个表的查询方法及语法顺序需要通过实际例子来熟悉 先将表数据创建下: mysql> create database singe_t1; # 建个数据库singe_t1 Query ...
- MySQL 的单表查询
单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2 ,...FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY filed LIMIT ...
- 四 mysql之单表查询
目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 1. 什么是分组?为什么要分组? 2. ONLY_FULL_GROUP_BY ...
- mysql(单表查询,多表查询,MySQl创建用户和授权,可视化工具Navicat的使用)
单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT ...
- MySQL的单表查询
单表查询 单表查询语法: select distinct 字段1,字段2... from 表名 where 条件 group by field having筛选 order by 关键字执行的优先级: ...
随机推荐
- python框架之Django(15)-contenttype模块
假如有一个书城系统,需要给作者和书籍加上评论功能.如果给每个表单独建一个评论表,那么我们以后要扩展其它模块评论功能的时候,还需要随之新建一张评论表,会显得很冗余.对于这种情况,Django 给我们提供 ...
- 详解C# 网络编程系列:实现类似QQ的即时通信程序
https://www.jb51.net/article/101289.htm 引言: 前面专题中介绍了UDP.TCP和P2P编程,并且通过一些小的示例来让大家更好的理解它们的工作原理以及怎样.Net ...
- xxnet to google部署
1,github上下载xxnet项目 2,启动(点击 start) 3,确定启动好后访问 www.google.com (此时是可以访问的) 4,注册google账号或直接登陆 5,访问 https: ...
- AIX更改用户组
1:先 修改 user: smit chuser 把id 号给改了.成功! 2:在 修改group 的时候报警告: smit chgroup : can not update the /etc/pas ...
- springboot 没有跳转到指定页面
Whitelabel Error Page 解决办法,添加依赖: <dependency> <groupId>org.springframework.boot</gr ...
- python_study-1
# Author:larlly'''函数1.在Python交互式命令行下,可以直接输入代码,然后执行,并立刻得到结果.2.文本编辑器推荐俩款 http://www.sublimetext.com/ h ...
- jQuery图片无缝轮播
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- kmp匹配详解
字符串算法都是毒瘤的 一.kmp算法的用处 在文本串中查找模式串的位置,数量 文本串:要在这个字符串查找模式串 模式串:在文本串中查找的字符串 全是废话 二.kmp算法的思想 话说kmp好像是3个发明 ...
- python 排序算法
冒泡排序: 一. 冒泡排序的定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进 ...
- StringUtils工具类常用方法汇总(判空、转换、移除、替换、反转)
Apache commons lang3包下的StringUtils工具类中封装了一些字符串操作的方法,非常实用,使用起来也非常方便.最近自己也经常在项目中使用到了里面的一些方法,在这里将常用的方法总 ...