您的位置:首页 > 数据库

数据库中关于表的连接问题

2013-03-13 20:04 393 查看
--1内连接(两个表中相匹配的那些记录)

--2外联接

--2.1左外联接(把左表中 left join关键字左边的表)中的全部记录都显示出来,对于右表中能找到匹配的记录,显示对应匹配数据,对右表中找不到的匹配记录显示为null。

--2.2右外联接 left [outter] join,right [outter] join.

--左外联接和右外联接都是分两步查询出结果的,第一:找到匹配数据,第二:填充不匹配的数据为null。(注意,是有先后顺序的。)

----Cross Join交叉联接------

select

*

from Student,Score

----自联接------------------

select

*

from Student

inner join

(select sName,sAge,sId FROM Student

where sAge>10

)as TS1

ON Student.sId=TS1.sId

-- -7----report 2------

SELECT

*

FROM

(select

sId,

sName,

sAge,

Score.*

from Student

left outer join Score

ON Score.studentId=Student.sId

) as Tbl

WHERE ScoreId is null

---右外--

select

sId,

sName,

sAge,

Score.*

from Student

right outer join Score

ON Score.studentId=Student.sId

--- ---------------

select

sId,

sName,

sAge,

Score.*

from Score

right outer join Student

ON Score.studentId=Student.sId

select

sId,

sName,

Score.*

FROM Student

LEFT OUTER JOIN Score

on Score.studentId=Student.sId

--重做:查询出所有没有参加考试的同学的学生编号,姓名,考试成绩。

select

sId,

sName,

Score.*

FROM Student

LEFT OUTER JOIN Score

on Score.studentId=Student.sId

where Score.scoreId is null

--2.2右外联接

select

Score.*,

sId,

sName

from Student

right outer join Score on

Score.scoreId=Student.sId

------------

select

Score.*,

sId,

sName

from Score

right outer join Student on

Score.scoreId=Student.sId

----Cross Join 交叉联结-------

select * from

Student,Score

-------自联结------------------

select *

from Student

inner join(select sId,sName,sAge from Student where sAge>=10)as Tbl1

on Student.sId=Tbl1.sId
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: