数据库多表查询

多表查询:

SELECT *FROM stu_table,class WHERE stu_table.c_id=class.c_id;

多表查询——内连接

查询两张表交集部分。

隐式内连接:

#查询学生姓名,和班级名称,隐式调用
SELECT stu_table.s_name,class.c_name FROM stu_table,class WHERE stu_table.c_id=class.c_id;

显式内连接:

#查询学生姓名,年龄和班级名称,隐式调用
SELECT stu_table.s_name,stu_table.s_age,class.c_name FROM stu_table JOIN class ON stu_table.c_id=class.c_id;

多表查询——外连接

左外连接:相当于查询表1(左表)的所有数据,包含表1和表2交集部分的数据。

#查询学生所有信息,及班级,用左连接
SELECT stu_table.*,class.c_name FROM stu_table LEFT JOIN class ON stu_table.c_id=class.c_id;

右外连接:相当于查询表2(右表)的所有数据,包含表1和表2交集的部分数据。

#查询所有的班级信息,和班级对应的学生姓名,用右连接
SELECT class.*,stu_table.s_name FROM stu_table RIGHT JOIN class ON stu_table.c_id=class.c_id;

多表查询——联合查询(UNION、union all)

union:可以去重

把多次查询的结果合并起来,形成一个新的查询。

#查询年纪大于等于18的所有信息,和性别为男的所有信息
SELECT * FROM stu_table WHERE s_age>=18
UNION 
SELECT * FROM stu_table WHERE s_sex="男";

多表查询——子查询——标量子查询

#查询在一班的所有同学信息
SELECT c_id FROM class WHERE c_name="xg1901";

SELECT * FROM stu_table WHERE c_id=(SELECT c_id FROM class WHERE c_name="xg1901");

 

多表查询——子查询——列子查询

#查询在一和三班的所有同学信息
SELECT c_id FROM class WHERE c_name="xg1901" OR c_name="xg1903";
SELECT *FROM stu_table WHERE c_id IN (1,3);

SELECT * FROM stu_table WHERE c_id IN (SELECT c_id FROM class WHERE c_name="xg1901" OR c_name="xg1903");

多表查询——子查询——行子查询

常用操作符:=,<>,in ,not in

多表查询——子查询——表子查询 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值