MySQL的一些基础学习总结(三)

插入数据

通过前两节,我们已经完成了student、teacher以及classes表的创建,并完成了三个表之间的关系创建,在正式开始本节内容之前,我们先向这三个表中利用第一节的知识插入一部分数据,展示如下:
classes表,包含四个班级,及其对应的人数和班主任。
在这里插入图片描述
student表,包含学生id、姓名、性别、年龄、班级以及班主任。
在这里插入图片描述
teacher表包含每位老师的id、姓名、教授课程、性别、年龄以及管理的班级。
在这里插入图片描述

单个表的查询功能

以teacher为例子,取得所有老师的数据就不展示了,之前一直在用。

按年龄低到高取得老师资料

select *
from `teacher`
order by `age`;

在age后面加上desc,则表示按照年龄从高到低取得老师资料。

取得年纪最大的老师

select *
from `teacher`
order by `age` desc
limit 1;

limit后面表示想要取得的数据项,1就表示取得第一项,2的话就是表示取得前两项。

取得所有老师的名字

select `name` from `teacher`;
select distinct `course` from `teacher`;

第一行实现题目功能,第二行表示,取得所有老师所教授的课程,只不过在select后多加一个distinct 参数,具体表示什么,这儿先卖个关子,大家可自行尝试下。

aggregate functions 聚合函数

在MySQL中,聚合函数(Aggregate Functions)是一组用于计算和汇总数据的函数,这些函数通常用于在SELECT语句中的查询中。

以下是一些常见的聚合函数:
COUNT:计算指定列中行的数量(或返回指定表的行数)。
SUM:计算指定列的值的总和。
AVG:计算指定列的值的平均值。
MAX:返回指定列的最大值。
MIN:返回指定列的最小值。
下面展示两个的用法:

取得所有年纪大于40岁老师的人数

select count(*) 
from `teacher`
where `age`>40;

取得年龄最小的老师的年纪

select min(`age`) from `teacher`;

通配符(Wildcards)

在MySQL中,通配符(Wildcards)是用于模糊匹配的特殊字符,它们可以帮助我们在查询中匹配不完全的值。MySQL支持以下两种通配符:
百分号(%):匹配任意数量的字符(包括零个字符)。
下划线(_):匹配单个字符。
以下是一些示例,演示如何使用通配符:

找到姓周的老师

select * 
from `teacher` 
where `name` like '艾%';

找到教授高三的老师

select * 
from `teacher` 
where `manage_class` like '_三__';

多个表之间的操作

union 联集

MySQL中的UNION是用于将两个或多个SELECT语句的结果集合并成一个结果集的操作符。

UNION操作符必须满足以下条件:

1.SELECT语句中的列数必须相同
2.列的数据类型必须兼容,或者可以通过隐式转换变成兼容类型
3.结果集中的列名来自于第一个SELECT语句中的列名

UNION操作符还可以与其他操作符组合使用,例如UNION ALL、INTERSECT和EXCEPT/MINUS。

UNION ALL: 将结果集中的重复行也包含在内。
INTERSECT:返回两个SELECT语句的结果集的交集。
EXCEPT/MINUS:返回第一个SELECT语句的结果集中除去第二个SELECT语句的结果集中的行后的剩余行。
需要注意的是,UNION操作符会对结果集进行排序和去重的操作,因此可能会影响查询性能。如果确保结果集不需要排序和去重,可以使用UNION ALL操作符代替UNION。

获取所有学生和老师的姓名信息

select `name`
from `student`
union
select `name`
from `teacher`;

join 连接

MySQL中的JOIN是用于将两个或多个表中的行基于一个共同的列连接起来的操作符。JOIN操作通常使用在多个表之间进行关联查询时,可以根据表之间的关系将多个表中的数据联合起来查询。

MySQL中支持以下类型的JOIN操作:

INNER JOIN(内连接):返回两个表中匹配的行
LEFT JOIN(左连接):返回左表中所有的行,以及右表中匹配的行(如果没有匹配,则用NULL填充右表的列)
RIGHT JOIN(右连接):返回右表中所有的行,以及左表中匹配的行(如果没有匹配,则用NULL填充左表的列)
FULL OUTER JOIN(全外连接):返回两个表中所有的行,如果某个表中没有匹配的行,则用NULL填充对应的列
JOIN操作通常需要指定连接条件,也就是表之间进行连接的列。连接条件可以是相等条件,也可以是其他条件,例如大于、小于、LIKE等。连接条件通常在ON子句中指定。

查看每位学生对应的班级人数

select `student_id`,`name`,`num_people`
from `student` left join `classes`
on `classes`.`class_id`=`student`.`class`;

subquery子查询

子查询,也称为内部查询或嵌套查询,是在 SQL 查询中嵌入的一个查询语句。子查询可以用作其他查询中的一部分,通常用于限制结果集、过滤数据或用于比较、计算和联接操作。
MySQL 支持子查询,也称为嵌套查询,允许在 SELECT、UPDATE、INSERT、DELETE、WHERE 等语句中嵌套一个完整的查询语句作为子查询。
例如:找出学生小红的班主任教授的课程是什么

select `course`
from `teacher`
where `manage_class`=(
	select `class`
	from `student`
	where `name`='小红'
);

总结

有关数据查询的操作比较多,也比较零散,这里总结的可能有些许不全,不过,对于基础学习,应该差不多够用,对与mysql的学习也算入门了。
其次,我这里建立的school数据库也存在些许问题,关系也不太明朗,目的是通过其记录所学知识,希望广大初学者在参考我这三篇文章时,能够自己建立独立数据库,将我的这些总结只做一个参考。
至此,对于mysql的基础入门学习就总结到这里。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值