单表查询


单表查询语法及优先级
语法
SELECT 字段1,字段2… FROM 表名
WHERE 条件
GROUP BY field
HAVING 筛选
ORDER BY field
LIMIT 限制条数
在这里插入图片描述
优先级
from 1.找到表:from
where 2.拿着where指定的约束条件,去文件/表中取出一条条记录
group by 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
having 4.将分组的结果进行having过滤
select 5.执行select
distinct 6.去重
order by 7.将结果按条件排序:order by
limit 8.限制结果的显示条数

先创建一个表
create table employee(
-> id int not null unique auto_increment,
-> emp_name varchar(20) not null,
-> sex enum(‘male’,‘female’) not null default ‘male’, #大部分是男的
-> age int(3) unsigned not null default 28,
-> hire_date date not null,
-> post varchar(50),
-> post_comment varchar(100),
-> salary double(15,2),
-> office int, #一个部门一个屋子
-> depart_id int
-> );
插入数据
insert into employee(emp_name,sex,age,hire_date,post,salary,office,depart_id) values
-> (‘laura’,‘male’,18,‘20170301’,‘teacher’,7300.33,401,1),
-> (‘wendy’,‘male’,78,‘20150302’,‘teacher’,1000000.31,401,1),
-> (‘iris’,‘male’,81,‘20130305’,‘teacher’,8300,401,1),
-> (‘david’,‘male’,73,‘20140701’,‘teacher’,3500,401,1),
-> (‘sinala’,‘male’,28,‘20121101’,‘teacher’,2100,401,1),
-> (‘john’,‘female’,18,‘20110211’,‘teacher’,9000,401,1),
-> (‘shaer’,‘male’,18,‘19000301’,‘teacher’,30000,401,1),
-> (‘guojin’,‘male’,48,‘20101111’,‘teacher’,10000,401,1),
->
-> (‘一一’,‘female’,48,‘20150311’,‘sale’,3000.13,402,2),
-> (‘丫丫’,‘female’,38,‘20101101’,‘sale’,2000.35,402,2),
-> (‘丁丁’,‘female’,18,‘20110312’,‘sale’,1000.37,402,2),
-> (‘星星’,‘female’,18,‘20160513’,‘sale’,3000.29,402,2),
-> (‘格格’,‘female’,28,‘20170127’,‘sale’,4000.33,402,2),
->
-> (‘张野’,‘male’,28,‘20160311’,‘operation’,10000.13,403,3),
-> (‘程咬金’,‘male’,18,‘19970312’,‘operation’,20000,403,3),
-> (‘程咬银’,‘female’,18,‘20130311’,‘operation’,19000,403,3),
-> (‘程咬铜’,‘male’,18,‘20150411’,‘operation’,18000,403,3),
-> (‘程咬铁’,‘female’,18,‘20140512’,‘operation’,17000,403,3)
-> ;
查看表中记录
单表查询

简单查询

  1. 查询其中的几个字段
    单表查询

  2. 避免重复
    针对某一列去重 distinct:不同的
    单表查询

  3. 通过四则运算查询

    • 查看年薪
      单表查询

    • 重命名
      单表查询

    • 也可以不用as,直接用空格,字段与字段之间用逗号
      单表查询

  4. 显示格式

    1. 对查询的字段统一定义显示格式 concat: 合并,连接单表查询
      单表查询
      • 指定分割符
        把要查询的字段用:分开单表查询
  5. case 语句:可以加上一些条件,根据不同的条件显示不同的结果,使结果显示出的效果不一样,相对于contat显示统一的结果。
    语法
    SELECT
    ( # 开启一个case语句
    CASE # 条件的开始
    WHEN emp_name = ‘jingliyang’ THEN # 类似于if条件语句 如果满足此条件
    emp_name # 就显示此结果
    WHEN emp_name = ‘alex’ THEN
    CONCAT(emp_name,’_BIGSB’)
    ELSE # 除此之外
    concat(emp_name, ‘SB’)
    END # 条件结束
    ) as new_name # 给筛选出来的这一列起别名
    FROM
    emp; # 表名

单表查询

where 约束

  1. 比较运算符 : >, <, >=, <=, !=
    单表查询

单表查询
2. between 40 and 200 : 在40 到200 之间
单表查询
3. in(80, 90, 100) 范围描述,值是80或90或100
单表查询
单表查询

  1. like ‘laura%’ 看起来像laura开头的
    通配符pattern 可以是% 或_
    %表示任意多字符
    _表示一个字符
    单表查询

单表查询
5. 逻辑运算符: 在多个条件可以使用逻辑运算符and or not
单表查询
单表查询

group by

  • 单独使用group by 关键字分组
    在表面找到所有信息根据post分组,post有三组,于是显示三个选项
    单表查询
  • distinct 只能对一个字段进行筛选,而group by 可对某一字段进行分组了之后再进行聚合操作,如对每个组进行平均薪资的计算。avg : average
    单表查询
    单表查询
    单表查询
    单表查询
  • group_concat() 把一组里面的内容拼接
    单表查询
    单表查询
    单表查询
    单表查询

聚合函数

  • count 计数
    单表查询
  • max 求最大值
    单表查询
  • sum 求和
    单表查询

having 过滤

单表查询
单表查询
单表查询
单表查询

order by 排序

  • 按单列排序
    默认从小到大排序,ascent 增加,上升 , descent:下降
    单表查询
    单表查询
  • 按多列排
    单表查询
    单表查询

limit 限制显示的 查询记录数

默认初始位置为0
单表查询
limit 0,3 从第0 开始,先显示第一条
单表查询
单表查询

RegExp 正则表达式

reg: regular 规则 ,指定的规则
exp:expression 表达式
在mysql中不支持非贪婪匹配
单表查询