MySQL数据库---查询大全

一.简单查询

1.列出表的所有字段

语句:
select 字段1,字段2,… from 表名;

实例:查询一个有id,name,teacher的表
在这里插入图片描述

快捷语句:
select * from 表名;
在这里插入图片描述
注意:与列出每个字段名不同的是,列出字段名,显示的行就按列的顺序来,但是用 * 只显示默认顺序

2.查询指定字段数据

语句:
select 字段名1,… from 表名;

注:想找哪一个,就输入要找的字段
实例:
在这里插入图片描述

3.查询不重复数据

语句:
select distinct 字段名1,… from 表名;

实例:
在刚才的表中添加一行字段,是杜老师的,之后通过不重复查询语句,看出杜老师值显示一次.
在这里插入图片描述

4.in查询

需要查询的目标记录限定在某个集合中的时候,在MySQL中可以使用关键字IN来实现

语句:
select 字段名 from 表名 where 字段名in(值1,值2);

与利用=查询有点相似
实例:
在这里插入图片描述
也可以使用NOT IN可以反向查询非集合中的数据

5.between and查询

用来实现判断字段的数值是否在指定范围内的条件查询。

语句:
select * from 表名 where 列名 between 小数值 and 大数值;

实例:
查询一个成绩表
在这里插入图片描述

(1)not

通过关键字NOT设置反向查询非查询范围的条件

语句:
select * from 表名 where 列名 not between 小数值 and 大数值;

实例:在这里插入图片描述

(2)or用法

实例:
在这里插入图片描述

6.like模糊查询

当我们只想用字符串中间的一部分特征查找含有特征字串的信息时,MySQL提供了关键字LIKE来实现模糊查询

like查询需要通配符,MySQL的通配符有两种
在这里插入图片描述

*格式:select from 表名 where 字段名 like 值;

(1)%使用

实例:
在这里插入图片描述

在这里插入图片描述

(2)_使用

在这里插入图片描述

7,对查询结果进行排序

*语句:
select from 表名 order by 字段名[ASC|DESC];

实例:
在这里插入图片描述

8.简单分组查询

对数据进行分组查询一般时建立在统计函数之上,先分组,在对每个组统计。
语句:
select function(字段名)
from 表名 where group 字段名;

实例:先建立一个grade1的表,然后对它进行操作,求出每个班级的数学,语文,英语的平均成绩.
在这里插入图片描述

9.统计分组查询

只实现简单的分组查询有时候可能没有任何实际意义,因为关键字GROUP
BY单独使用时,默认查询出每个分组中随机的一条记录,具有很大的不确定性,一般建议将统计分组关键字与统计函数一起使用。

语句:
select function(字段名),group_concat(字段名)
from 表名 where group 字段名;

实例:
对一个分组进行查询时,如果不使用group_concat连接一个,那么只会显示一条数据,比如下面的操作,如果用简单分组查询,对班级分组,查找每个班的数学和,和这些学生,那么学生只会显示第一个
但如果用统计,那么会显示全部
在这里插入图片描述

二.联合查询

联合多个表来实现查询叫做联合查询

小贴士:当表名特别长时,直接使用表名很不方便
,或者在实现自连接操作时,直接使用表名无法区别表。
为了解决这一类问题,
MySQL提供了一种机制来为表取别名:字段名/表名 as 别名

准备工作,先建立一个学生类,一个班级类
在这里插入图片描述

1.内连接查询

2张表匹配的行才能显示的连接方式在Mysql 中称之为内连接: INNER JOIN
> 语句:
select 字段名 from 表名 inner jion on condition;

(1).等值连接

等值连接就是在关键字ON后的匹配条件中通过等于关系运算符(=)来实现等值条件

实例:
连接学生和班级表,查询class.id和student.class_id相等的记录
在这里插入图片描述
或者换一种方式:
只查询class.id和student.class_id相等的学生姓名和班级
在这里插入图片描述

(2).不等值连接

内连接查询中的不等连接就是在关键字ON后的匹配条件中通过除了等于关系运算符来实现不等条件外,还可以使用关系运算符,包含“>”“>=”“<”“<=”和“!=”等运算符号。

实例:
在这里插入图片描述

(3).自连接

内连接查询中存在一种特殊的等值连接——自连接。所谓自连接,就是指表与其自身进行连接

实例:查询学生 ”小红 ”所在班级的其他学生
在这里插入图片描述

2.外连接查询

当我们在查询数据时,要求返回所操作表中至少一个表的所有数据记录,使用外连接
所谓的左右就是在语句的左边还是右边
关键字:left/right outer(可省略)

(1)左连接

左边的表的记录必须全部显示(除了匹配的,剩下的即使不匹配的也要输出,比如实例第二条语句的最后一行记录)
实例:第一个语句将student设置为必须全部显示的表,
第二个语句将class设置为必须显示的表,因为103 student中没有匹配的,所以后面的输出NULL;
在这里插入图片描述

(2)右连接

与左连接相似,只是把右边的表设置为全部显示表.
并且表字段显示的顺序是按语句顺序来的,与关键字left和right无关,只与写的顺序有关,比如第一个语句,先显示student字段再显示class字段.
在这里插入图片描述

3.合并查询

在MySQL中通过关键字UNION来实现合并操作,即可以通过其将多个SELECT语句的查询结果合并在一起,组成新的关系

关键字:
UNION | UNION ALL
区别:
多个选择语句select 的列数相同就可以合并,union和union all的主要区别是union all是把结果集直接合并在一起,而union 是将union all后的结果再执行一次distinct,去除重复的记录后的结果。
实例:
注:每个表查询的时候列数一定要统一

在这里插入图片描述

4.子查询

所谓子查询,是指在一个查询中嵌套了其他的若干查询,即在一个SELECT查询语句的WHERE或FROM子句中包含另一个SELECT查询语句。在查询语句中,外层SELECT查询语句称为主查询,WHERE子句中的SELECT查询语句被称为子查询,也被称为嵌套查询。

(1).比较运算符

子查询可以使用比较运算符。这些比较运算符包括=、!=、>、>=、<、<=和<>等。其中,<>与!=是等价的。比较运算符在子查询中使用得非常广泛,如查询分数、年龄、价格和收入等。

实例:
查询student 表中“小花”所在班级班主任的名字
首先嵌套条件中,找到小红所在的班级id,再通过这个id找到该班级的班主任
使用比较运算符时,select 子句获得的记录数不能大于1条!!!
在这里插入图片描述

(2).in

可以用这个查询多个数据
实例:
在这里插入图片描述

(3).exisis

关键字EXISTS表示存在,后面的参数是一个任意的子查询,系统对子查询进行运算以判断它是否返回行;如果至少返回一行,那么EXISTS的结果为true,此时外层语句将进行查询;如果子查询没有返回任何行,那么EXISTS返回的结果是false,此时外层语句将不进行查询。

实例:
如果102班存在学生记录,就查询102班的班级信息的记录。
在这里插入图片描述

(4).any

关键字ANY表示满足其中任一条件。
实例:
查询获得奖学金的同学
在这里插入图片描述

(5).all

与any相似,差别就是all必须全部满足条件才行,而any只需满足一条就可以。
实例:
查询数据库school的表student中哪些学生可以获得一等奖学
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值