SQL server数据库里查询时新建查询怎么进行多表查询

SQL server数据库里查询时新建查询怎么进行多表查询,第1张

首先要检查你的表与表之间是不是有约束(主外键约束),如果存在,才可以像 上面这位朋友的方式进行连接,一般连接有左连接、右连接、内连接,下面给你举例:\x0d\\x0d\----做笛卡尔积\x0d\select sid,sname,scid,scsname,scscore from infom s ,score sc\x0d\\x0d\------内连接 写法一\x0d\select sid,sname,scid,scsname,scscore \x0d\from infom s ,score sc inner join score sc\x0d\on sid= scid ------内连接的条件\x0d\------on sid scid --------是全集 - 交集\x0d\------where scscore>80 \x0d\\x0d\------内连接 方法二\x0d\select sid,sname,scid,scsname,scscore \x0d\from infom s ,score sc\x0d\where sid= scid \x0d\\x0d\------\x0d\\x0d\-------------------------------------------------------外连接 左连接\x0d\--------------左表数据完全显示,右表中相同的数据显示,不同数据null\x0d\select Studentname,scorescore\x0d\from Student left join score -----------------先写的为左表\x0d\on Studentid=score id -----------------连接条件\x0d\\x0d\-------------------------------------------------------外连接 右连接\x0d\--------------右表数据完全显示,左表中相同的数据显示,不同数据显示null\x0d\select Studentname,scorescore \x0d\from Student right join score \x0d\on Studentid=score id \x0d\\x0d\-------------------------------------------------------全连接 full join\x0d\-------------------------------------------------------左、右表的数据完全显示,相同的数据显示一次\x0d\select Studentname,scorescore \x0d\from Student full join score \x0d\on Studentid=score id \x0d\\x0d\-------------------------------------------------------交叉联接\x0d\------------------------------------------交叉联接得到的是两表联接所有的数据组合\x0d\------------------------------------------(A表的数据记录 B 表的数据记录)\x0d\-------------------------------------------方式一\x0d\select Student,score from Student,score \x0d\-------------------------------------------方式二\x0d\select score ,Student from Student \x0d\cross join score \x0d\\x0d\-----------------------------------------------------多表联接\x0d\--------------------------------------要求查出张三 C#的考试成绩,涉及student,score,subject三个表\x0d\---------方式一:\x0d\select studentname,subjectsname ,score score\x0d\from Student\x0d\inner join score\x0d\on studentid= scoreid\x0d\inner join subject \x0d\on scoreid=subjectid\x0d\where Studentname='张三and subjectsname='C#'\x0d\\x0d\---------方式二:等值联接\x0d\select studentname,subjectsname ,score score\x0d\from Student,score ,subject\x0d\where StudentDBid=scoreid and score id=subjectid\x0d\ and Studentname='张三and subjectsname='C#'

t1(手机号码,所在城市)

t2(手机号码)

select t1手机号码,所在城市

from t1 where t1手机号码 in (select t2手机号码 from t2)

SELECT

学生表姓名,

课程表课程,

成绩表成绩

FROM

成绩表

JOIN

课程表

ON

(

成绩表课程编号

=

课程表编号)

JOIN

学生表

ON

(

成绩表学生学号

=

学生表学号)

WHERE

成绩表成绩

<

60

SELECT

部分,

是检索哪些表的

哪些字段

FROM

部分,

从哪里检索。

JOIN

2个表

关联。

语法是

表1

JOIN

表2

ON

(

关联条件

)

因为你这里是3个表,

因此

Join

了2次。

WHERE

就是

除了

表与表

之间的

关联条件意外,

额外的查询条件。

这里是

分数低于60

关联查询是日常工作中常用的查询方式,关联查询sql编写的思路一般如下:1、先确定所连接的表,2、再确定所要查询的字段,3、确定连接条件以及连接方式(表连接分类: 内连接、外连接、交叉连接、自连接)

1、内连接:[inner] join on

分类:等值连接、非等值连接

(1)等值连接: 指使用等号"=“比较两个表的连接列的值,相当于两表执行笛卡尔后,取两表连结列值相等的记录(自然连接是一种特殊的等值连接)(2)非等值连接:指使用”>“或”<"比较两个表的连接列的值,相当于两表执行笛卡尔后,取一个表大于或小于另一个表的连结列值的记录

2、外连接

分类:左外连接、右外连接、全外连接

(1)左外连接:left outer join

连接效果:查询结果包含左、右两个表需要查询的全部行,左侧的表中的全部数据都会被显示出来,但是右侧表的数据,只有和左侧匹配上的数据才会被查询出来!否则显示为null(2)右外连接:right outer join

连接效果:查询结果包含左、右两个表需要查询的全部行,右侧的表中的全部数据都会被显示出来,但是左侧表的数据,只有和右侧匹配上的数据才会被查询出来!否则显示为null(3)全外连接:full/all outer join,查询结果包含左、右两个表需要查询的全部行,对应字段没有值显示null

3、交叉连接

左表中的每一行与右表中的所有行组合,也叫表与表之间做笛卡尔积查询

4、自连接

当前表与自身的连接查询,关键点在于虚拟化出一张表,即给自身的表定义一个别名

可以这么做,建立一张视图,将zhengce,fagui,yanlun三张表联合起来,zid,fid,yid合并为gid。

然后通过sql语句查询。select from myview where gid in(select gid from guanxi where gbj='a')

CREATE PROCEDURE p_SelectStudentInfo

(

@Flag int,

@StuName nvarchar(20)

)

AS

IF @Flag=1//精确

BEGIN

SELECT StuNo'学号',StuName'姓名',Pwd'密码',ClassName'所在班级',StudentClassNo FROM Student,Class WHERE StudentClassNo=ClassClassNo AND StuName=@StuName

END

IF @Flag=2//模糊

BEGIN

SELECT StuNo'学号',StuName'姓名',Pwd'密码',ClassName'所在班级',StudentClassNo FROM Student,Class WHERE StudentClassNo=ClassClassNo AND StuName LIKE '%'+@StuName+'%'

END

根据姓名 和判断条件查找(精确查找或模糊查找)

以上就是关于SQL server数据库里查询时新建查询怎么进行多表查询全部的内容,包括:SQL server数据库里查询时新建查询怎么进行多表查询、如何在多个数据库中对多个表进行查询、数据库多表查询,学生表,课程表,成绩表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9819668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存