mysql常用命令(4)高级查询

嵌套子查询:

查询工资比张学友高的人的信息:

select * from wages where uwages>(select uwages from wages where name="张学友");

查询工资高于50000的人的信息  用嵌套来示范 in是包含 not in 是不包含:

select * from wages where uwages in (select uwages from wages where uwages>50000);

查询因为加班得到奖金的人:

select * from wages where name in (select name from bonus where breason="加班");

any:满足查询出来的数据任何一个即可

all: 必须满足所有

查询奖金比奖金表里“某一”人奖金低的信息:

用any:

select * from wages where name in (select name from bonus where howmuch from bonus));

用聚合函数 max 最大值:

select * from wages where name in (select name from bonus where howmuch<(select max(howmuch) from bonus));    //推荐用这个

查询奖金比所有加班人员的奖金都少的人员的个人工资信息:

select * from wages where name in(select name from bonus where howmuch from bonus where breason="加班"));

内连接:

查询员工表与奖金表姓名相对应的信息:

select * from wages join bonus on wages.name=bonus.name;

内链接会查出两个表共有的数据

外连接:

左外连接:

查询员工表所有信息以及奖金表与员工表姓名相对应的信息:

select * from wages left join bonus on wages.name=bonus.name;

这时候左边的表会显示所有信息 右边的表根据左边的来 左边比他多 他就会显示几行null 左边比他少 他就会少显示几行

右外连接:

查询奖金表所有信息 员工表与奖金表姓名相同的信息:

select * from wages right join bonus on bonus.name=wages.name;

这时候会根据右边的表来查询 右边的表数据全部显示出来 左边依着右边来

交叉连接:

交叉联接也叫非限制联接,它将两个表不加任何约束的组合起来。在数学上,就是两个表的笛卡尔积。交叉联接后得到的行数是两个被联接表的行数的乘积。

查询员工表和奖金的数据 并且每一个条数据相比:

select * from wages cross join bonus;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容