`
jujunjun
  • 浏览: 3120 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

一点sql题的实现

阅读更多
//学生表
create TABLE student(
sno int(10) primary key,
sname varchar(10),
sdept varchar(10),
sage int(3)
)
inSERT INTO student VALUES(1,'aa','yw',19),(2,'bb','sx',20),(3,'cc','yy',22),(4,'dd','yw',17)
inSERT INTO student VALUES(5,'ee','yw',19),(6,'xx','sx',20),(7,'gg','yy',22)
//课程表
CREATE TABLE coures(
cno int(10) primary key,
cname varchar(10)
)
inSERT INTO coures VALUES(1,'yuwen'),(2,'shuxue')
//选课表
CREATE TABLE sc(
sno int(10) references student(sno),
cno int(10) references coures(cno),
grade int(3),
  primary key(sno,cno)
)
inSERT INTO sc VALUES(1,1,60),(2,1,76),(4,1,79),(1,2,90),(3,2,80)
inSERT INTO sc VALUES(2,2,86)

//1 查询选修课名称为'shuxue'的学员的学号和姓名
SELECT sno,sname FROM student
WHERE sno IN (SELECT sno FROM coures,sc WHERE coures.cno = sc.cno AND cname='shuxue');
//2 查询课程号为2的学员的姓名和所属单位
SELECT sno,sname,sdept FROM student
WHERE sno IN (SELECT sno FROM sc WHERE sc.cno=2)
SELECT student.sno,sname,sdept FROM student,sc
WHERE sc.cno=2 AND student.sno=sc.sno
//3 查找没有选修'shuxue'的学员的姓名和单位
SELECT sno,sname,sdept FROM student
WHERE sno NOT IN (SELECT sno FROM sc,coures WHERE sc.cno = coures.cno AND coures.cname='shuxue')
SELECT sno,sname,sdept FROM student WHERE sno NOT IN(SELECT sno FROM sc WHERE cno=2)
//4 查找出两门课程都选修的学员
SELECT sno,sname,sdept FROM student
WHERE sno in (SELECT sno FROM sc
     right join coures
     on sc.cno=coures.cno
     GROUP BY sno
     HAVING count(*)=(SELECT count(*) FROM coures)
     )
    
    //得到选修了所有课程的学生号
   SELECT sno FROM sc
        right join coures
        on sc.cno=coures.cno
        GROUP BY sno
        HAVING count(*)=(SELECT count(*) FROM coures)
//5 查询选修课的人数
SELECT count(distinct sno) FROM sc
//6 选修课超过两门的学员(包括两门)
SELECT sno,sname,sdept FROM student
WHERE sno in (SELECT sno FROM sc GROUP BY sno HAVING count(distinct cno)>=2)
************************************************************************************
CREATE TABLE coures2(
cno int(10),
cname varchar(10),
cteacher varchar(10)
)
INSERT INTO coures2 VALUES(1,'yuwen','zhangsan'),(2,'shuxue','lisi')
CREATE TABLE cs2(
sno int(10) references student(sno),
cno int(10) references coures2(cno),
grade int(3)
)
inSERT INTO cs2 VALUES(1,1,60),(1,2,90),
       (4,1,79),
       (3,2,80)
inSERT INTO cs2 VALUES(2,1,76),(2,2,86)
inSERT INTO cs2 VALUES(5,1,54),(5,2,47),(6,1,86),(6,2,16)
inSERT INTO cs2 VALUES(7,1,16)
//1 查找没有选修'lisi'老师课的学员
   SELECT cno FROM coures2 WHERE cteacher!='lisi'
   SELECT sno FROM cs2 WHERE cno IN (SELECT cno FROM coures2 WHERE cteacher='lisi')
   
SELECT student.sno,sname,sdept FROM student,cs2
WHERE student.sno=cs2.sno AND cs2.sno NOT IN(SELECT sno FROM cs2 WHERE cno IN (SELECT cno FROM coures2 WHERE cteacher='lisi'))
//2 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
SELECT s.sno,s.sname,s.sdept,avg(cs2.grade)
FROM student s,cs2,(SELECT sno FROM cs2 WHERE grade<60 GROUP BY sno HAVING count(distinct cno)>=2) a
WHERE s.sno=a.sno AND cs2.sno=a.sno
GROUP BY s.sno,s.sname
SELECT sno FROM cs2 WHERE grade<60 GROUP BY sno HAVING count(distinct cno)>=2
//3 列出既学过'shuxue',又学过'yuwen'的所有学生姓名
SELECT student.sno,student.sname,student.sdept
FROM student,(SELECT cs2.sno FROM cs2,coures c WHERE cs2.cno=c.cno AND c.cname IN ('shuxue','yuwen') GROUP BY sno HAVING count(distinct cs2.cno)=2) a
WHERE student.sno = a.sno
SELECT cs2.sno FROM cs2,coures c WHERE cs2.cno=c.cno AND c.cname IN ('shuxue','yuwen') GROUP BY sno HAVING count(distinct cs2.cno)=2
//4 列出'shuxue'成绩比'yuwen'高的学生
SELECT cs21.sno sno,cs21.cno cno,c1.cname cname,cs21.grade grade
FROM cs2 cs21,coures2 c1
WHERE (cs21.cno=c1.cno AND c1.cname='yuwen')

SELECT cs22.sno sno,cs22.cno con,c2.cname cname,cs22.grade  grade
FROM cs2 cs22,coures2 c2
WHERE (cs22.cno=c2.cno AND c2.cname='shuxue')

SELECT a.sno,a.grade as "yumen",b.grade as "shuxue"
FROM (SELECT cs21.sno sno,cs21.cno cno,c1.cname cname,cs21.grade grade
  FROM cs2 cs21,coures2 c1
  WHERE (cs21.cno=c1.cno AND c1.cname='yuwen') ) a,
(SELECT cs22.sno sno,cs22.cno con,c2.cname cname,cs22.grade  grade
  FROM cs2 cs22,coures2 c2
  WHERE (cs22.cno=c2.cno AND c2.cname='shuxue') ) b
WHERE a.grade<b.grade AND a.sno=b.sno
**********************************************************
//将对应id的age值赋给grade
CREATE TABLE a(id int(3), grade int(3))
CREATE TABLE b(id int(3), age int(3))

UPDATE a,b SET a.grade=(SELECT age FROM b WHERE a.id=b.id)
分享到:
评论

相关推荐

    SQL Server试题

    例如,如果我们想要把某个字段重命名为更具描述性的名称,`AS`关键字就能够实现这一点。而尝试直接使用等号(=)来赋值列名是不被SQL语言所接受的,因此选项C是正确答案。 第9题要求我们筛选出特定分数范围内的候选...

    SQLServer2008考证题库

    为了实现这一点,需要使用正确的T-SQL语句。 **选项解析**: - **A**: `DROP USER John;` 这条语句将完全删除用户John,而不是仅撤销某个表的权限,因此不是正确答案。 - **B**: `DENY SELECT ON Sales.SalesOrder ...

    SQLServer网络数据库模拟题

    SQL Server使用事务隔离级别和锁机制来实现这一点。 7. **备份与恢复**: 数据库的备份和恢复策略是确保业务连续性的重要环节。SQL Server提供了多种备份类型,如完整备份、差异备份、日志备份,以及不同的恢复模式...

    2021年sql经典面试题.docx

    SQL经典面试题 本资源摘要信息涵盖了各种 SQL 面试题,涵盖了数据库设计、数据查询、数据分析等多方面的知识点。以下是相关知识点的详细解释: 知识点 1:数据库设计 在 SQL 面试题中,数据库设计是非常重要的一...

    SQL语言面试题收集

    使用自连接,将表与自身连接,同时添加一个条件以确保不会列出重复的组合(例如,A vs B 和 B vs A视为同一组合),通常通过比较两个连接字段的大小来实现这一点。 **SQL解答示例**: ```sql SELECT a.name AS Team...

    大数据面试题SQL20道.docx

    大数据面试题 SQL 20 道 大数据面试题 SQL 20 道,是一份涵盖大数据领域的面试题,涉及到 SQL 查询、数据处理、数据分析等方面的知识点。下面我们将逐个介绍每个试题的知识点。 试题一:使用 SQL 查询 a、b 表中不...

    SQL面试题及技术指导大全

    - **从一个表中查询出数据并插入到另一个表中**:有两种常用的方法可以实现这一点: - 使用`SELECT INTO FROM`语句:这种方法要求目标表不存在,因为在执行过程中会自动创建目标表。 - 使用`INSERT INTO SELECT ...

    2022年SQL面试题非纯数据库方向.doc

    在2022年的面试中,SQL面试题不仅关注数据库操作,也考察了如何在非纯数据库环境中应用SQL技术。以下是一些相关知识点的详细解释: 1. **触发器**:触发器是一种特殊类型的存储过程,它在特定的数据库事件(如...

    基于Authorware的多媒体课件的设计与实现—SQL语言学习.pdf

    本文主要介绍了一种基于Authorware多媒体开发工具设计实现的SQL语言学习课件。为深入理解其设计与实现,需要掌握多媒体课件设计、Authorware工具应用、SQL语言基础知识、多媒体元素整合技术以及数据库链接技术等相关...

    《MY SQL实用教程》期末考试题.docx

    题目中的第19题明确指出这一点。 ### 主键 - **主键的作用**:主键是一个表中的唯一标识符,用于唯一标识每一行记录。题目中的第20题说明了在关系模型中,通过主键实现“关系中不允许出现相同的元组”的约束。 ##...

    SQL SERVER 2005基础篇课后习题答案 张楚生

    例如,如果年龄列应介于18和60之间,您可以创建一个CHECK约束来确保这一点。 2. **DEFAULT 约束**:当用户在插入新行时未为某一列提供值时,系统会自动应用默认值。这简化了数据输入,同时确保即使没有明确指定,列...

    asp.net +sql server 网上考试系统

    ASP.NET的模块化设计和SQL Server的数据库设计原则,如正常化,都能保证这一点。 总之,ASP.NET和SQL Server的组合为构建网上考试系统提供了强大的技术支撑。开发者可以通过熟练掌握这两项技术,构建出功能齐全、...

    ASP EXCEL导入SQL

    在德国电视台上曾经出现过一个这样的五十万欧元智力题:如何实现网络服务才能充分利用现有的HTTP协议?该问题给出了四个答案:去问微软;WSDL2.0/SOAP1.2;WS-Transfer;根本没有。这个问题告诉我们HTTP并不是一个简单的...

    Web应用安全:Mysql时间延迟习题习题.docx

    至于常用的SQL注入时间延迟函数,题中给出了`sleep()`和`benchmark()`,它们都可以被攻击者用来实现时间延迟注入。 简答题部分,SQL时间延迟注入是一种特殊的注入方法,当Web应用程序不显示错误信息,而是统一返回...

    [Oracle.SQL高级编程].Karen.Morton等.扫描版

    4. 学习材料:描述中提到可以自行学习钻研,这表明文档可能包含大量可自学的内容,例如示例代码、练习题、最佳实践、故障诊断方法等。对于希望深化Oracle数据库知识的开发者和DBA(数据库管理员),这是一种宝贵的...

    ASP毕业设计(完全可运行)asp+sqlserver2000在线考试系统.zip

    - 数据绑定技术可以将数据库中的数据直接显示在网页上,ASP提供了Repeater、DataList、GridView等控件实现这一点。 5. 可能的技术挑战: - 安全性:防止SQL注入攻击,确保用户输入的数据被安全处理。 - 性能优化...

    Gbase 8s 初级认证考试判断题及答案

    GBase 8s 数据库是GBase数据...综合以上知识点,GBase 8s 初级认证考试的判断题要求考生对数据库的基本操作和维护有一个清晰和准确的认识。掌握这些知识点对于实际工作中正确、高效地管理和维护数据库系统非常重要。

    最新源码 2021 驾考一点通含数据库

    【标题】"最新源码 2021 驾考一点通含数据库" 提供的是2021年版本的驾考一点通系统的完整源代码,并且包含了数据库部分。这意味着我们可以深入研究这个在线驾驶考试学习平台的后端实现,包括数据存储、处理和查询的...

    VB+SQL上机考试系统设计(论文+源代码).rar

    这一点对于任何软件项目而言都至关重要,尤其是上机考试系统,它需要在考试过程中保证无故障运行,以确保考试的公正性和准确性。 接着,描述还明确指出“本项目仅用作交流学习参考,请切勿用于商业用途”,这表明该...

Global site tag (gtag.js) - Google Analytics