MySql查询方式有哪些

网友投稿 760 2023-07-08

MySql查询方式有哪些

MySql查询方式有哪些

新增

insert into B select * from A;//将A表的信息通过查询新增到B表中去登录后复制

聚合查询

count;//返回到查询的数据总和登录后复制

sum;//返回到查询的数据总和(只对数字有意义)登录后复制

只对数字有意义

avg/max/min;//返回查询数据的平均值/最大值/最小值(只对数字有意义)登录后复制

分组查询

select * from 表名 group by 分组条件;登录后复制

这里是先执行分组,再根据分组执行每个组的聚合函数。

条件查询

having;

使用having可以对经过group by分组的结果进行条件过滤。where是在分组之前执行,如果要对分组之后的结果进行条件筛选,就需要使用having(having搭配group by使用)。

例如:求每种角色的平均薪资,除了吴九。这句话可以重写为:“在分组之前指定条件--去除吴九,然后计算平均薪资。”。

利用having子句筛选平均薪资低于10000的各种角色的薪资:SELECT role, AVG(salary) AS avg_salaryFROM salariesGROUP BY roleHAVING AVG(salary) < 10000;。要先求出平均薪资才能进行筛选。

联合查询

第一种写法:select * from 表名1,表名2;第二种写法:select * from 表名1 join 表名2 on 条件;

联合查询(较重要)是多表查询,前面的查询都是单表查询。多表查询中的核心操作---笛卡尔积。

笛卡尔积的运算就是将两个表的每条记录分别进行组合,得到一组新的记录。

以上记录并不都是我们想要的结果,我们可以通过筛选得到我们想要的结果。

那么join on后面跟条件和 用where 跟条件有什么区别呢?

from多个表where写法叫做“内连接"。

使用 join on的写法,既可以表示内连接,还可以表示外连接。

select 列名 from 表1 inner join 表2 on条件;inner join表示是"内连接"其中inner可以省略。

select 列名 from 表1 left join 表2 on条件;左外连接。

select列from表1 right join表2 on条件;右外连接。

自连接

自连接是指在同一张表连接自身进行查询。一个重写的版本是:列出所有成绩信息,其中“语文”成绩高于“数学”。要先找到语文和数学这两门课程的课程编号(course_id),然后进行下一步操作。然后在比较他俩高低。

select s1.student_id,s1.score,s2.score from score as s1,score as s2 where s1.student_id=s2.student_id and s1.course_id=3 and s2.course_id=1 and s1.score>s2.score;登录后复制

合并查询

union;//这个可自动去重union all;//这个不可自动去重登录后复制

该操作符用于取得两个结果集的并集。

例如:查询id小于3,或者名字为“英文”的课程。

select * from course where id<3 union select * from course where name='英文';登录后复制

或者使用or来实现

select * from course where id<3 or name='英文';登录后复制

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mysql怎么更新视图
下一篇:mysql中int(1)和int(10)有哪些区别
相关文章