sql连接查询

sql连接查询

单表查询

student表:
在这里插入图片描述

select 列名|* from 表名;

-- 查看全表
SELECT * FROM student;

*可以匹配为全选

-- 在student表中查找赵六的信息
SELECT * FROM student WHERE sname = '赵六';
-- 查找年龄大于5的所有学生
SELECT * FROM student WHERE age > 5;
-- 查找孙八的年龄
SELECT age FROM student WHERE sname = '孙八';
-- 查找年龄在2到5的学生
SELECT sname FROM student WHERE age BETWEEN 2 AND 5;

连接查询

自连接

自连接,顾名思义就是自己和自己进行连接查询,使用的是同一张表

-- 查出年龄数值在表格里有id值相等的,此无实际意义,仅示例语法
SELECT t1.* FROM student t1 JOIN student t2
ON t1.age = t2.sId;

student表:
在这里插入图片描述
class表:
在这里插入图片描述

内连接

内连接必须满足相应条件才能查出

SELECT * FROM student s INNER JOIN class c ON s.class = c.stuClass;

inner 可以省略不写,写成非标准写法

在这里插入图片描述

外连接

左右连接,左连接是以左边表为主,条件满足时,显示,不满足是为null;
右连接则是以右边为主

左外连接
-- 插入一条记录
INSERT INTO student VALUES(7,'哈哈',9,'男',NULL);
-- student表 左连接 class表
SELECT * FROM student s LEFT JOIN class c ON s.class = c.stuClass;

在这里插入图片描述

右外连接
-- 添加一条记录到class表
INSERT INTO class VALUES (5,'哈尼克孜');
-- student表 右连接 class表
SELECT * FROM student s RIGHT JOIN class c ON s.class = c.stuClass;

在这里插入图片描述

嵌套查询

也叫子查询,就是一个查询一句包含另一个查询语句,所以叫嵌套。
内层查询语句的返回结果集作为外层查询语句的查询条件或者查询数据

  1. 作为查询的条件
-- 查询班级人数最多的班级的老师
SELECT teacher FROM class WHERE stuClass = (
	SELECT class FROM student GROUP BY class HAVING COUNT(class) ORDER BY COUNT(class) DESC LIMIT 1
)

在这里插入图片描述

  1. 作为被查询的数据
-- 查询2班年龄大于5岁的学生
SELECT * FROM (
	SELECT * FROM student WHERE class = 2
) t WHERE t.age > 5;

在这里插入图片描述

  1. 作为一列数据
SELECT sname,(SELECT age FROM student WHERE class = 4) t1 FROM student t;

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值