【MySQL】数据库的查询操作

1. 查询表中的所有数据

select * from [表名];

注意:

这种方式仅限于在测试环境中使用,千万不能在生产环境的服务器上执行这样的SQL,因为生产环境的服务器压力本来就很大,生产环境的服务器(数据库)数据量非常大,一旦执行 select * 操作,可能就会导致服务器死记或宕机

 

2. 查询表一行中 N 个列数据的和

select [列名1] + [列名2] + ... + [列名n] from [表名];

 

3. 给查询出来的列取一个别名

select [列名] as from [表名];

4. 查询出来的列进行去重

select distinct [列名] from exam_result [表名];

去重查找,得到的结果表的行数和原来的可能是不一样的,select 得到的结果相当于是一张表(MySQL 构造的一个临时表),去重操作也能指定多列来去重,但是要多列都完全一样才能被去重

使用 distinct 的时候必须要把对应的列都放到 distinct 后面

 

5. 排序操作

order by 指定针对哪个列进行排序

select * from [表名] order by [列名] ;    //升序排列
select * from [表名] order by [列名] asc;    //升序排列
select * from [表名] order by [列名] desc;   //降序排列

 

对总成绩进行降序排序

 

利用别名来查询

 

如果有 null 的时候默认为最小值

 

6. 条件查询(比较复杂的查询,也比较常见)

借助 where 来实现

条件查询中涉及的运算符

> >= < <=:没有特殊含义

=:表示比较相等,而不是赋值(update 中的 = 相当于赋值)

< = > :比较相等,能够针对 null 进行比较【如果表达式 null = null  => 相当于条件不成立,如果 null <=>  null 相当于 条件成立】

!= :不等于

between x and y : 表示在 [x,y] 闭区间内都是满足条件

in (若干个选项):当前值在 ()中的若干个选项里匹配任意一个都是满足条件

is null:判断为空的

is not null:专门用于判定值是否为 null

like :模糊匹配

and:逻辑与

or:逻辑或

not:逻取反

查找列中为null的行

 

查找数学不及格的同学信息(数字< 60)

 

查找所有同学中 语文 > 英语 的同学信息

 

查找总分在 200 分以下的同学

注意,这是一个错误写法,where 里面不支持 别名

正确写法:

 

查询语文成绩大于 60 并且 英语成绩也大于 60 的同学

 

查询语文成绩大于 80 或者 英语成绩大于 80 的同学

只需要把上一个代码中的 and 换成 or 即可

查询语文成绩在 [60,70] 之间的同学

 

查询数学成绩是 80 或者 88.9 的同学

 

7. 模糊查询

借助 % 或者 _ 来代替任意字符

用 like 表示模糊查询

select * from [表名] where name like '%[字符串]%';   //匹配任意多个
select * from [表名] where name like '[字符串]_';    //匹配严格的一个任意字符,_的个数代表字符的数量

查询名字中带孙的同学

 查询名字为 孙xx 的同学信息

 

如果只用一个下划线那么就找不到匹配的,因为我的表中姓孙的同学名字都是两个字

 

like 不仅仅能针对字符串进行匹配,也能针对数字进行匹配

查找语文成绩带 9 的同学

 

查找数学成绩 8 开头的同学

 

进行复杂条件查询的时候,存在一个“最左原则”

当我再添加一个同学信息到表中后

 

查找同学中姓孙并且数学成绩大于 60 的同学

可以看到我这两种写法查询到的结果是一样的,此时两个条件先后熟悉怒不影响最终的结果,但是我们建议把 name like 放在左边,也就是第一种方法为推荐写法,因为第一种写法会先过滤出姓孙的同学,也就是数据只剩下两条了,但是先计算 math > 60 的情况,过滤还剩下五条,效率就比较低。

最左原则就是真毒第一个条件遍历表中的所有记录,再遍历第二个条件进行遍历所以多个条件再一起联合生效的时候,一般要求哪个条件能过滤掉的数据多(剩下的数据少),则把该条件放到左侧

 

8. 分页查询

借助 limit 操作来实现

上面说过,select * 这个操作步能在生产环境下使用,同时,上面介绍的除了条件查询之外都是不能直接在生产环境下使用的,条件查找也不保险,此时我们就要借助到分页查询,这是最保险的方式,相当于把查找结果只选取其中的一小部分来作为结果

 

查找同学信息中总成绩的前三名

 

查找同学信息中总分最高的 4~6 名

offset 当成下标,从 3 开始后面的 3 个同学

 

如果 limit 太大,超出记录的数目,返回结果不会有任何错误

 

如果 offset 过大,得到的结果可能是一个空的结果

 

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值