Sql Server數據庫之多表查詢
阿新 • • 發佈:2019-01-13
連接 lec bsp n) creat 笛卡爾 insert cross val
一.連接查詢
概念:根據兩個表或多個表的列之間的關系,從這些表中查詢數據
目的:實現多表查詢操作
語法:From join_table join_type join_table[ON(join_condition)]
join_table:連接的表名
join_type:連接類型
join_condition:連接條件
連接類型:內連接,外連接,交叉連接
二.內連接
1.等值連接
概念:在連接條件中使用"="運算符,其查詢結果中列出被連接表中的所有列,包括其中的重復列
示例:
1 createtable student 2 ( 3 studentId int not null primary key, 4 studentName nvarchar(20) not null, 5 classId int not null 6 ) 7 create table class 8 ( 9 classId int not null primary key, 10 className nvarchar(20) not null 11 ) 12 insert into student values(1,‘嶽雲鵬‘,1);13 insert into student values(2,‘郭德綱‘,1); 14 insert into student values(3,‘郭麒麟‘,1); 15 insert into student values(4,‘孫越‘,2); 16 insert into student values(5,‘於謙‘,2); 17 insert into student values(6,‘閻鶴翔‘,2); 18 insert into class values(1,‘逗哏班‘); 19 insert into class values(2,‘捧哏班‘); 20 select *from student s inner join class c on s.classId = c.classId
2.不等值連接
概念:在連接條件中使用除等號之外的運算符
示例:
1 select * from student s inner join class c on s.classId != c.classId
三.外鏈接
1.左連接
左表結構:
右表結構:
左連接查詢:
select * from student s left join class c on s.classId = c.classId
查詢結果:
總結:左連接:返回左表中的所有行,如果左表行在右表中沒有匹配行,則結果中右表中的列返回控制
2.右連接
右連接查詢:
select * from student s right join class c on s.classId = c.classId
查詢結果:
總結:右連接:恰與左連接相反,返回右表中的所有行,如果右表中行在左表中沒有匹配行,則結果中左表中的列返回空值。
3.全連接
全連接查詢
select * from student s right join class c on s.classId = c.classId
查詢結果
總結:全連接:返回左表和右表中的所有行,當某行在另一表中沒有匹配行,則靈異表中的列返回空值
四.交叉連接(笛卡爾積)
1.不帶where子句
執行交叉連接:
select * from student cross join class
查詢結果:
2.帶where子句
執行交叉連接:
select * from student s cross join class c where s.classId = c.classId
查詢結果:
Sql Server數據庫之多表查詢