﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-午后星期午-随笔分类-SQL</title><link>http://www.blogjava.net/wshao/category/54093.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 31 Dec 2013 07:22:36 GMT</lastBuildDate><pubDate>Tue, 31 Dec 2013 07:22:36 GMT</pubDate><ttl>60</ttl><item><title>T-SQL 经典例题</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408293.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408293.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408293.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408293.html</trackback:ping><description><![CDATA[<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体; color: #323e32">有三张表：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体; color: #323e32">Student(S#,Sname,Sage,Ssex) </span><span style="line-height: 150%; font-family: 宋体; color: #323e32">学生表<br />Course(C#,Cname,T#) 课程表<br />SC(S#,C#,score) 成绩表<br />Teacher(T#,Tname) 教师表</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体; color: #323e32">问题：<br />1、查询&#8220;001&#8221;课程比&#8220;002&#8221;课程成绩高的所有学生的学号；<br />select a.S# from (select s#,score from SC where C#='001') a,(select s#,score<br />from SC where C#='002') b<br />where a.score&gt;b.score and a.s#=b.s#;<br />2、查询平均成绩大于60分的同学的学号和平均成绩；<br />&nbsp;&nbsp;&nbsp; select S#,avg(score)<br />&nbsp;&nbsp;&nbsp; from sc<br />&nbsp;&nbsp;&nbsp; group by S# having avg(score) &gt;60;<br />3、查询所有同学的学号、姓名、选课数、总成绩；<br />select Student.S#,Student.Sname,count(SC.C#),sum(score)<br />from Student left Outer join SC on Student.S#=SC.S#<br />group by Student.S#,Sname<br />4、查询姓&#8220;李&#8221;的老师的个数；<br />select count(distinct(Tname))<br />from Teacher<br />where Tname like '李%';<br />5、查询没学过&#8220;叶平&#8221;老师课的同学的学号、姓名；<br />&nbsp;&nbsp;&nbsp; select Student.S#,Student.Sname<br />&nbsp;&nbsp;&nbsp; from Student<br />&nbsp;&nbsp;&nbsp; where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');<br />6、查询学过&#8220;001&#8221;并且也学过编号&#8220;002&#8221;课程的同学的学号、姓名；<br />select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');<br />7、查询学过&#8220;叶平&#8221;老师所教的所有课的同学的学号、姓名；<br />select S#,Sname<br />from Student<br />where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));<br />8、查询课程编号&#8220;002&#8221;的成绩比课程编号&#8220;001&#8221;课程低的所有同学的学号、姓名；<br />Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2<br />from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 &lt;score;<br />9、查询所有课程成绩小于60分的同学的学号、姓名；<br />select S#,Sname<br />from Student<br />where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score&gt;60);<br />10、查询没有学全所有课的同学的学号、姓名；<br />&nbsp;&nbsp;&nbsp; select Student.S#,Student.Sname<br />&nbsp;&nbsp;&nbsp; from Student,SC<br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) &lt;(select count(C#) from Course);<br />11、查询至少有一门课与学号为&#8220;1001&#8221;的同学所学相同的同学的学号和姓名；<br />&nbsp;&nbsp;&nbsp; select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';<br />12、查询至少学过学号为&#8220;001&#8221;同学所有一门课的其他同学学号和姓名；<br />&nbsp;&nbsp;&nbsp; select distinct SC.S#,Sname<br />&nbsp;&nbsp;&nbsp; from Student,SC<br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# and C# in (select C# from SC where S#='001');<br />13、把&#8220;SC&#8221;表中&#8220;叶平&#8221;老师教的课的成绩都更改为此课程的平均成绩；<br />&nbsp;&nbsp;&nbsp; update SC set score=(select avg(SC_2.score)<br />&nbsp;&nbsp;&nbsp; from SC SC_2<br />&nbsp;&nbsp;&nbsp; where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');<br />14、查询和&#8220;1002&#8221;号的同学学习的课程完全相同的其他同学学号和姓名；<br />&nbsp;&nbsp;&nbsp; select S# from SC where C# in (select C# from SC where S#='1002')<br />&nbsp;&nbsp;&nbsp; group by S# having count(*)=(select count(*) from SC where S#='1002');<br />15、删除学习&#8220;叶平&#8221;老师课的SC表记录；<br />&nbsp;&nbsp;&nbsp; Delect SC<br />&nbsp;&nbsp;&nbsp; from course ,Teacher<br />&nbsp;&nbsp;&nbsp; where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';<br />16、向SC表中插入一些记录，这些记录要求符合以下条件：没有上过编号&#8220;003&#8221;课程的同学学号、2、<br />&nbsp;&nbsp;&nbsp; 号课的平均成绩；<br />&nbsp;&nbsp;&nbsp; Insert SC select S#,'002',(Select avg(score)<br />&nbsp;&nbsp;&nbsp; from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');<br />17、按平均成绩从高到低显示所有学生的&#8220;数据库&#8221;、&#8220;企业管理&#8221;、&#8220;英语&#8221;三门的课程成绩，按如下形式显示：学生ID,,数据库,企业管理,英语,有效课程数,有效平均分<br />&nbsp;&nbsp;&nbsp; SELECT S# as 学生ID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩<br />&nbsp;&nbsp;&nbsp; FROM SC AS t<br />&nbsp;&nbsp;&nbsp; GROUP BY S#<br />&nbsp;&nbsp;&nbsp; ORDER BY avg(t.score)<br />18、查询各科成绩最高和最低的分：以如下形式显示：课程ID，最高分，最低分<br />&nbsp;&nbsp;&nbsp; SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分<br />&nbsp;&nbsp;&nbsp; FROM SC L ,SC AS R<br />&nbsp;&nbsp;&nbsp; WHERE L.C# = R.C# and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L.score = (SELECT MAX(IL.score)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC AS IL,Student AS IM<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE L.C# = IL.C# and IM.S#=IL.S#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY IL.C#)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R.Score = (SELECT MIN(IR.score)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC AS IR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE R.C# = IR.C#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY IR.C#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br />19、按各科平均成绩从低到高和及格率的百分数从高到低顺序<br />&nbsp;&nbsp;&nbsp; SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0) AS 平均成绩<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN isnull(score,0)&gt;=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数<br />&nbsp;&nbsp;&nbsp; FROM SC T,Course<br />&nbsp;&nbsp;&nbsp; where t.C#=course.C#<br />&nbsp;&nbsp;&nbsp; GROUP BY t.C#<br />&nbsp;&nbsp;&nbsp; ORDER BY 100 * SUM(CASE WHEN isnull(score,0)&gt;=60 THEN 1 ELSE 0 END)/COUNT(*) DESC<br />20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理（001），马克思（002），OO&amp;UML （003），数据库（004）<br />&nbsp;&nbsp;&nbsp; SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '001' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '002' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '003' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '004' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数<br />FROM SC</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体; color: #323e32">21</span><span style="line-height: 150%; font-family: 宋体; color: #323e32">、查询不同老师所教不同课程平均分从高到低显示<br />SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ＩＤ,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩<br />&nbsp;&nbsp;&nbsp; FROM SC AS T,Course AS C ,Teacher AS Z<br />&nbsp;&nbsp;&nbsp; where T.C#=C.C# and C.T#=Z.T#<br />GROUP BY C.C#<br />ORDER BY AVG(Score) DESC<br />22、查询如下课程成绩第 3 名到第 6 名的学生成绩单：企业管理（001），马克思（002），UML （003），数据库（004）<br />&nbsp;&nbsp;&nbsp; [学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩<br />&nbsp;&nbsp;&nbsp; SELECT DISTINCT top 3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SC.S# As 学生学号,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student.Sname AS 学生姓名 ,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1.score AS 企业管理,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T2.score AS 马克思,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T3.score AS UML,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T4.score AS 数据库,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM Student,SC LEFT JOIN SC AS T1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T1.S# AND T1.C# = '001'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T2.S# AND T2.C# = '002'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T3.S# AND T3.C# = '003'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T4.S# AND T4.C# = '004'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE student.S#=SC.S# and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOT IN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DISTINCT<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOP 15 WITH TIES<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM sc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T1.S# AND T1.C# = 'k1'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T2.S# AND T2.C# = 'k2'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T3.S# AND T3.C# = 'k3'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T4.S# AND T4.C# = 'k4'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体; color: #323e32">23</span><span style="line-height: 150%; font-family: 宋体; color: #323e32">、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ &lt;60]<br />&nbsp;&nbsp;&nbsp; SELECT SC.C# as 课程ID, Cname as 课程名称<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score &lt; 60 THEN 1 ELSE 0 END) AS [60 -]<br />&nbsp;&nbsp;&nbsp; FROM SC,Course<br />&nbsp;&nbsp;&nbsp; where SC.C#=Course.C#<br />&nbsp;&nbsp;&nbsp; GROUP BY SC.C#,Cname;</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体; color: #323e32">24</span><span style="line-height: 150%; font-family: 宋体; color: #323e32">、查询学生平均成绩及其名次<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT 1+(SELECT COUNT( distinct 平均成绩)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT S#,AVG(score) AS 平均成绩<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY S#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) AS T1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE 平均成绩 &gt; T2.平均成绩) as 名次,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S# as 学生学号,平均成绩<br />&nbsp;&nbsp;&nbsp; FROM (SELECT S#,AVG(score) 平均成绩<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY S#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) AS T2<br />&nbsp;&nbsp;&nbsp; ORDER BY 平均成绩 desc;<br /><br />25、查询各科成绩前三名的记录:(不考虑成绩并列情况)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC t1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE score IN (SELECT TOP 3 score<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t1.C#= C#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY score DESC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY t1.C#;<br />26、查询每门课程被选修的学生数<br />select c#,count(S#) from sc group by C#;<br />27、查询出只选修了一门课程的全部学生的学号和姓名<br />select SC.S#,Student.Sname,count(C#) AS 选课数<br />from SC ,Student<br />where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;<br />28、查询男生、女生人数<br />&nbsp;&nbsp;&nbsp; Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';<br />&nbsp;&nbsp;&nbsp; Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女'；<br />29、查询姓&#8220;张&#8221;的学生名单<br />&nbsp;&nbsp;&nbsp; SELECT Sname FROM Student WHERE Sname like '张%';<br />30、查询同名同性学生名单，并统计同名人数<br />select Sname,count(*) from Student group by Sname having count(*)&gt;1;;<br />31、1981年出生的学生名单(注：Student表中Sage列的类型是datetime)<br />&nbsp;&nbsp;&nbsp; select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age<br />&nbsp;&nbsp;&nbsp; from student<br />&nbsp;&nbsp;&nbsp; where CONVERT(char(11),DATEPART(year,Sage))='1981';<br />32、查询每门课程的平均成绩，结果按平均成绩升序排列，平均成绩相同时，按课程号降序排列<br />&nbsp;&nbsp;&nbsp; Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;<br />33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩<br />&nbsp;&nbsp;&nbsp; select Sname,SC.S# ,avg(score)<br />&nbsp;&nbsp;&nbsp; from Student,SC<br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# group by SC.S#,Sname having&nbsp;&nbsp;&nbsp; avg(score)&gt;85;<br />34、查询课程名称为&#8220;数据库&#8221;，且分数低于60的学生姓名和分数<br />&nbsp;&nbsp;&nbsp; Select Sname,isnull(score,0)<br />&nbsp;&nbsp;&nbsp; from Student,SC,Course<br />&nbsp;&nbsp;&nbsp; where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='数据库'and score &lt;60;<br />35、查询所有学生的选课情况；<br />&nbsp;&nbsp;&nbsp; SELECT SC.S#,SC.C#,Sname,Cname<br />&nbsp;&nbsp;&nbsp; FROM SC,Student,Course<br />&nbsp;&nbsp;&nbsp; where SC.S#=Student.S# and SC.C#=Course.C# ;<br />36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数；<br />&nbsp;&nbsp;&nbsp; SELECT distinct student.S#,student.Sname,SC.C#,SC.score<br />&nbsp;&nbsp;&nbsp; FROM student,Sc<br />&nbsp;&nbsp;&nbsp; WHERE SC.score&gt;=70 AND SC.S#=student.S#;<br />37、查询不及格的课程，并按课程号从大到小排列<br />&nbsp;&nbsp;&nbsp; select c# from sc where scor e &lt;60 order by C# ;<br />38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名；<br />&nbsp;&nbsp;&nbsp; select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score&gt;80 and C#='003';<br />39、求选了课程的学生人数<br />&nbsp;&nbsp;&nbsp; select count(*) from sc;<br />40、查询选修&#8220;叶平&#8221;老师所授课程的学生中，成绩最高的学生姓名及其成绩<br />&nbsp;&nbsp;&nbsp; select Student.Sname,score<br />&nbsp;&nbsp;&nbsp; from Student,SC,Course C,Teacher<br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );<br />41、查询各个课程及相应的选修人数<br />&nbsp;&nbsp;&nbsp; select count(*) from sc group by C#;<br />42、查询不同课程成绩相同的学生的学号、课程号、学生成绩<br />select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# &lt;&gt;B.C# ;<br />43、查询每门功成绩最好的前两名<br />&nbsp;&nbsp;&nbsp; SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC t1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE score IN (SELECT TOP 2 score<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t1.C#= C#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY score DESC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY t1.C#;<br />44、统计每门课程的学生选修人数（超过10人的课程才统计）。要求输出课程号和选修人数，查询结果按人数降序排列，查询结果按人数降序排列，若人数相同，按课程号升序排列<br />&nbsp;&nbsp;&nbsp; select C# as 课程号,count(*) as 人数<br />&nbsp;&nbsp;&nbsp; from sc<br />&nbsp;&nbsp;&nbsp; group by C#<br />&nbsp;&nbsp;&nbsp; order by count(*) desc,c#<br />45、检索至少选修两门课程的学生学号<br />&nbsp;&nbsp;&nbsp; select S#<br />&nbsp;&nbsp;&nbsp; from sc<br />&nbsp;&nbsp;&nbsp; group by s#<br />&nbsp;&nbsp;&nbsp; having count(*) &gt; = 2<br />46、查询全部学生都选修的课程的课程号和课程名<br />&nbsp;&nbsp;&nbsp; select C#,Cname<br />&nbsp;&nbsp;&nbsp; from Course<br />&nbsp;&nbsp;&nbsp; where C# in (select c# from sc group by c#)<br />47、查询没学过&#8220;叶平&#8221;老师讲授的任一门课程的学生姓名<br />&nbsp;&nbsp;&nbsp; select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平');<br />48、查询两门以上不及格课程的同学的学号及其平均成绩<br />&nbsp;&nbsp;&nbsp; select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score &lt;60 group by S# having count(*)&gt;2)group by S#;<br />49、检索&#8220;004&#8221;课程分数小于60，按分数降序排列的同学学号<br />&nbsp;&nbsp;&nbsp; select S# from SC where C#='004'and score &lt;60 order by score desc;<br />50、删除&#8220;002&#8221;同学的&#8220;001&#8221;课程的成绩<br />delete from Sc where S#='001'and C#='001';</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">本题用到下面三个关系表：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">CARD&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="line-height: 150%; font-family: 宋体">借书卡。<span>&nbsp;&nbsp; CNO </span>卡号，NAME&nbsp;姓名，CLASS 班级</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">BOOKS&nbsp;&nbsp;&nbsp; </span><span style="line-height: 150%; font-family: 宋体">图书。<span>&nbsp;&nbsp; &nbsp;&nbsp;BNO </span>书号，BNAME 书名,AUTHOR 作者，PRICE 单价，QUANTITY 库存册数 </span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">BORROW&nbsp;&nbsp; </span><span style="line-height: 150%; font-family: 宋体">借书记录。 CNO 借书卡号，BNO 书号，RDATE 还书日期</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">备注：限定每人每种书只能借一本；库存册数随借书、还书而改变。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">要求实现如下15个处理：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;1</span><span style="line-height: 150%; font-family: 宋体">． 写出建立BORROW表的SQL语句，要求定义主码完整性约束和引用完整性约束。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;2</span><span style="line-height: 150%; font-family: 宋体">． 找出借书超过5本的读者,输出借书卡号及所借图书册数。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;3</span><span style="line-height: 150%; font-family: 宋体">． 查询借阅了"水浒"一书的读者，输出姓名及班级。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;4</span><span style="line-height: 150%; font-family: 宋体">． 查询过期未还图书，输出借阅者（卡号）、书号及还书日期。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;5</span><span style="line-height: 150%; font-family: 宋体">． 查询书名包括"网络"关键词的图书，输出书号、书名、作者。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;6</span><span style="line-height: 150%; font-family: 宋体">． 查询现有图书中价格最高的图书，输出书名及作者。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;7</span><span style="line-height: 150%; font-family: 宋体">． 查询当前借了"计算方法"但没有借"计算方法习题集"的读者，输出其借书卡号，并按卡号降序排序输出。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;8</span><span style="line-height: 150%; font-family: 宋体">． 将"C01"班同学所借图书的还期都延长一周。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;9</span><span style="line-height: 150%; font-family: 宋体">． 从BOOKS表中删除当前无人借阅的图书记录。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;10</span><span style="line-height: 150%; font-family: 宋体">．如果经常按书名查询图书信息，请建立合适的索引。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;11</span><span style="line-height: 150%; font-family: 宋体">．在BORROW表上建立一个触发器，完成如下功能：如果读者借阅的书名是"数据库技术及应用"，就将该读者的借阅记录保存在</span></p>
<p style="line-height: 150%"></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">BORROW_SAVE</span><span style="line-height: 150%; font-family: 宋体">表中（注ORROW_SAVE表结构同BORROW表）。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;12</span><span style="line-height: 150%; font-family: 宋体">．建立一个视图，显示"力01"班学生的借书信息（只要求显示姓名和书名）。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;13</span><span style="line-height: 150%; font-family: 宋体">．查询当前同时借有"计算方法"和"组合数学"两本书的读者，输出其借书卡号，并按卡号升序排序输出。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;14</span><span style="line-height: 150%; font-family: 宋体">．假定在建BOOKS表时没有定义主码，写出为BOOKS表追加定义主码的语句。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;15</span><span style="line-height: 150%; font-family: 宋体">．对CARD表做如下修改：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; a. </span><span style="line-height: 150%; font-family: 宋体">将NAME最大列宽增加到10个字符（假定原为6个字符）。</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; b. </span><span style="line-height: 150%; font-family: 宋体">为该表增加1列NAME（系名），可变长，最大20个字符。</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">1. </span><span style="line-height: 150%; font-family: 宋体">写出建立BORROW表的SQL语句，要求定义主码完整性约束和引用完整性约束</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">CREATE TABLE BORROW(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; CNO int FOREIGN KEY REFERENCES CARD(CNO),</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; BNO int FOREIGN KEY REFERENCES BOOKS(BNO),</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; RDATE datetime,</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; PRIMARY KEY(CNO,BNO)) </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">2. </span><span style="line-height: 150%; font-family: 宋体">找出借书超过5本的读者,输出借书卡号及所借图书册数</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT CNO,</span><span style="line-height: 150%; font-family: 宋体">借图书册数=COUNT(*)</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">FROM BORROW</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">GROUP BY CNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">HAVING COUNT(*)&gt;5</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">3. </span><span style="line-height: 150%; font-family: 宋体">查询借阅了"水浒"一书的读者，输出姓名及班级</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT * FROM CARD c</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE EXISTS(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; SELECT * FROM BORROW a,BOOKS b </span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; WHERE a.BNO=b.BNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND b.BNAME=N'</span><span style="line-height: 150%; font-family: 宋体">水浒'</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND a.CNO=c.CNO) </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">4. </span><span style="line-height: 150%; font-family: 宋体">查询过期未还图书，输出借阅者（卡号）、书号及还书日期</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT * FROM BORROW </span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE RDATE&lt;GETDATE() </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">5. </span><span style="line-height: 150%; font-family: 宋体">查询书名包括"网络"关键词的图书，输出书号、书名、作者</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT BNO,BNAME,AUTHOR FROM BOOKS</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE BNAME LIKE N'%</span><span style="line-height: 150%; font-family: 宋体">网络%' </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">6. </span><span style="line-height: 150%; font-family: 宋体">查询现有图书中价格最高的图书，输出书名及作者</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT BNO,BNAME,AUTHOR FROM BOOKS</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE PRICE=(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; SELECT MAX(PRICE) FROM BOOKS) </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">7. </span><span style="line-height: 150%; font-family: 宋体">查询当前借了"计算方法"但没有借"计算方法习题集"的读者，输出其借书卡号，并按卡号降序排序输出</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT a.CNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">FROM BORROW a,BOOKS b</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE a.BNO=b.BNO AND b.BNAME=N'</span><span style="line-height: 150%; font-family: 宋体">计算方法'</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; AND NOT EXISTS(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT * FROM BORROW aa,BOOKS bb</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE aa.BNO=bb.BNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND bb.BNAME=N'</span><span style="line-height: 150%; font-family: 宋体">计算方法习题集'</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND aa.CNO=a.CNO)</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">ORDER BY a.CNO DESC </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">8. </span><span style="line-height: 150%; font-family: 宋体">将"C01"班同学所借图书的还期都延长一周</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">FROM CARD a,BORROW b</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE a.CNO=b.CNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; AND a.CLASS=N'C01' </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">9. </span><span style="line-height: 150%; font-family: 宋体">从BOOKS表中删除当前无人借阅的图书记录</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">DELETE A FROM BOOKS a</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE NOT EXISTS(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; SELECT * FROM BORROW</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; WHERE BNO=a.BNO) </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">10. </span><span style="line-height: 150%; font-family: 宋体">如果经常按书名查询图书信息，请建立合适的索引</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">11. </span><span style="line-height: 150%; font-family: 宋体">在BORROW表上建立一个触发器，完成如下功能：如果读者借阅的书名是"数据库技术及应用"，就将该读者的借阅记录保存在BORROW_SAVE</span></p>
<p style="line-height: 150%"></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">表中（注ORROW_SAVE表结构同BORROW表）</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">CREATE TRIGGER TR_SAVE ON BORROW</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">FOR INSERT,UPDATE</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">AS</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">IF @@ROWCOUNT&gt;0</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">INSERT BORROW_SAVE SELECT i.*</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">FROM INSERTED i,BOOKS b</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE i.BNO=b.BNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; AND b.BNAME=N'</span><span style="line-height: 150%; font-family: 宋体">数据库技术及应用' </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">12. </span><span style="line-height: 150%; font-family: 宋体">建立一个视图，显示"力01"班学生的借书信息（只要求显示姓名和书名）</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">CREATE VIEW V_VIEW</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">AS</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT a.NAME,b.BNAME</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">FROM BORROW ab,CARD a,BOOKS b</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE ab.CNO=a.CNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; AND ab.BNO=b.BNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; AND a.CLASS=N'</span><span style="line-height: 150%; font-family: 宋体">力01'</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">13. </span><span style="line-height: 150%; font-family: 宋体">查询当前同时借有"计算方法"和"组合数学"两本书的读者，输出其借书卡号，并按卡号升序排序输出</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT a.CNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">FROM BORROW a,BOOKS b</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE a.BNO=b.BNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; AND b.BNAME IN(N'</span><span style="line-height: 150%; font-family: 宋体">计算方法',N'组合数学')</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">GROUP BY a.CNO</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">HAVING COUNT(*)=2</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">ORDER BY a.CNO DESC </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">14. </span><span style="line-height: 150%; font-family: 宋体">假定在建BOOKS表时没有定义主码，写出为BOOKS表追加定义主码的语句</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">ALTER TABLE BOOKS ADD PRIMARY KEY(BNO) </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">15.1 </span><span style="line-height: 150%; font-family: 宋体">将NAME最大列宽增加到10个字符（假定原为6个字符）</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">ALTER TABLE CARD ALTER COLUMN NAME varchar(10) </span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">15.2 </span><span style="line-height: 150%; font-family: 宋体">为该表增加1列NAME（系名），可变长，最大20个字符</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">ALTER TABLE CARD ADD </span><span style="line-height: 150%; font-family: 宋体">系名 varchar(20)</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">问题描述：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">为管理岗位业务培训信息，建立3个表:</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">S (S#,SN,SD,SA)&nbsp;&nbsp; S#,SN,SD,SA </span><span style="line-height: 150%; font-family: 宋体">分别代表学号、学员姓名、所属单位、学员年龄</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">C (C#,CN )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C#,CN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="line-height: 150%; font-family: 宋体">分别代表课程编号、课程名称</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SC ( S#,C#,G )&nbsp;&nbsp;&nbsp; S#,C#,G&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="line-height: 150%; font-family: 宋体">分别代表学号、所选修的课程编号、学习成绩</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">要求实现如下5个处理：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;1. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询选修课程名称为&#8217;税收基础&#8217;的学员学号和姓名</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;2. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询选修课程编号为&#8217;C2&#8217;的学员姓名和所属单位</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;3. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询不选修课程编号为&#8217;C5&#8217;的学员姓名和所属单位</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;4. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;5. </span><span style="line-height: 150%; font-family: 宋体">查询选修了课程的学员人数</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;6. </span><span style="line-height: 150%; font-family: 宋体">查询选修课程超过5门的学员学号和所属单位</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">1. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询选修课程名称为&#8217;税收基础&#8217;的学员学号和姓名 </span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT SN,SD FROM S</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE [S#] IN(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; SELECT [S#] FROM C,SC</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; WHERE C.[C#]=SC.[C#]</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND CN=N'</span><span style="line-height: 150%; font-family: 宋体">税收基础')</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">2. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询选修课程编号为&#8217;C2&#8217;的学员姓名和所属单位</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT S.SN,S.SD FROM S,SC</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE S.[S#]=SC.[S#]</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; AND SC.[C#]='C2'</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">3. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询不选修课程编号为&#8217;C5&#8217;的学员姓名和所属单位</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT SN,SD FROM S</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE [S#] NOT IN(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; SELECT [S#] FROM SC </span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; WHERE [C#]='C5')</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">4. </span><span style="line-height: 150%; font-family: 宋体">使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT SN,SD FROM S</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE [S#] IN(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; SELECT [S#] FROM SC </span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RIGHT JOIN C ON SC.[C#]=C.[C#]</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; GROUP BY [S#]</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; HAVING COUNT(*)=COUNT(DISTINCT [S#]))</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">5. </span><span style="line-height: 150%; font-family: 宋体">查询选修了课程的学员人数</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT </span><span style="line-height: 150%; font-family: 宋体">学员人数=COUNT(DISTINCT [S#]) FROM SC</span></p>
<p style="line-height: 150%">&nbsp;</p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">6. </span><span style="line-height: 150%; font-family: 宋体">查询选修课程超过5门的学员学号和所属单位</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">--</span><span style="line-height: 150%; font-family: 宋体">实现代码：</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">SELECT SN,SD FROM S</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">WHERE [S#] IN(</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; SELECT [S#] FROM SC </span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; GROUP BY [S#]</span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体">&nbsp;&nbsp;&nbsp; HAVING COUNT(DISTINCT [C#])&gt;5)</span></p><img src ="http://www.blogjava.net/wshao/aggbug/408293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:37 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL的四种连接-左外连接、右外连接、内连接、全连接</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408280.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408280.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408280.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408280.html</trackback:ping><description><![CDATA[<p>今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的，导致平时的数据记录要进行一些限制性处理，其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果。</p>
<p>&nbsp;</p>
<p>联接条件可在FROM或WHERE子句中指定，建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件，以进一步筛选联接条件所选的行。&nbsp;&nbsp; &nbsp;<br />联接可分为以下几类：&nbsp;&nbsp; &nbsp;</p>
<p><br /><strong><span style="color: #ff0000">1、内联接</span></strong>（典型的联接运算，使用像 = &nbsp;或 &lt;&gt; 之类的比较运算符）。包括相等联接和自然联接。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如，检索 students和courses表中学生标识号相同的所有行。&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><strong><span style="color: #ff0000">2、外联接</span></strong>。外联接可以是左向外联接、右向外联接或完整外部联接。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />在 FROM子句中指定外联接时，可以由下列几组关键字中的一组指定： &nbsp; &nbsp;&nbsp;</p>
<p><span style="color: #ff0000">1）<span style="color: #000000">LEFT &nbsp;JOIN或LEFT OUTER JOIN </span></span>&nbsp; &nbsp;&nbsp;<br />左向外联接的结果集包括 &nbsp;LEFT OUTER子句中指定的左表的所有行，而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行，则在相关联的结果集行中右表的所有选择列表列均为空值。 &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</p>
<p><span style="color: #ff0000">2）<span style="color: #000000">RIGHT &nbsp;JOIN 或 RIGHT &nbsp;OUTER &nbsp;JOIN </span></span>&nbsp; &nbsp;&nbsp;<br />右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行，则将为左表返回空值。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br /><span style="color: #ff0000">3）<span style="color: #000000">FULL &nbsp;JOIN 或 FULL OUTER JOIN</span></span><br />完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时，则另一个表的选择列表列包含空值。如果表之间有匹配行，则整个结果集行包含基表的数据值。&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><strong><span style="color: #ff0000">3、交叉联接 </span></strong>&nbsp;&nbsp;<br />交叉联接返回左表中的所有行，左表中的每一行与右表中的所有行组合。交叉联接也称作<span style="color: #ff0000">笛卡尔积</span>。&nbsp;&nbsp; &nbsp;<br /><br />FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定；但是，用左或右向外联接指定表或视图时，表或视图的<span style="color: #ff0000">顺序</span>很重要。有关使用左或右向外联接排列表的更多信息，请参见使用外联接。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #ff0000">例子</span>： &nbsp;&nbsp;</p>
<p>-------------------------------------------------<br />&nbsp; a表 &nbsp; &nbsp; id &nbsp; name &nbsp; &nbsp; b表 &nbsp; &nbsp; id &nbsp; job &nbsp; parent_id &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; 张3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; 23 &nbsp; &nbsp; 1 &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 &nbsp; 李四 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 &nbsp; &nbsp; 34 &nbsp; &nbsp; 2 &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 &nbsp; 王武 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 &nbsp; &nbsp; 34 &nbsp; &nbsp; 4 &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp; a.id同parent_id &nbsp; 存在关系&nbsp;&nbsp;&nbsp;</p>
<p>--------------------------------------------------&nbsp;&nbsp; &nbsp;<br /><span style="color: #0000ff">&nbsp;1） 内连接 </span>&nbsp;&nbsp;<br />&nbsp; select &nbsp; a.*,b.* &nbsp; from &nbsp; a &nbsp; inner &nbsp; join &nbsp; b &nbsp; &nbsp; on &nbsp; a.id=b.parent_id &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp; 结果是 &nbsp; &nbsp;&nbsp;<br />&nbsp; 1 &nbsp; 张3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; 23 &nbsp; &nbsp; 1 &nbsp;&nbsp;<br />&nbsp; 2 &nbsp; 李四 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; 34 &nbsp; &nbsp; 2 &nbsp;&nbsp;<br />&nbsp; &nbsp;&nbsp;<br />&nbsp;<span style="color: #0000ff">&nbsp;2）左连接&nbsp;&nbsp;</span>&nbsp;<br />&nbsp; select &nbsp; a.*,b.* &nbsp; from &nbsp; a &nbsp; left &nbsp; join &nbsp; b &nbsp; &nbsp; on &nbsp; a.id=b.parent_id &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp; 结果是 &nbsp; &nbsp;&nbsp;<br />&nbsp; 1 &nbsp; 张3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; 23 &nbsp; &nbsp; 1 &nbsp;&nbsp;<br />&nbsp; 2 &nbsp; 李四 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; 34 &nbsp; &nbsp; 2 &nbsp;&nbsp;<br />&nbsp; 3 &nbsp; 王武 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;null&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;<span style="color: #0000ff">3）&nbsp;右连接 &nbsp;&nbsp;</span><br />&nbsp; select &nbsp; a.*,b.* &nbsp; from &nbsp; a &nbsp; right &nbsp; join &nbsp; b &nbsp; &nbsp; on &nbsp; a.id=b.parent_id &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp; 结果是 &nbsp; &nbsp;&nbsp;<br />&nbsp; 1 &nbsp; 张3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; 23 &nbsp; &nbsp; 1 &nbsp;&nbsp;<br />&nbsp; 2 &nbsp; 李四 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; 34 &nbsp; &nbsp; 2 &nbsp;&nbsp;<br />&nbsp; null &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 &nbsp; &nbsp; 34 &nbsp; &nbsp; 4 &nbsp;&nbsp;<br />&nbsp; &nbsp;&nbsp;<br />&nbsp;<span style="color: #0000ff">4）&nbsp;完全连接&nbsp;</span>&nbsp;&nbsp;<br />&nbsp; select &nbsp; a.*,b.* &nbsp; from &nbsp; a &nbsp; full &nbsp; join &nbsp; b &nbsp; &nbsp; on &nbsp; a.id=b.parent_id&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp; 结果是 &nbsp; &nbsp;&nbsp;<br />&nbsp; 1 &nbsp; 张3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1 &nbsp; &nbsp; 23 &nbsp; &nbsp; 1 &nbsp;&nbsp;<br />&nbsp; 2 &nbsp; 李四 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;2 &nbsp; &nbsp; 34 &nbsp; &nbsp; 2 &nbsp;&nbsp;<br />&nbsp; null &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 　　&nbsp; 3 &nbsp; &nbsp; 34 &nbsp; &nbsp; 4 &nbsp;&nbsp;<br />&nbsp; 3 &nbsp; 王武 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; null</p><img src ="http://www.blogjava.net/wshao/aggbug/408280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:19 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>