SQL多表查询:SQL JOIN连接查询各种用法总结 |
您所在的位置:网站首页 › 请问12560是什么短号 › SQL多表查询:SQL JOIN连接查询各种用法总结 |
首先,设定两张表,作为下面例子的操作对象。 表1 学生信息表 ![]() 表2 专业班级表 ![]() 再来个SQL JOIN连接查询各种用法的大合影,先预热一下。 ![]() 这是最常用的,获取两个表中指定字段满足匹配关系的记录。 ![]() 内连接通常有两种情况: 等值连接:查找两个表中连接字段相等的记录。 --查询每个学生的学号、姓名、籍贯、年龄、专业、班级 --涉及到student和major两张表,用共有字段“学号”为连接字段 --写法1:使用INNER JOIN SELECT A.学号,A.姓名,A.籍贯,A.年龄,B.专业,B.班级 FROM student A INNER JOIN major B ON A.学号=B.学号 --写法2:--省去了INNER,直接写JOIN,与INNER JOIN没有区别 SELECT A.学号,A.姓名,A.籍贯,A.年龄,B.专业,B.班级 FROM student A JOIN major B ON A.学号=B.学号 --写法3: --使用WHERE,已经逐渐被淘汰 SELECT A.学号,A.姓名,A.籍贯,A.年龄,B.专业,B.班级 FROM studentA,majorB WHERE A.学号=B.学号 --上面三种写法的结果都是一样的,推荐使用写法2![]() 自身连接:就是和自己进行连接查询,给一张表取两个不同的别名,然后附上连接条件。 --要在学生表里查询与 HH 同龄且籍贯也相同的学生信息 SELECT B.学号,B.姓名,B.性别,B.籍贯,B.年龄 FROM student A JOIN student B ON A.年龄=B.年龄 AND A.籍贯=B.籍贯 AND A.姓名='HH'![]() 获取左表中的所有记录,即使在右表没有对应匹配的记录。 ![]() ![]() 用于获取右表中的所有记录,即使左表没有对应匹配的记录。 ![]() ![]() 返回两个表中的所有行。 ![]() ![]() 结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。 ![]() ![]() 返回左表有但右表没有关联数据的记录。 ![]() ![]() 返回右表有但左表没有关联数据的记录。 ![]() ![]() 返回左表和右表里没有相互关联的记录。 ![]() ![]() 谈及 SQL 里的各种 JOIN 之间的区别时,被广为引用的是 CodeProject 上C.L. Moffatt的文章, 本文也有所参考,感兴趣的小伙伴可以去看一下。 https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |