MySQL查询数据

一. 单表查询

  1. 查询所有字段
    在select语句中用*通配符查询所有字段:select * from 表名;
    在select语句中指定所有字段:select 字段1,字段2,...,字段n from 表名

  2. 查询指定字段
    查询单个字段:select 字段 from 表名
    查询多个字段:select 字段1,字段2,...,字段n from 表名

  3. 查询指定记录
    select 字段1,字段2,...,字段n from 表名 where 查询条件

  4. 带in关键字的查询
    举例:select id,name,price from 表名 where id in(10,20)order by name

  5. 带between and的范围查询
    举例:select id,name,price from 表名 where id between 1 and 5

  6. 带like的字符匹配查询
    (1)% 通配符,可匹配任意长度的字符
    查询以a开头的name:select id,name from 表名 where name like 'a%'
    查询以a开头结尾的name:select id,name from 表名 where name like 'a%b'

    (2)_ 通配符,一次只能匹配任意一个字符
    查询以a结尾,且a前只有两个字母的name:select id,name from 表名 where name like '--b'

  7. 查询空值
    举例:select id,name,price from 表名 where id is null

  8. 带and的多条件查询
    举例:select id,name,price from 表名 where id = ‘1’ and price > 2

  9. 带or的多条件查询
    举例:select id,name,price from 表名 where id = ‘1’ or id = '3'

  10. 查询结果不重复
    select distinct 字段 from 表明

  11. 对查询结果排序
    (1)单列排序
    select 字段1 from 表名 order by 字段1

    (2)多列排序
    select 字段1,字段2 from 表名 order by 字段1,字段2

    (3)指定方向排序
    默认是升序,可通过desc实现降序:select 字段1 , 字段2 from 表名 order by 字段1 desc

  12. 分组查询
    [group by 字段] [having <条件表达式>]
    (1)创建分组
    举例1:select name, count(*) as total from zoo group by name
    【拓展】count()返回某列的行数
    count(*):计算表的总行数,不忽略空值;
    count(字段名):计算指定列下总的行数,忽略空值;

    举例2:可使用group_by 将每个分组中各个字段的值显示出来
    select name, group_by (id) as names from zoo group by name

    (2)使用having过滤分组
    group by 和having共同限定显示记录所需满足的条件,且只显示满足条件的分组。
    select name, group_by (id) as names from zoo group by name having count(id) > 2
    【拓展】where和having的区别?
    二者均用来过滤数据。having在数据分组之后进行过滤来选择分组,而where是在分组之前用来选择记录,且where排除的记录不包括在分组中。

    (3)使用with rollup来统计记录数量
    select name ,count (*)as total from zoo group by name with rollup

    (4)多字段分组
    select * from 表名 group by 字段1,字段2,... ,字段n

    (5)与order by组合使用
    ⚠️rollup和order by互斥

  13. 使用limit限制查询结果的数量
    limit [位置偏移量,] 行数
    举例:从第三个记录开始,显示之后的四条记录
    select * from 表名 limit 3, 4

二. 使用聚合函数查询

函数作用
avg()返回某列的平均值
count()返回某列的行数
max()返回某列的最大值
min()返回某列的最小值
sum()返回某列值的和

三. 连接查询

  1. 内连接查询
    只有满足条件的记录才显示

  2. 外连接查询
    左连接:返回包括左表中的所有记录和右表中连接字段相等的记录;
    右连接:返回包括右表中的所有记录和左表中连接字段相等的记录;

  3. 复合条件连接查询

四. 子查询

五. 合并查询结果

  • 利用union关键字,可给出多条select语句,并将查询结果组合成结果集。

  • 合并时,两个表对应的列数和数据格式必须相同;

  • union不使用关键字all,执行时候删除重复的记录,返回的行都是唯一的;

  • 使用all关键字,不删除重复行也不会结果进行自动排序。

    select column,...from table1
    union [all]
    select column,...from table2
    

【拓展】

  1. distinct可应用于所有列吗?
    应用于所有列。

  2. order by和limit能混合使用吗?
    使用order by时,需保证在from之后,使用limit时,需保证在order by 之后。

  3. 什么时候使用引号?
    单引号是用来限定字符串,将值于字符串比较需要单引号,于数值比较则不需要。

  4. 使用通配符格式正确,却没有查找出符合条件的记录?
    可能是不小心把两端带有空格的记录保存到记录中。如like‘%a’匹配时,e前多了一个空格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值