加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.zhandada.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

sql多表内连接查询使用的语句是什么

发布时间:2022-02-12 14:02:52 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要讲解了sql多表内连接查询使用的语句是什么,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习sql多表内连接查询使用的语句是什么吧! 在mysql中,可以使用inner join语句进行多表内连接查询,只需
       这篇文章主要讲解了“sql多表内连接查询使用的语句是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql多表内连接查询使用的语句是什么”吧!
  
       在mysql中,可以使用“inner join”语句进行多表内连接查询,只需要使用“select * from 表 inner join 表 on 表1.字段=表2.字段;”语句即可。组合两个表中的记录,返回关联字段相符的记录。
 
       本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
 
内连接
 
join 或 inner join
 
SQL语句:select * from student inner join score on student.Num=score.Stu_id;
 
此时的语句就相当于:select * from student,score where student.ID=course.ID;
 
扩展资料:
 
外连接
 
1.左连接  left join 或 left outer join
 
SQL语句:select * from student left join score on student.Num=score.Stu_id;
 
2.右连接  right join 或 right outer join
 
SQL语句:select * from student right join score on student.Num=score.Stu_id;
 
3.完全外连接  full join 或 full outer join
 
SQL语句:select * from student full join score on student.Num=score.Stu_id;
 
通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。
 
而对于select * from student,score;则尽量不使用此语句,产生的结果过于繁琐。
 
交叉连接
 
cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。
 
SQL语句:select * from student cross join score;
 
结构不同的表连接
 
当两表为多对多关系的时候,我们需要建立一个中间表student_score,中间表至少要有两表的主键。
 
SQL语句:select s.Name,C.Cname from student_score as sc left join student as s on s.Sno=sc.Sno left join score as c on c.Cno=sc.Cno
 
select C_name,grade from student left join score on student.Num=score.Stu_id where name='李五一';
红色部分即中间表,是集合两表所有内容的一张总表。
 
UNION操作符用于合并两个或多个select语句的结果集。
 
UNION内部的SELECT语句必须拥有相同数量的列,每个列也必须拥有相似的数据类型,每条SELECT语句中的列的顺序必须相同。
 
select Num from student union select Stu_id from score;
union操作符是默认查重的,如果允许重复的值,就可以使用union all 。对于两张结构相同的表,union也可以把他们合并成一张表:
 
select * from student1 union select *from student2;
子查询
 
有时候,查询时需要的条件是另外一个select语句的结果,就会使用到子查询。
 
1.带IN关键字的子查询
 
SQL语句:select * from student where Num IN(select Stu_id from score);
 
2.带EXISTS关键字的子查询
 
exists内查询返回一个真价值,若返回true时,外查询进行查询,否则外查询不进行查询。
 
SQL语句:select * from student where exists(select * from score where C_name='计算机');
 
3.带ANY关键字的子查询
 
使用ANY关键字只要有一个满足,就通过该条件来执行外查询。
 
SQL语句:select sname,(date_format(from_days(now())-to_days(birthday)),'%Y')+0) as '年龄' from student where birthday>ANY(select birthday from student where bumen='计算机系');
 
4.带ALL关键字的子查询
 
使用ALL关键字必须满足所有的内层查询语句返回的所有结果,才执行外查询
 
SQL语句:select sname,(date_format(from_days(now())-to_days(birthday)),'%Y')+0) as '年龄' from student where birthday>ALL(select birthday from student where bumen='计算机系');
 
感谢各位的阅读,以上就是“sql多表内连接查询使用的语句是什么”的内容了,经过本文的学习后,相信大家对sql多表内连接查询使用的语句是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读