SQL Server高等內容之子查詢和表鏈接概述及應用。本站提示廣大學習愛好者:(SQL Server高等內容之子查詢和表鏈接概述及應用)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server高等內容之子查詢和表鏈接概述及應用正文
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