一、单表查询语法

 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. mysql-proxy 简介

    # 背景 今天同事分享的主题就是mysql-proxy,于是下来自己了解下,不求精通,只求知道这个玩意 # 简介 mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个my ...

  2. C++ 11 多线程下std::unique_lock与std::lock_guard的区别和用法

    这里主要介绍std::unique_lock与std::lock_guard的区别用法 先说简单的 一.std::lock_guard的用法 std::lock_guard其实就是简单的RAII封装, ...

  3. Spring事物管理--相关要点及配置事物管理器

    事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...

  4. GDB调试原理——ptrace系统调用

    本文由霸气的菠萝原创,转载请注明出处:http://www.cnblogs.com/xsln/p/ptrace.html 全部关于gdb的文章索引请点这里 引子: gdb基本上大家都在用,你有没有想过 ...

  5. Unity3D加密保护解决方案

    精锐5加密锁支持Unity3D代码及资源保护,并提供授权方案 产品简介 可使用Virbox Protector加壳工具对Unity3D代码进行加密.Unity3D使用开源mono C#语法,代码会编译 ...

  6. 微信小程序 条件渲染 wx:if

    1.在框架中,我们用wx:if="{{condition}}"来判断是否需要渲染该代码块 <view wx:if="{{condition}}"> ...

  7. Kafka笔记2(安装)

    1.安装java 2.安装zookeeper 3.安装kafka Broker 测试:发布消息 测试:读取消息 4,broker配置 常规配置: broker.id: 默认0  每个broker都需要 ...

  8. nodejs之querystring(查询字符串)

    querystring模块经常用在URL参数的处理,一共有四个方法: 1. stringify (字符串转对象) 2. parse (对象转字符串) 3. escape (对字符串进行URL编码) 4 ...

  9. MySQL变量的使用

    在mysql文档中,mysql变量可分为两大类,即系统变量和用户变量. 但根据实际应用又被细化为四种类型,即局部变量.用户变量.会话变量和全局变量. 一.局部变量 mysql局部变量,只能用在begi ...

  10. Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...