单表查询


单表查询语法及优先级
语法
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中不支持非贪婪匹配
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值