视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLServer高级内容之子查询和表链接概述及使用
2020-11-09 07:07:41 责编:小采
文档


1.子查询概念
(1)就是在查询的where子句中的判断依据是另一个查询的结果,如此就构成了一个外部的查询和一个内部的查询,这个内部的查询就是自查询。
(2)自查询的分类
1)子查询
->单值(标量)子查询(=)
代码如下:
Select
testID,stuID,testBase,testBeyond,testPro
from Score
where stuID=(
select stuID from Student where stuName='Kencery'
)

->多值子查询(in)
代码如下:
Select
testID,stuID,testBase,testBeyond,testPro
from Score
where stuID in(
select stuID from Student where stuName='Kencery'
)

2)相关子查询
(3)写子查询的注意事项
1)子查询用一个圆括号阔气,有必要的时候需要为表取别名,使用“as 名字”即可。
2.表连接\
(1)表链接就是将多个表合成为一个表,但是不是向union一样做结果集的合并操作,但是表链接可以将不同的表合并,并且共享字段。
(2)表连接之交叉连接 (cross join)
1)创建两张表
代码如下:
use Test
go
create table testNum1
(
Num1 int
);
create table testNum2
(
Num2 int
);
insert into testNum1 values(1),(2),(3)
insert into testNum2 values(4),(5)

2) 执行交叉连接的SQL语句
select * from testNum1 cross join testNum2
3)注解
交叉连接就是将第一张表中的所有数据与第二张表中的所有数据挨个匹配一次,构成一个新表。
4)自交叉的实现
执行插入SQL语句:
代码如下:
insert into testNum1 values(4),(5),(6),(7),(8),(9),(0)

执行自交叉的SQL语句:
代码如下:
select t1.num1,t2.num2 from testNum1 as t1 cross join testNum2 as t2

5)另外一种写法:
select * from testNum1,testNum2不提倡使用,首先是有比较新的语法,缺陷是逗号不明确,并且这个语法与内连接和外连接都可以使用,如果使用join声明,那么语法错误的时候可以报错,但是使用这个语法,可能因为部分语法的错误,会被SQL Server解释为交叉连接而跳过这个语法的检查
(3)表连接之内连接
1)内链接是在交叉连接的基础之上添加一个约束条件
2)语法:select * from 表1 inner join 表2 on 表1.字段=表2.字段
代码如下:
Selects1.stuID,
s1.stuName,
s1.stuSex,
s2.testBase,
s2.testBeyond
from Student as s1
inner join Score as s2
on s1.stuID=s2.stuID
where s1.stuIsDel=0;

(4)表连接之外连接
1)执行下面的SQL语句
代码如下:
create table tblMain
(
ID int,
name nvarchar(20),
fid int
);
create table tblOther
(
ID int,
name nvarchar(20)
)
insert into tblMain values(1,'张三',1),(2,'李四',2)
insert into tblOther values(1,'C++'),(2,'.net'),(3,'java')
select * from
tblMain as t1
inner join
tblOther as t2
on
t1.fid=t2.id

2)在内连接的基础之上,在做一件事儿,就是将tblOther中的Java也显示出来,这时候就要使用到外连接,外连接有左外连接和右外连接。

3)左连接和右连接有什么区别呢??区别就是**连接就是以**表为主表,在内连接的基础之上,将没有数据的那张表的信息还是要显示出来供用户查看,那么这个主表就是要显示的那张表。左外连接和右外连接的分别是在前面的这张表就是左表,在后面的那张表就是右表,左连接使用left join ,有连接使用right join。
4)上面重新执行下面的SQL语句,就会显示出tblOther表中的Java。
代码如下:
select * from
tblMain as t1
right join tblOther as t2
on t1.fid=t2.id

您可能感兴趣的文章:

  • Sql Server下数据库链接的使用方法
  • SqlDataSource 链接Access 数据
  • SqlServer2005 链接服务器用法
  • 简单实用SQL脚本Part SQLServer 2005 链接服务器
  • 通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
  • sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
  • 关于MySql链接url参数的设置
  • SQL Server创建链接服务器的存储过程示例分享
  • SQL Server的链接服务器技术小结
  • C#访问SqlServer设置链接超时的方法
  • 详解SQL Server数据库链接查询的方式
  • 下载本文
    显示全文
    专题