一、单表查询语法

 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之单表查询的更多相关文章

  1. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  2. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  3. day 38 MySQL之单表查询

    MySQL之单表查询   阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...

  4. Mysql数据库单表查询

    1.单表查询语法 #查询数据的本质:mysql会到你本地的硬盘上找到对应的文件,然后打开文件,按照你的查询条件来找出你需要的数据.下面是完整的一个单表查询的语法 select * from,这个sel ...

  5. MySQL之单表查询、多表查询

    一.单表查询: 单个表的查询方法及语法顺序需要通过实际例子来熟悉 先将表数据创建下: mysql> create database singe_t1; # 建个数据库singe_t1 Query ...

  6. MySQL 的单表查询

    单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2 ,...FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY filed LIMIT ...

  7. 四 mysql之单表查询

    目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 1. 什么是分组?为什么要分组? 2. ONLY_FULL_GROUP_BY ...

  8. mysql(单表查询,多表查询,MySQl创建用户和授权,可视化工具Navicat的使用)

    单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT ...

  9. MySQL的单表查询

    单表查询 单表查询语法: select distinct 字段1,字段2... from 表名 where 条件 group by field having筛选 order by 关键字执行的优先级: ...

随机推荐

  1. MGF 637: Financial Modeling

    MGF 637: Financial ModelingSpring 2019Extra Credit AssignmentInstructions: This is an extra credit o ...

  2. form提交循环

    使用ajax提交数据时,如果数据非常多,提交会比较麻烦,这时可以给form表一个id=“form”,用serializeArray()方法进行提交. erializeArray()方法通过序列化表单值 ...

  3. ORACLE——count() 统计函数的使用

    SQL中用于统计的函数时:COUNT(). 针对count函数的使用做一个记录,很简单. 首先我数据库中建个表TEST,数据如下: 表中ID和NAME都是不重复的数据,HOME.TEL.PATH中存在 ...

  4. android studio中编译单个文件

    网上搜到比较全的是这个:https://blog.csdn.net/u011368551/article/details/51980678 另外关于gradle如何编译单个文件,参考 https:// ...

  5. 斐讯面试记录—TCP滑动窗口及拥塞控制

    TCP协议作为一个可靠的面向流的传输协议,其可靠性是由流量控制和滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现. 一.滑动窗口协议 1. “窗口”对应的是一段可以被发送者发送的字节序 ...

  6. Java web开发环境搭配

    1.安装并配置JDK环境(1)安装过程省略(建议安装在自己指定的统一目录下,方便后期查找). (2)配置环境变量 JAVA_HOME:  C:\Java\jdk\jdk1.7.0_45 (jdk安装目 ...

  7. jmeter获取mysql数据并作为请求参数使用

    1.将mysql-connector-java-5.1.22-bin.jar包放到jmeter的lib目录下,重启jmeter 2.测试计划中添加jdbc connection,右键测试计划----添 ...

  8. Solution about MB STAR C4, MB STAR C5 Update and can not test vehicles problems

    Solution about MB Star C4, MB Star C5 Update and can not test vehicles problems 1. Make sure your co ...

  9. Docker Overlay 介绍

    Overlay Network Overlay Network:属于Docker网络驱动,基于VXLAN封装实现Docker原生Overlay网络. Overlay Network:覆盖网络,在基础网 ...

  10. 5.Dubbo原理解析-代理之Javassist字节码技术生成代理 (转)

    转载自  斩秋的专栏  http://blog.csdn.net/quhongwei_zhanqiu/article/details/41597219 JavassistProxyFactory:利用 ...