﻿<?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-java-随笔分类-数据库</title><link>http://www.blogjava.net/zhaozhenlin1224/category/43799.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 23 Sep 2011 16:20:07 GMT</lastBuildDate><pubDate>Fri, 23 Sep 2011 16:20:07 GMT</pubDate><ttl>60</ttl><item><title>mysql 管理笔记</title><link>http://www.blogjava.net/zhaozhenlin1224/archive/2011/01/14/342967.html</link><dc:creator>java/j2ee</dc:creator><author>java/j2ee</author><pubDate>Fri, 14 Jan 2011 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhaozhenlin1224/archive/2011/01/14/342967.html</guid><wfw:comment>http://www.blogjava.net/zhaozhenlin1224/comments/342967.html</wfw:comment><comments>http://www.blogjava.net/zhaozhenlin1224/archive/2011/01/14/342967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaozhenlin1224/comments/commentRss/342967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaozhenlin1224/services/trackbacks/342967.html</trackback:ping><description><![CDATA[一、mysql默认空闲时间修改<br />
&nbsp;linux系统配置文件：/etc/my.cnf 增加<br />
&nbsp;<font face="宋体"> [mysqld]<br />
&nbsp;
wait_timeout=</font>2880000<br />
<font face="宋体">&nbsp; # /etc/init.d/mysql restart</font><br />
&nbsp; 或者登录mysql执行set global wait_timeout=60;<br />
二 修改字符集<br />
&nbsp; 在my.cf文件的[mysqld]段设置：<br />
&nbsp;
default-character-set=utf8<br />
&nbsp; 程序连接的后缀加上useUnicode=true&amp;characterEncoding=utf-8<br />三 命令行连接制定编码<br />&nbsp;&nbsp; 我们一般用命令行source导入初始化数据，但这些数据格式是utf8的。如果登录的时候不制定连接编码，导入的就会是乱码。<br />&nbsp; 命令行如下mysql -uroot -p --default-character-set=utf8<img src ="http://www.blogjava.net/zhaozhenlin1224/aggbug/342967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaozhenlin1224/" target="_blank">java/j2ee</a> 2011-01-14 11:07 <a href="http://www.blogjava.net/zhaozhenlin1224/archive/2011/01/14/342967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JPA</title><link>http://www.blogjava.net/zhaozhenlin1224/archive/2010/10/26/336204.html</link><dc:creator>java/j2ee</dc:creator><author>java/j2ee</author><pubDate>Tue, 26 Oct 2010 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/zhaozhenlin1224/archive/2010/10/26/336204.html</guid><wfw:comment>http://www.blogjava.net/zhaozhenlin1224/comments/336204.html</wfw:comment><comments>http://www.blogjava.net/zhaozhenlin1224/archive/2010/10/26/336204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaozhenlin1224/comments/commentRss/336204.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaozhenlin1224/services/trackbacks/336204.html</trackback:ping><description><![CDATA[JPA 是一种规范,hibernate是一种实现产品.<br />
persistemt.xml放在类路径的meta-inf文件夹下面.<br />
先建表,后写配置和bean,是传统的数据建模.先写配置和实体bean,再生成表,是领域建模.<br />
<br />
<img src ="http://www.blogjava.net/zhaozhenlin1224/aggbug/336204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaozhenlin1224/" target="_blank">java/j2ee</a> 2010-10-26 17:53 <a href="http://www.blogjava.net/zhaozhenlin1224/archive/2010/10/26/336204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql面试题大全</title><link>http://www.blogjava.net/zhaozhenlin1224/archive/2010/02/23/313689.html</link><dc:creator>java/j2ee</dc:creator><author>java/j2ee</author><pubDate>Tue, 23 Feb 2010 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhaozhenlin1224/archive/2010/02/23/313689.html</guid><wfw:comment>http://www.blogjava.net/zhaozhenlin1224/comments/313689.html</wfw:comment><comments>http://www.blogjava.net/zhaozhenlin1224/archive/2010/02/23/313689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaozhenlin1224/comments/commentRss/313689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaozhenlin1224/services/trackbacks/313689.html</trackback:ping><description><![CDATA[<p><span><span>Student(S#,Sname,Sage,Ssex) 学生表&nbsp;&nbsp;&nbsp;&nbsp; <br />
Course(C#,Cname,T#) 课程表&nbsp;&nbsp;&nbsp;&nbsp; <br />
SC(S#,C#,score) 成绩表&nbsp;&nbsp;&nbsp;&nbsp; <br />
Teacher(T#,Tname) 教师表&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
问题：&nbsp;&nbsp;&nbsp;&nbsp; <br />
1、查询&#8220;001&#8221;课程比&#8220;002&#8221;课程成绩高的所有学生的学号；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; from SC where C#='002') b&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; where a.score&gt;b.score and a.s#=b.s#;&nbsp;&nbsp;&nbsp;&nbsp; <br />
2、查询平均成绩大于60分的同学的学号和平均成绩；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select S#,avg(score)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from sc&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; group by S# having avg(score) &gt;60;&nbsp;&nbsp;&nbsp;&nbsp; <br />
3、查询所有同学的学号、姓名、选课数、总成绩；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select Student.S#,Student.Sname,count(SC.C#),sum(score)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; from Student left Outer join SC on Student.S#=SC.S#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; group by Student.S#,Sname&nbsp;&nbsp;&nbsp;&nbsp; <br />
4、查询姓&#8220;李&#8221;的老师的个数；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select count(distinct(Tname))&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; from Teacher&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; where Tname like '李%';&nbsp;&nbsp;&nbsp;&nbsp; <br />
5、查询没学过&#8220;叶平&#8221;老师课的同学的学号、姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select Student.S#,Student.Sname&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from Student&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where S# not in (select distinct( SC.S#) from SC,Course,Teacher where&nbsp; SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');&nbsp;&nbsp;&nbsp;&nbsp; <br />
6、查询学过&#8220;001&#8221;并且也学过编号&#8220;002&#8221;课程的同学的学号、姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; 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');&nbsp;&nbsp;&nbsp;&nbsp; <br />
7、查询学过&#8220;叶平&#8221;老师所教的所有课的同学的学号、姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select S#,Sname&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; from Student&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; 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&nbsp; where Teacher.T#=Course.T# and Tname='叶平'));&nbsp;&nbsp;&nbsp;&nbsp; <br />
8、查询课程编号&#8220;002&#8221;的成绩比课程编号&#8220;001&#8221;课程低的所有同学的学号、姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; 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&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 &lt;score;&nbsp;&nbsp;&nbsp;&nbsp; <br />
9、查询所有课程成绩小于60分的同学的学号、姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select S#,Sname&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; from Student&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score&gt;60);&nbsp;&nbsp;&nbsp;&nbsp; <br />
10、查询没有学全所有课的同学的学号、姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select Student.S#,Student.Sname&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from Student,SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# group by&nbsp; Student.S#,Student.Sname having count(C#) &lt;(select count(C#) from Course);&nbsp;&nbsp;&nbsp;&nbsp; <br />
11、查询至少有一门课与学号为&#8220;1001&#8221;的同学所学相同的同学的学号和姓名；&nbsp;&nbsp;&nbsp;&nbsp; <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';&nbsp;&nbsp;&nbsp;&nbsp; <br />
12、查询至少学过学号为&#8220;001&#8221;同学所有一门课的其他同学学号和姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select distinct SC.S#,Sname&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from Student,SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# and C# in (select C# from SC where S#='001');&nbsp;&nbsp;&nbsp;&nbsp; <br />
13、把&#8220;SC&#8221;表中&#8220;叶平&#8221;老师教的课的成绩都更改为此课程的平均成绩；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; update SC set score=(select avg(SC_2.score)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from SC SC_2&nbsp;&nbsp;&nbsp;&nbsp; <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='叶平');&nbsp;&nbsp;&nbsp;&nbsp; <br />
14、查询和&#8220;1002&#8221;号的同学学习的课程完全相同的其他同学学号和姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select S# from SC where C# in (select C# from SC where S#='1002')&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; group by S# having count(*)=(select count(*) from SC where S#='1002');&nbsp;&nbsp;&nbsp;&nbsp; <br />
15、删除学习&#8220;叶平&#8221;老师课的SC表记录；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; Delect SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from course ,Teacher&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';&nbsp;&nbsp;&nbsp;&nbsp; <br />
16、向SC表中插入一些记录，这些记录要求符合以下条件：没有上过编号&#8220;003&#8221;课程的同学学号、2、&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 号课的平均成绩；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; Insert SC select S#,'002',(Select avg(score)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');&nbsp;&nbsp;&nbsp;&nbsp; <br />
17、按平均成绩从高到低显示所有学生的&#8220;数据库&#8221;、&#8220;企业管理&#8221;、&#8220;英语&#8221;三门的课程成绩，按如下形式显示： 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT S# as 学生ID&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM SC AS t&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; GROUP BY S#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; ORDER BY avg(t.score)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
18、查询各科成绩最高和最低的分：以如下形式显示：课程ID，最高分，最低分&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM SC L ,SC AS R&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; WHERE L.C# = R.C# and&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L.score = (SELECT MAX(IL.score)&nbsp;&nbsp;&nbsp;&nbsp; <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&nbsp;&nbsp;&nbsp;&nbsp; <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#&nbsp;&nbsp;&nbsp;&nbsp; <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#)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R.Score = (SELECT MIN(IR.score)&nbsp;&nbsp;&nbsp;&nbsp; <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&nbsp;&nbsp;&nbsp;&nbsp; <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#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY IR.C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );&nbsp;&nbsp;&nbsp;&nbsp; <br />
19、按各科平均成绩从低到高和及格率的百分数从高到低顺序&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0) AS 平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN&nbsp; isnull(score,0)&gt;=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM SC T,Course&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where t.C#=course.C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; GROUP BY t.C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; ORDER BY 100 * SUM(CASE WHEN&nbsp; isnull(score,0)&gt;=60 THEN 1 ELSE 0 END)/COUNT(*) DESC&nbsp;&nbsp;&nbsp;&nbsp; <br />
20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理（001），马克思（002），OO&amp;UML （003），数据库（004）&nbsp;&nbsp;&nbsp;&nbsp; <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 企业管理平均分&nbsp;&nbsp;&nbsp;&nbsp; <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 企业管理及格百分数&nbsp;&nbsp;&nbsp;&nbsp; <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 马克思平均分&nbsp;&nbsp;&nbsp;&nbsp; <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 马克思及格百分数&nbsp;&nbsp;&nbsp;&nbsp; <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平均分&nbsp;&nbsp;&nbsp;&nbsp; <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及格百分数&nbsp;&nbsp;&nbsp;&nbsp; <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 数据库平均分&nbsp;&nbsp;&nbsp;&nbsp; <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 数据库及格百分数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
21、查询不同老师所教不同课程平均分从高到低显示&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ＩＤ,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM SC AS T,Course AS C ,Teacher AS Z&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where T.C#=C.C# and C.T#=Z.T#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; GROUP BY C.C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; ORDER BY AVG(Score) DESC&nbsp;&nbsp;&nbsp;&nbsp; <br />
22、查询如下课程成绩第 3 名到第 6 名的学生成绩单：企业管理（001），马克思（002），UML （003），数据库（004）&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; [学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT&nbsp; DISTINCT top 3&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SC.S# As 学生学号,&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student.Sname AS 学生姓名 ,&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1.score AS 企业管理,&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T2.score AS 马克思,&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T3.score AS UML,&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T4.score AS 数据库,&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM Student,SC&nbsp; LEFT JOIN SC AS T1&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T2&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T3&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T4&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE student.S#=SC.S# and&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOT IN&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DISTINCT&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOP 15 WITH TIES&nbsp;&nbsp;&nbsp;&nbsp; <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)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM sc&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T1&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T2&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T3&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T4&nbsp;&nbsp;&nbsp;&nbsp; <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'&nbsp;&nbsp;&nbsp;&nbsp; <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);&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ &lt;60]&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT SC.C# as 课程ID, Cname as 课程名称&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score &lt; 60 THEN 1 ELSE 0 END) AS [60 -]&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM SC,Course&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where SC.C#=Course.C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; GROUP BY SC.C#,Cname;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
24、查询学生平均成绩及其名次&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT 1+(SELECT COUNT( distinct 平均成绩)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT S#,AVG(score) AS 平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY S#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) AS T1&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE 平均成绩 &gt; T2.平均成绩) as 名次,&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S# as 学生学号,平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM (SELECT S#,AVG(score) 平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY S#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) AS T2&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; ORDER BY 平均成绩 desc;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
25、查询各科成绩前三名的记录:(不考虑成绩并列情况)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC t1&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE score IN (SELECT TOP 3 score&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t1.C#= C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY score DESC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY t1.C#;&nbsp;&nbsp;&nbsp;&nbsp; <br />
26、查询每门课程被选修的学生数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select c#,count(S#) from sc group by C#;&nbsp;&nbsp;&nbsp;&nbsp; <br />
27、查询出只选修了一门课程的全部学生的学号和姓名&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select SC.S#,Student.Sname,count(C#) AS 选课数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; from SC ,Student&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;&nbsp;&nbsp;&nbsp;&nbsp; <br />
28、查询男生、女生人数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女'；&nbsp;&nbsp;&nbsp;&nbsp; <br />
29、查询姓&#8220;张&#8221;的学生名单&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT Sname FROM Student WHERE Sname like '张%';&nbsp;&nbsp;&nbsp;&nbsp; <br />
30、查询同名同性学生名单，并统计同名人数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select Sname,count(*) from Student group by Sname having&nbsp; count(*)&gt;1;;&nbsp;&nbsp;&nbsp;&nbsp; <br />
31、1981年出生的学生名单(注：Student表中Sage列的类型是datetime)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select Sname,&nbsp; CONVERT(char (11),DATEPART(year,Sage)) as age&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from student&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where&nbsp; CONVERT(char(11),DATEPART(year,Sage))='1981';&nbsp;&nbsp;&nbsp;&nbsp; <br />
32、查询每门课程的平均成绩，结果按平均成绩升序排列，平均成绩相同时，按课程号降序排列&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;&nbsp;&nbsp;&nbsp;&nbsp; <br />
33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select Sname,SC.S# ,avg(score)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from Student,SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# group by SC.S#,Sname having&nbsp;&nbsp;&nbsp; avg(score)&gt;85;&nbsp;&nbsp;&nbsp;&nbsp; <br />
34、查询课程名称为&#8220;数据库&#8221;，且分数低于60的学生姓名和分数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; Select Sname,isnull(score,0)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from Student,SC,Course&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where SC.S#=Student.S# and SC.C#=Course.C# and&nbsp; Course.Cname='数据库'and score &lt;60;&nbsp;&nbsp;&nbsp;&nbsp; <br />
35、查询所有学生的选课情况；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT SC.S#,SC.C#,Sname,Cname&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM SC,Student,Course&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where SC.S#=Student.S# and SC.C#=Course.C# ;&nbsp;&nbsp;&nbsp;&nbsp; <br />
36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT&nbsp; distinct student.S#,student.Sname,SC.C#,SC.score&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; FROM student,Sc&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; WHERE SC.score&gt;=70 AND SC.S#=student.S#;&nbsp;&nbsp;&nbsp;&nbsp; <br />
37、查询不及格的课程，并按课程号从大到小排列&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select c# from sc where scor e &lt;60 order by C# ;&nbsp;&nbsp;&nbsp;&nbsp; <br />
38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名；&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score&gt;80 and C#='003';&nbsp;&nbsp;&nbsp;&nbsp; <br />
39、求选了课程的学生人数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select count(*) from sc;&nbsp;&nbsp;&nbsp;&nbsp; <br />
40、查询选修&#8220;叶平&#8221;老师所授课程的学生中，成绩最高的学生姓名及其成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select Student.Sname,score&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from Student,SC,Course C,Teacher&nbsp;&nbsp;&nbsp;&nbsp; <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# );&nbsp;&nbsp;&nbsp;&nbsp; <br />
41、查询各个课程及相应的选修人数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select count(*) from sc group by C#;&nbsp;&nbsp;&nbsp;&nbsp; <br />
42、查询不同课程成绩相同的学生的学号、课程号、学生成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; select distinct&nbsp; A.S#,B.score from SC A&nbsp; ,SC B where A.Score=B.Score and A.C# &lt;&gt;B.C# ;&nbsp;&nbsp;&nbsp;&nbsp; <br />
43、查询每门功成绩最好的前两名&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC t1&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE score IN (SELECT TOP 2 score&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t1.C#= C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY score DESC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY t1.C#;&nbsp;&nbsp;&nbsp;&nbsp; <br />
44、统计每门课程的学生选修人数（超过10人的课程才统计）。要求输出课程号和选修人数，查询结果按人数降序排列，查询结果按人数降序排列，若人数相同，按课程号升序排列&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select&nbsp; C# as 课程号,count(*) as 人数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from&nbsp; sc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; group&nbsp; by&nbsp; C#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; order&nbsp; by&nbsp; count(*) desc,c#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
45、检索至少选修两门课程的学生学号&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select&nbsp; S#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from&nbsp; sc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; group&nbsp; by&nbsp; s#&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; having&nbsp; count(*)&nbsp; &gt;&nbsp; =&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; <br />
46、查询全部学生都选修的课程的课程号和课程名&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select&nbsp; C#,Cname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; from&nbsp; Course&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where&nbsp; C#&nbsp; in&nbsp; (select&nbsp; c#&nbsp; from&nbsp; sc group&nbsp; by&nbsp; c#)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
47、查询没学过&#8220;叶平&#8221;老师讲授的任一门课程的学生姓名&nbsp;&nbsp;&nbsp;&nbsp; <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='叶平');&nbsp;&nbsp;&nbsp;&nbsp; <br />
48、查询两门以上不及格课程的同学的学号及其平均成绩&nbsp;&nbsp;&nbsp;&nbsp; <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#;&nbsp;&nbsp;&nbsp;&nbsp; <br />
49、检索&#8220;004&#8221;课程分数小于60，按分数降序排列的同学学号&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; select S# from SC where C#='004'and score &lt;60 order by score desc;&nbsp;&nbsp;&nbsp;&nbsp; <br />
50、删除&#8220;002&#8221;同学的&#8220;001&#8221;课程的成绩&nbsp;&nbsp;&nbsp;&nbsp; <br />
delete from Sc where S#='001'and C#='001';&nbsp;&nbsp;&nbsp;&nbsp; <br />
问题描述：&nbsp;&nbsp;&nbsp; <br />
本题用到下面三个关系表：&nbsp;&nbsp;&nbsp; <br />
CARD&nbsp;&nbsp;&nbsp;&nbsp; 借书卡。&nbsp;&nbsp; CNO 卡号，NAME&nbsp; 姓名，CLASS 班级&nbsp;&nbsp;&nbsp; <br />
BOOKS&nbsp;&nbsp;&nbsp; 图书。&nbsp;&nbsp;&nbsp;&nbsp; BNO 书号，BNAME 书名,AUTHOR 作者，PRICE 单价，QUANTITY 库存册数&nbsp;&nbsp;&nbsp;&nbsp; <br />
BORROW&nbsp;&nbsp; 借书记录。 CNO 借书卡号，BNO 书号，RDATE 还书日期&nbsp;&nbsp;&nbsp; <br />
备注：限定每人每种书只能借一本；库存册数随借书、还书而改变。&nbsp;&nbsp;&nbsp; <br />
要求实现如下15个处理：&nbsp;&nbsp;&nbsp; <br />
&nbsp; 1． 写出建立BORROW表的SQL语句，要求定义主码完整性约束和引用完整性约束。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 2． 找出借书超过5本的读者,输出借书卡号及所借图书册数。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 3． 查询借阅了"水浒"一书的读者，输出姓名及班级。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 4． 查询过期未还图书，输出借阅者（卡号）、书号及还书日期。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 5． 查询书名包括"网络"关键词的图书，输出书号、书名、作者。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 6． 查询现有图书中价格最高的图书，输出书名及作者。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 7． 查询当前借了"计算方法"但没有借"计算方法习题集"的读者，输出其借书卡号，并按卡号降序排序输出。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 8． 将"C01"班同学所借图书的还期都延长一周。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 9． 从BOOKS表中删除当前无人借阅的图书记录。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 10．如果经常按书名查询图书信息，请建立合适的索引。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 11．在BORROW表上建立一个触发器，完成如下功能：如果读者借阅的书名是"数据库技术及应用"，就将该读者的借阅记录保存在BORROW_SAVE表中（注ORROW_SAVE表结构同BORROW表）。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 12．建立一个视图，显示"力01"班学生的借书信息（只要求显示姓名和书名）。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 13．查询当前同时借有"计算方法"和"组合数学"两本书的读者，输出其借书卡号，并按卡号升序排序输出。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 14．假定在建BOOKS表时没有定义主码，写出为BOOKS表追加定义主码的语句。&nbsp;&nbsp;&nbsp; <br />
&nbsp; 15．对CARD表做如下修改：&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; a. 将NAME最大列宽增加到10个字符（假定原为6个字符）。&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; b. 为该表增加1列NAME（系名），可变长，最大20个字符。&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
1. 写出建立BORROW表的SQL语句，要求定义主码完整性约束和引用完整性约束&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
CREATE TABLE BORROW(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; CNO int FOREIGN KEY REFERENCES CARD(CNO),&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; BNO int FOREIGN KEY REFERENCES BOOKS(BNO),&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; RDATE datetime,&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; PRIMARY KEY(CNO,BNO))&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
2. 找出借书超过5本的读者,输出借书卡号及所借图书册数&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT CNO,借图书册数=COUNT(*)&nbsp;&nbsp;&nbsp; <br />
FROM BORROW&nbsp;&nbsp;&nbsp; <br />
GROUP BY CNO&nbsp;&nbsp;&nbsp; <br />
HAVING COUNT(*)&gt;5&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
3. 查询借阅了"水浒"一书的读者，输出姓名及班级&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT * FROM CARD c&nbsp;&nbsp;&nbsp; <br />
WHERE EXISTS(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT * FROM BORROW a,BOOKS b&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; WHERE a.BNO=b.BNO&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND b.BNAME=N'水浒'&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND a.CNO=c.CNO)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
4. 查询过期未还图书，输出借阅者（卡号）、书号及还书日期&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT * FROM BORROW&nbsp;&nbsp;&nbsp;&nbsp; <br />
WHERE RDATE&lt;GETDATE()&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
5. 查询书名包括"网络"关键词的图书，输出书号、书名、作者&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT BNO,BNAME,AUTHOR FROM BOOKS&nbsp;&nbsp;&nbsp; <br />
WHERE BNAME LIKE N'%网络%'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
6. 查询现有图书中价格最高的图书，输出书名及作者&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT BNO,BNAME,AUTHOR FROM BOOKS&nbsp;&nbsp;&nbsp; <br />
WHERE PRICE=(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT MAX(PRICE) FROM BOOKS)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
7. 查询当前借了"计算方法"但没有借"计算方法习题集"的读者，输出其借书卡号，并按卡号降序排序输出&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT a.CNO&nbsp;&nbsp;&nbsp; <br />
FROM BORROW a,BOOKS b&nbsp;&nbsp;&nbsp; <br />
WHERE a.BNO=b.BNO AND b.BNAME=N'计算方法'&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; AND NOT EXISTS(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT * FROM BORROW aa,BOOKS bb&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE aa.BNO=bb.BNO&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND bb.BNAME=N'计算方法习题集'&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND aa.CNO=a.CNO)&nbsp;&nbsp;&nbsp; <br />
ORDER BY a.CNO DESC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
8. 将"C01"班同学所借图书的还期都延长一周&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)&nbsp;&nbsp;&nbsp; <br />
FROM CARD a,BORROW b&nbsp;&nbsp;&nbsp; <br />
WHERE a.CNO=b.CNO&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; AND a.CLASS=N'C01'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
9. 从BOOKS表中删除当前无人借阅的图书记录&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
DELETE A FROM BOOKS a&nbsp;&nbsp;&nbsp; <br />
WHERE NOT EXISTS(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT * FROM BORROW&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; WHERE BNO=a.BNO)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
10. 如果经常按书名查询图书信息，请建立合适的索引&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
11. 在BORROW表上建立一个触发器，完成如下功能：如果读者借阅的书名是"数据库技术及应用"，就将该读者的借阅记录保存在BORROW_SAVE表中（注ORROW_SAVE表结构同BORROW表）&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
CREATE TRIGGER TR_SAVE ON BORROW&nbsp;&nbsp;&nbsp; <br />
FOR INSERT,UPDATE&nbsp;&nbsp;&nbsp; <br />
AS&nbsp;&nbsp;&nbsp; <br />
IF @@ROWCOUNT&gt;0&nbsp;&nbsp; <br />
INSERT BORROW_SAVE SELECT i.*&nbsp;&nbsp;&nbsp; <br />
FROM INSERTED i,BOOKS b&nbsp;&nbsp;&nbsp; <br />
WHERE i.BNO=b.BNO&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; AND b.BNAME=N'数据库技术及应用'&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
12. 建立一个视图，显示"力01"班学生的借书信息（只要求显示姓名和书名）&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
CREATE VIEW V_VIEW&nbsp;&nbsp;&nbsp; <br />
AS&nbsp;&nbsp;&nbsp; <br />
SELECT a.NAME,b.BNAME&nbsp;&nbsp;&nbsp; <br />
FROM BORROW ab,CARD a,BOOKS b&nbsp;&nbsp;&nbsp; <br />
WHERE ab.CNO=a.CNO&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; AND ab.BNO=b.BNO&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; AND a.CLASS=N'力01'&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
13. 查询当前同时借有"计算方法"和"组合数学"两本书的读者，输出其借书卡号，并按卡号升序排序输出&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT a.CNO&nbsp;&nbsp;&nbsp; <br />
FROM BORROW a,BOOKS b&nbsp;&nbsp;&nbsp; <br />
WHERE a.BNO=b.BNO&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; AND b.BNAME IN(N'计算方法',N'组合数学')&nbsp;&nbsp;&nbsp; <br />
GROUP BY a.CNO&nbsp;&nbsp;&nbsp; <br />
HAVING COUNT(*)=2&nbsp;&nbsp; <br />
ORDER BY a.CNO DESC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
14. 假定在建BOOKS表时没有定义主码，写出为BOOKS表追加定义主码的语句&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
ALTER TABLE BOOKS ADD PRIMARY KEY(BNO)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
15.1 将NAME最大列宽增加到10个字符（假定原为6个字符）&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
ALTER TABLE CARD ALTER COLUMN NAME varchar(10)&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
15.2 为该表增加1列NAME（系名），可变长，最大20个字符&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
ALTER TABLE CARD ADD 系名 varchar(20)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
问题描述：&nbsp;&nbsp;&nbsp; <br />
为管理岗位业务培训信息，建立3个表:&nbsp;&nbsp;&nbsp; <br />
S (S#,SN,SD,SA)&nbsp;&nbsp; S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄&nbsp;&nbsp;&nbsp; <br />
C (C#,CN )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C#,CN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分别代表课程编号、课程名称&nbsp;&nbsp;&nbsp; <br />
SC ( S#,C#,G )&nbsp;&nbsp;&nbsp; S#,C#,G&nbsp;&nbsp;&nbsp;&nbsp; 分别代表学号、所选修的课程编号、学习成绩&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
要求实现如下5个处理：&nbsp;&nbsp;&nbsp; <br />
&nbsp; 1. 使用标准SQL嵌套语句查询选修课程名称为&#8217;税收基础&#8217;的学员学号和姓名&nbsp;&nbsp;&nbsp; <br />
&nbsp; 2. 使用标准SQL嵌套语句查询选修课程编号为&#8217;C2&#8217;的学员姓名和所属单位&nbsp;&nbsp;&nbsp; <br />
&nbsp; 3. 使用标准SQL嵌套语句查询不选修课程编号为&#8217;C5&#8217;的学员姓名和所属单位&nbsp;&nbsp;&nbsp; <br />
&nbsp; 4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位&nbsp;&nbsp;&nbsp; <br />
&nbsp; 5. 查询选修了课程的学员人数&nbsp;&nbsp;&nbsp; <br />
&nbsp; 6. 查询选修课程超过5门的学员学号和所属单位&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
1. 使用标准SQL嵌套语句查询选修课程名称为&#8217;税收基础&#8217;的学员学号和姓名&nbsp;&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT SN,SD FROM S&nbsp;&nbsp;&nbsp; <br />
WHERE [S#] IN(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT [S#] FROM C,SC&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; WHERE C.[C#]=SC.[C#]&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND CN=N'税收基础')&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
2. 使用标准SQL嵌套语句查询选修课程编号为&#8217;C2&#8217;的学员姓名和所属单位&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT S.SN,S.SD FROM S,SC&nbsp;&nbsp;&nbsp; <br />
WHERE S.[S#]=SC.[S#]&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; AND SC.[C#]='C2'&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
3. 使用标准SQL嵌套语句查询不选修课程编号为&#8217;C5&#8217;的学员姓名和所属单位&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT SN,SD FROM S&nbsp;&nbsp;&nbsp; <br />
WHERE [S#] NOT IN(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT [S#] FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; WHERE [C#]='C5')&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT SN,SD FROM S&nbsp;&nbsp;&nbsp; <br />
WHERE [S#] IN(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT [S#] FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RIGHT JOIN C ON SC.[C#]=C.[C#]&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; GROUP BY [S#]&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; HAVING COUNT(*)=COUNT(DISTINCT [S#]))&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
5. 查询选修了课程的学员人数&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
6. 查询选修课程超过5门的学员学号和所属单位&nbsp;&nbsp;&nbsp; <br />
--实现代码：&nbsp;&nbsp;&nbsp; <br />
SELECT SN,SD FROM S&nbsp;&nbsp;&nbsp; <br />
WHERE [S#] IN(&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SELECT [S#] FROM SC&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; GROUP BY [S#]&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; HAVING COUNT(DISTINCT [C#])&gt;5)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
if not object_id('cj')is null&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; drop table cj&nbsp;&nbsp;&nbsp; <br />
go&nbsp;&nbsp;&nbsp; <br />
create table cj(stuName nvarchar(10),KCM nvarchar(10),cj numeric(5,2))&nbsp;&nbsp;&nbsp;&nbsp; <br />
insert into cj select '张三','语文',98&nbsp;&nbsp;&nbsp;&nbsp; <br />
union select '李四','语文',89&nbsp;&nbsp;&nbsp;&nbsp; <br />
union select '王五','语文',67&nbsp;&nbsp;&nbsp;&nbsp; <br />
union select '周攻','语文',56&nbsp;&nbsp;&nbsp;&nbsp; <br />
union select '张三','数学',89&nbsp;&nbsp; <br />
union select '李四','数学',78&nbsp;&nbsp;&nbsp;&nbsp; <br />
union select '王五','数学',90&nbsp;&nbsp;&nbsp;&nbsp; <br />
union select '周攻','数学',87&nbsp;&nbsp;&nbsp;&nbsp; <br />
方法一：&nbsp;&nbsp;&nbsp; <br />
select stuname from&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; (select stuName,kcm,(select count(*) from cj where stuname!=a.stuname and kcm=a.kcm and cj&gt;a.cj) cnt from cj a) x&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; group by stuname having max(cnt)&lt;=1&nbsp;&nbsp; <br />
go&nbsp;&nbsp;&nbsp; <br />
方法二：&nbsp;&nbsp;&nbsp; <br />
SELECT stuname FROM cj1 a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
where cj IN(SELECT TOP 2 cj FROM cj1 WHERE kcm=a.kcm ORDER BY cj desc)&nbsp;&nbsp;&nbsp; <br />
GROUP BY stuname HAVING(count(1)&gt;1)&nbsp;&nbsp;&nbsp; <br />
方法三：&nbsp;&nbsp;&nbsp; <br />
select distinct stuname from cj a&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; where not exists(select kcm from cj b where a.stuname=stuname&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and (select count(*) from cj where kcm=b.kcm and stuname!=a.stuname and cj&gt;b.cj)&gt;1)&nbsp;&nbsp; </span></span></p>
<p><font style="background-color: #c0c0c0"><br />
<span><span><span>&nbsp;</span></span></span></font></p>
<img src ="http://www.blogjava.net/zhaozhenlin1224/aggbug/313689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaozhenlin1224/" target="_blank">java/j2ee</a> 2010-02-23 10:59 <a href="http://www.blogjava.net/zhaozhenlin1224/archive/2010/02/23/313689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL优化--操作符优化</title><link>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311306.html</link><dc:creator>java/j2ee</dc:creator><author>java/j2ee</author><pubDate>Sat, 30 Jan 2010 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311306.html</guid><wfw:comment>http://www.blogjava.net/zhaozhenlin1224/comments/311306.html</wfw:comment><comments>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaozhenlin1224/comments/commentRss/311306.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaozhenlin1224/services/trackbacks/311306.html</trackback:ping><description><![CDATA[<p><span style="font-size: small"><strong>IN 操作符</strong> <br />
用IN写出来的SQL的优点是比较容易写及清晰易懂，这比较适合现代软件开发的风格。 <br />
但是用IN的SQL性能总是比较低的，从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别： <br />
ORACLE试图将其转换成多个表的连接，如果转换不成功则先执行IN里面的子查询，再查询外层的表记录，如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功，但对于含有分组统计等方面的SQL就不能转换了。 <br />
推荐方案：在业务密集的SQL当中尽量不采用IN操作符。</span></p>
<p><span style="font-size: small"><strong>NOT IN操作符 <br />
</strong>此操作是强列推荐不使用的，因为它不能应用表的索引。 <br />
推荐方案：用NOT EXISTS 或（外连接+判断为空）方案代替</span></p>
<p><span style="font-size: small"><strong>&lt;&gt; 操作符（不等于）</strong> <br />
不等于操作符是永远不会用到索引的，因此对它的处理只会产生全表扫描。 <br />
推荐方案：用其它相同功能的操作运算代替，如 <br />
a&lt;&gt;0 改为 a&gt;0 or a&lt;0 <br />
a&lt;&gt;&#8217;&#8217; 改为 a&gt;&#8217;&#8217;</span></p>
<p><span style="font-size: small"><strong>IS NULL 或IS NOT NULL操作（判断字段是否为空）(is not null 好像可以用索引吧)</strong> <br />
判断字段是否为空一般是不会应用索引的，因为B树索引是不索引空值的。 <br />
推荐方案： <br />
用其它相同功能的操作运算代替，如 <br />
a is not null 改为 a&gt;0 或a&gt;&#8217;&#8217;等。 <br />
不允许字段为空，而用一个缺省值代替空值，如业扩申请中状态字段不允许为空，缺省为申请。</span></p>
<p><span style="font-size: small">建立位图索引（有分区的表不能建，位图索引比较难控制，如字段值太多索引会使性能下降，多人更新操作会增加数据块锁的现象）。</span></p>
<p><span style="font-size: small"><strong>&gt; 及 &lt; 操作符（大于或小于操作符）</strong> <br />
大于或小于操作符一般情况下是不用调整的，因为它有索引就会采用索引查找，但有的情况下可以对它进行优化，如一个表有100万记录，一个数值型字段A，30万记录的A=0，30万记录的A=1，39万记录的A=2，1万记录的A=3。那么执行A&gt;2与A&gt;=3的效果就有很大的区别了，因为A&gt;2时ORACLE会先找出为2的记录索引再进行比较，而A&gt;=3时ORACLE则直接找到=3的记录索引。</span></p>
<p><span style="font-size: small"><strong>LIKE操作符</strong> <br />
LIKE操作符可以应用通配符查询，里面的通配符组合可能达到几乎是任意的查询，但是如果用得不好则会产生性能上的问题，如LIKE &#8216;%5400%&#8217; 这种查询不会引用索引，而LIKE &#8216;X5400%&#8217;则会引用范围索引。一个实际例子：用YW_YHJBQK表中营业编号后面的户标识号可来查询营业编号 YY_BH LIKE &#8216;%5400%&#8217; 这个条件会产生全表扫描，如果改成YY_BH LIKE &#8217;X5400%&#8217; OR YY_BH LIKE &#8217;B5400%&#8217; 则会利用YY_BH的索引进行两个范围的查询，性能肯定大大提高。</span></p>
<img src ="http://www.blogjava.net/zhaozhenlin1224/aggbug/311306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaozhenlin1224/" target="_blank">java/j2ee</a> 2010-01-30 10:04 <a href="http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql 优化</title><link>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311305.html</link><dc:creator>java/j2ee</dc:creator><author>java/j2ee</author><pubDate>Sat, 30 Jan 2010 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311305.html</guid><wfw:comment>http://www.blogjava.net/zhaozhenlin1224/comments/311305.html</wfw:comment><comments>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaozhenlin1224/comments/commentRss/311305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaozhenlin1224/services/trackbacks/311305.html</trackback:ping><description><![CDATA[<p>我觉得主要应该从5个方面进行调整： <br />
1.去掉不必要的大型表的全表扫描 <br />
2.缓存小型表的全表扫描 <br />
3.检验优化索引的使用 <br />
4.检验优化的连接技术 <br />
5.尽可能减少执行计划的Cost <br />
<br />
现在简单的举几个例子 <br />
<br />
Where子句中有&#8220;！=&#8221;将不使用索引 <br />
select account_name from test where amount != 0&nbsp; (不使用) <br />
select account_name from test where amount &gt; 0&nbsp; (使用) <br />
<br />
Where条件中对字段增加处理函数将不使用该列的索引 <br />
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' (不使用) <br />
select * from emp where hire_date = to_char('20080411','yyyymmdd') (使用) <br />
<br />
避免在索引列上使用IS NULL<br />
select * from emp where dept_code is null&nbsp; (不使用)&nbsp; is not null用索引<br />
select * from emp where dept_code &gt; 0&nbsp; (使用) <br />
<br />
通配符% 的使用 <br />
select * from emp where name like '%A'&nbsp; (不使用索引) <br />
select * from emp where name like 'A%'&nbsp; (使用索引) <br />
<br />
在含有子查询的SQL语句中,要特别注意减少对表的查询.例子： <br />
SELECT&nbsp; EMP_NO FROM EMP WHERE (GROUP,NAME) = ( SELECT <br />
COLUMN1,COLUMN2 FROM&nbsp; TEST WHERE&nbsp; TEST_ID = 604) <br />
<br />
最高效的删除重复记录方法 ( 因为使用了ROWID)例子： <br />
DELETE&nbsp; FROM&nbsp; EMP E&nbsp; WHERE&nbsp; E.ROWID &gt; (SELECT MIN(X.ROWID) <br />
FROM&nbsp; EMP X&nbsp; WHERE&nbsp; X.EMP_NO = E.EMP_NO); <br />
<br />
sql语句用大写的；因为oracle总是先解析sql语句，把小写的字母转换成大写的再执行 <br />
<br />
在java代码中用到preparedStatement的時候尽量少用连接符&#8220;＋&#8221;连接字符串！ <br />
</p>
<img src ="http://www.blogjava.net/zhaozhenlin1224/aggbug/311305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaozhenlin1224/" target="_blank">java/j2ee</a> 2010-01-30 10:01 <a href="http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql（exists的一些例子）</title><link>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311301.html</link><dc:creator>java/j2ee</dc:creator><author>java/j2ee</author><pubDate>Sat, 30 Jan 2010 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311301.html</guid><wfw:comment>http://www.blogjava.net/zhaozhenlin1224/comments/311301.html</wfw:comment><comments>http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaozhenlin1224/comments/commentRss/311301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaozhenlin1224/services/trackbacks/311301.html</trackback:ping><description><![CDATA[<p>已知关系模式S(SNO,SNAME,SEX,SAGE,SDEPT)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SC(SNO,CNO,GRADE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C(CNO.CNME,TEACHER)<br />
问题一:查询选修了数据库课程的学生学号和姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)SELECT SNO,SNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM S<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE SNO IN(SELECT SNO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE CNO IN(SELECT CNO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE&nbsp; CNAME='数据库'))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)SELECT SNO,SNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM S<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE S.SNO=SC.SNO AND EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE SC.CNO=C.CNO AND CNAME='数据库'))<br />
问题二:查询没有选修数据库课程的学生学号和姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)SELECT SNO,SNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM S<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE SNO NOT IN(SELECT SNO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE CNO IN (SELECT CNO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE CNAME='数据库'))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)SELECT SNO,SNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM S<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE NOT EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE S.SNO=SC.SNO AND EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE SC.CNO=C.CNO AND CNAME='数据库'))<br />
问题三:查询只选修了数据库课程的学生学号和姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)SELECT SNO,SNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM S<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE SNO NOT IN(SELET SNO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE&nbsp; CNO NOT IN(SELECT CNO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE CNAME='数据库'))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （我觉得问题应该是至少选修了数据库课程的学生学好和姓名？？？）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)SELECT SNO,SNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM S<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE NOT EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE S.SNO=SC.SNO AND NOT EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE SC.CNO=C.CNO AND CNAME='数据库'))<br />
问题四:查询选修了全部课程,且每门课程都在80分以上的学生学号和姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT SNO,SNAME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM S<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE NOT EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE NOT EXISTS(SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE C.CNO=SC.CNO AND SC.SNO=S.SNO AND GRADE&gt;80))(只能用这一种方法)</p>
<img src ="http://www.blogjava.net/zhaozhenlin1224/aggbug/311301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaozhenlin1224/" target="_blank">java/j2ee</a> 2010-01-30 09:49 <a href="http://www.blogjava.net/zhaozhenlin1224/archive/2010/01/30/311301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>