zoukankan      html  css  js  c++  java
  • 数据库语句题目查寻答案

    –1.分别查询学生表和学生修课表中的全部数据。
    SELECT * FROM student–查询学生表
    SELECT * FROM course–查询课程表

    –2.查询成绩在70到80分之间的学生的学号、课程号和成绩。
    SELECT Sno 学号,Cno 课程号,Grade 成绩
    FROM SC
    WHERE Grade BETWEEN 70 AND 80

    –3.查询C01号课程成绩最高的分数
    SELECT TOP 1 Grade
    FROM SC
    WHERE Cno=‘C01’
    ORDER BY Grade DESC–降序DESC,升序ASC

    –4.查询学生都选修了哪些课程,要求列出课程号。
    SELECT Cname AS 学生选修的课程,Cno AS 课程号
    FROM course
    WHERE Cno IN(SELECT DISTINCT Cno FROM SC)–DISTINCT用来去除重复

    –5.查询Northwind数据库中orders表的OrderID、CustomerID和OrderDate,
    –并将最新的定购日期(OrderDate)列在前边。
    USE Northwind
    GO
    SELECT OrderID,CustomerID,OrderDate
    FROM orders
    ORDER BY OrderDate DESC–降序DESC,升序ASC

    –6.查询Northwind数据库中orders表的ShipCountry列以B,C,D,F --//ShipCountry BCDF
    –开始且第三个字符为’a’的OrderID、CustomerID和ShipCountry的信息。//OrderID、CustomerID第三个字符为’a’
    USE Northwind
    GO
    SELECT OrderID,CustomerID,ShipCountry FROM orders
    WHERE ShipCountry LIKE ‘[BCDF]_a%’–_下划线表示任意一个字符,%表示一个或多个字符

    –7.查询Northwind数据库中orders表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字
    –母是’a’的OrderID、CustomerID和ShipCountry的信息。
    USE Northwind
    GO
    SELECT OrderID,CustomerID,ShipCountry
    FROM orders
    WHERE ShipCountry LIKE ‘[^ABCDEF]%a’

    –8.查询修了C02号课程的所有学生的平均成绩、最高成绩和最低成绩。
    SELECT AVG(Grade) 平均成绩,MAX(Grade) 最高成绩,MIN(Grade) 最低成绩
    FROM SC
    WHERE Cno=‘C02’

    –9.统计每个系的学生人数。
    SELECT Sdept 系别,COUNT(*) 人数
    FROM student
    WHERE Sdept IN(SELECT DISTINCT Sdept FROM student)
    GROUP BY Sdept

    –10.统计每门课程的修课人数和考试最高分。
    SELECT Cname 课程名,COUNT(*) 修课人数,MAX(Grade) 考试最高分
    FROM SC,course
    WHERE SC.Cno IN(SELECT DISTINCT Cno FROM SC ) AND course.Cno=SC.Cno
    GROUP BY course.Cname

    –11.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。
    SELECT student.Sname 学生姓名,student.Sno 学生学号,COUNT(SC.Sno) 选课门数
    FROM student
    inner join SC ON SC.Sno=student.Sno
    GROUP BY student.Sname,student.Sno
    ORDER BY COUNT(SC.Sno) ASC

    –12.统计选修课的学生总数和考试的平均成绩。
    SELECT COUNT(DISTINCT(Sno)) AS 学生总数,AVG(Grade) AS 平均成绩
    FROM SC --//用DISTINCT消除重复的行

    –13.查询选课门数超过2门的学生的平均成绩和选课门数。
    SELECT Student.Sname,AVG(Sc.Grade) 平均成绩,COUNT(SC.Sno) 选课门数
    FROM SC
    –内联接join或inner join,内联系是比较运算符,只返回符合条件的行
    JOIN Student ON (SC.Sno = Student.Sno)
    JOIN Course ON (SC.Cno = Course.Cno)
    GROUP BY Student.Sname
    HAVING COUNT(distinct Course.Cno) >2–分组条件

    –14.列出总成绩超过200分的学生,要求列出学号、总成绩。
    SELECT Sno 学号,SUM(Grade) 总成绩
    FROM SC
    GROUP BY Sno
    HAVING SUM(Grade)>200

    –15.查询pubs数据库的titles表中每类图书的平均价格超过12.0元的书的类型(Type)、
    –平均价格和最高价格。
    USE pubs
    GO
    SELECT Type AS 书的类型,AVG(price) AS 平均价格,MAX(price) AS 最高价格
    FROM titles
    GROUP BY Type
    HAVING AVG(price)>12.0

    –16.查询pubs数据库的titles表中每类图书中图书的数目超过3本的图书的总价格。
    USE pubs
    GO
    SELECT 图书类型=Type,图书的数目=count(Type),图书的总价格=SUM(price)
    FROM titles
    GROUP BY Type
    HAVING count(Type)>3

    –17.查询选修了c02号课程的学生的姓名和所在系。
    SELECT Sname 学生姓名,Sdept 所在系,SC.Cno AS 选修课程
    FROM student
    inner join SC ON student.Sno=SC.Sno
    WHERE SC.Cno=‘C02’

    –18.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
    SELECT Sname 学生姓名,SC.Cno 课程号,SC.Grade 成绩
    FROM student
    inner join SC ON student.Sno=SC.Sno–内连接表SC查询
    WHERE SC.Grade>80
    ORDER BY SC.Grade DESC

    –19.查询计算机系男生修了’数据库基础’的学生的姓名、性别、成绩。
    SELECT Sname 姓名,Ssex 性别,SC.Grade 成绩
    FROM student
    inner join SC ON Cno IN(SELECT Cno FROM course WHERE Cname=‘数据库基础’) --显示成绩的条件
    AND student.Sno=SC.Sno --显示成绩的学生的学号
    WHERE Sdept=‘计算机系’ AND Ssex=‘男’

    –20.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
    –这题使用到了表的自连接,所以需要给表取两个别名,如A和B
    SELECT A.Sname 年龄相同的学生的姓名,A.Sage 年龄
    FROM student A
    inner join student B ON A.Sage IN(SELECT Sage FROM student WHERE A.Sage=B.Sage AND A.Sname!=B.Sname)
    GROUP BY A.Sname,A.Sage
    ORDER BY A.Sage

    –21.查询哪些课程没有人选,要求列出课程号和课程名。
    SELECT Cno AS 课程号,Cname AS 课程名
    FROM course
    WHERE Cno NOT IN(SELECT DISTINCT SC.Cno FROM SC)

    –22.查询有考试成绩的所有学生的姓名、修课名称及考试成绩
    –要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。
    SELECT student.Sname AS 有考试成绩的学生的姓名,course.Cname AS 修课名称,SC.Grade AS 考试成绩
    INTO [new_sc] --将查询结果放入新表new_sc中
    FROM student,course,SC
    WHERE SC.Grade IS NOT NULL AND student.Sno=SC.Sno AND course.Cno=SC.Cno

    –23.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,
    –并要求将这两个查询结果合并成一个结果集,
    –并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。
    –//此题用到了并union查询
    SELECT Sdept 系名,Sname 姓名,Ssex 性别,course.Cname 修课名称,SC.Grade 修课成绩
    FROM student
    inner join SC ON student.Sno=SC.Sno
    inner join course ON course.Cno=SC.Cno
    WHERE Sdept=‘信息系’
    UNION
    SELECT Sdept 系名,Sname 姓名,Ssex 性别,course.Cname 修课名称,SC.Grade 修课成绩
    FROM student
    inner join SC ON student.Sno=SC.Sno
    inner join course ON course.Cno=SC.Cno
    WHERE Sdept=‘计算机系’

    select sdept, sname,ssex,cname,grade from student,sc,course
    where student.sno=sc.sno and sc.cno=course.cno and (sdept=‘信息系’ or sdept=‘计算机系’)

    –24.用子查询实现如下查询:
    –(1) 查询选修了C01号课程的学生的姓名和所在系。
    SELECT Sname AS 选修了C01号课程的学生的姓名,Sdept AS 所在系
    FROM student
    WHERE Sno IN(SELECT Sno FROM SC WHERE Cno=‘C01’)

    –(2) 查询数学系成绩80分以上的学生的学号、姓名。
    SELECT Sno AS 数学系成绩80分以上的学生的学号,Sname AS 姓名
    FROM student
    WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>80)
    AND Sno IN(SELECT Sno FROM student WHERE Sdept=‘数学系’)

    –(3) 查询计算机系学生所选的课程名.
    SELECT Cname AS 计算机系学生所选的课程名
    FROM course
    WHERE
    course.Cno IN(SELECT DISTINCT Cno FROM SC WHERE SC.Sno IN(SELECT Sno FROM student WHERE Sdept=‘计算机系’))

    –25.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现://???/
    –(1) 在插入数据过程中建表。
    –使用SELECT INTO插入数据的方法,是在插入数据的过程中建立新表
    SELECT student.Sname AS 学生名字,course.Cname AS 选修课程,SC.Cno AS 课程编号
    INTO [SC_Info1]–将计算机系成绩高于80分的学生的修课情况插入到表SC_Info1中
    FROM student,course,SC
    WHERE student.Sdept=‘计算机系’ AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

    –(2) 先建一个新表,然后再插入数据。
    –创建表SC_Info2
    CREATE TABLE SC_Info2
    (
    Sname char(7),
    Cname char(20),
    Cno char(10)
    )

    –往表SC_info2插入查询得到的结果
    INSERT SC_Info2
    SELECT student.Sname AS 学生名字,course.Cname AS 选修课程,SC.Cno AS 课程编号
    FROM student,course,SC
    WHERE student.Sdept=‘计算机系’ AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

    –26.删除修课成绩小于50分的学生的修课记录
    DELETE SC WHERE Grade<50 or="" grade="" is="">

    –27.将所有选修了’c01’课程的学生的成绩加10分。
    UPDATE SC
    SET Grade=Grade+10
    WHERE Cno=‘C01’

    知足上进且温柔
  • 相关阅读:
    第四十七课、父子间的冲突
    第四十六课、继承中的构造与析构
    第四十五课、不同的继承方式
    第四十四课、继承中的访问级别
    第四十三课、继承的概念和意义
    第四十二课、类型转换函数(下)
    第四十一课、类型转化构造函数(上)
    暴力大法好
    HideProcess
    Hduacm—5497
  • 原文地址:https://www.cnblogs.com/nn-y/p/13618406.html
Copyright © 2011-2022 走看看