34,590
社区成员
发帖
与我相关
我的任务
分享
--Test Data
CREATE TABLE #First
(
userID smallint,
userName nvarchar(50),
userAddress nvarchar(200)
)
INSERT INTO #First
SELECT 1, 'Kim', 'China' UNION ALL
SELECT 2, 'Tom', 'America' UNION ALL
SELECT 3, 'Lily', 'Japan'
CREATE TABLE #Second
(
userID smallint,
userName nvarchar(50),
userAddress nvarchar(200)
)
INSERT INTO #Second
SELECT 2, 'Kim', 'China' UNION ALL
SELECT 5, 'Tom', 'America' UNION ALL
SELECT 6, 'Lily', 'Japan'
--FULL JOIN
/*
FULL JOIN就是把两个表完全连起来,不管对应的连接值是否存在
*/
SELECT * FROM #First a
FULL JOIN #Second b
ON a.userID = b.userID
--CROSS JOIN
/*
CROSS JOIN按笛卡尔积连接,也就是两表组合的任何形式
*/
SELECT * FROM #First a
CROSS JOIN #Second b
DROP TABLE #First
DROP TABLE #Second
--查找学生数据库中每个学生的情况和选修的课程情况
use xscj
select *
from xs inner join xs_kc
on xs.学号=xs_kc.学号
go
--从数据库xscj中查询学生的姓名、课程名和成绩
use xscj
select 姓名,课程名,成绩
from xs join xs_kc
on xs.学号=xs_kc.学号
join kc
on kc.课程号=xs_kc.课程号
go
--内连接— …inner join… on…
--查找选修了‘计算机基础’课程且成绩在80分以上的学生的学号、姓名、课程名及成绩
use xscj
select 学号,姓名,课程名,成绩
from xs join xs_kc
on xs.学号=xs_kc.学号
join kc
on kc.课程号=xs_kc.课程号
where 课程名=‘计算机’ and 成绩>=80
go
--查找不同课程但成绩相同的学生的学号、课程号和成绩
use xscj
select a.学号,a.课程号,b.课程号,b.成绩
from xs_kc a join xs_kc b
on a.成绩=b.成绩 and a.学号=b.学号
and a.课程号!=b.课程号
go