首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 数据库期末考试编程题

    时间:2020-10-14 00:21:39 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:期末考试 编程 数据库

     四、编程题(每小题 1 分,共 15 分)

      可能用到的表结构如下:

      学生表(学号,姓名,性别,年龄,班级)

      课程表(课程号,课程名,学分)

      成绩表(学号,课程号,成绩)

     1.创建存储过程 GetStudentByID,带有参数 sno,根据学生的学号查询学生情况 Create procedure GetStudendByID sno varchar(10) As Begin Select * from 学生表 where 学号=sno end

     2. 编写 SQL 语句,查询学生表中所有学生,要求第一按照班级升序排序,第二按照年龄降序排序 select * from 学生表 order by 班级 asc,年龄 desc

      3. 编写 SQL 语句,查询学生表中姓张的学生 select * from 学生表 where 姓名 like "张%"

      4. 编写 SQL 语句,查询学生表中男女生的人数各多少人 select 性别,count(*) from 学生表 group by 性别

     5. 编写 SQL 语句,查询所有比“王平”年龄大的情况 Select * from 学生表 where 年龄>(select 年龄 from 学生表 where 姓名=’王平’) 6. 编写 SQL 语句,在学生表和成绩表中查询学号,姓名,课程号,成绩 SELECT 学生表.学号, 学生表.姓名, 成绩表.课程号, 成绩表.成绩 FROM 学生表 INNER JOIN 成绩表 ON 学生表.学号 = 成绩表.学号

     7. 编写 SQL 语句,将(1022,张望,男,19,信息 2)的学生插入到学生表中 insert into 学生表 (学号,姓名,性别,年龄, 班级) values("1022","张望","男",19,"信息 2")

     8. 编写 SQL 语句,将学号为 1022 学生的姓名改为张旺 update 学生表 set 姓名="张旺" where 学号="1022"

      9. 编写 SQL 语句,删除没有选课的学生 delete from 学生表 sno not in (select sno from sc)

     10. 编写 SQL 语句,查询课程号 9 的先行课的情况 select * from 课程表 where 课程号= (select 先行课号 from 课程表 where 课程号=9)

     11. 编写关系代数,查询选修 3 号课程的学生学号 ∏学号(∫课程号=‘3’(选课表))

     12. 编写关系代数,查询至少选修了一门直接先行课为 5 号课程的学生姓名 参看课本 60 页 13. 编写 SQL 语句,创建学生表 Create table 学生表 (学号 char(10),姓名 varchar(20),性别 char(2),年龄 int,班级 char(30)) 14. 编写 SQL 语句,建立计算机 1 班男生的视图 Create view as select * from 学生表 where 班级=‘计算机 1 班’ and 性别=‘男’ 15. 编写 SQL 语句,将对学生表的修改权限赋给用户 U1 Grant update on table 学生表 to U1 1.设有一个学生课程数据库,包括学生关系 Student、课程关系 Course、选修关系 SC,图 1 所示:

      Student 学号 Sno 姓名 Sname 性别 Ssex 年龄 Sage 所在系 Sdept 95001 李勇 男 20 CS 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS Course 课程号 Cno 课程名 Cname 先行课 Cpno 学分 Ccredit 1 数据库 5 4 2 数学

     2 3 信息系统 1 4 4 操作系统 6 3

     5 数据结构 7 4 6 数据处理

     2 7 PASCAL 语言 6 4

      SC 学号 Sno 课程号 Cno 成绩 Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80 图 1

     学生-课程数据库 写出完成下列要求的 SQL 语句:

     1)查询所有年龄在 20 岁以下的学生姓名与年龄。

     1.

     select Sname,Sage

     from Student

     where Sage<20;

      或 select Sname,Sage

     from Student

     where not Sage>=20; 2)查询年龄不在 20~23(包括 20 岁和 23 岁)之间的学生的姓名、系别和年龄。

     select Sname,Sdept,Sage

      from Student where Sage not between 20 and 23; 3)查询每个学生及其选修课程的情况。

     select Student.*,SC.*

      from Student,SC

     where Student.Sno=SC.Sno; 2.把下面用关系表示的实体、实体与实体之间的联系,用 E-R 图表示出来,要求在图中表示联系的类型(1∶1、 1∶n、 m∶n)。

     实体 1:学生(学号,姓名,性别,年龄)

      关键字为:学号 实体 2:课程(课程号,课程名,学分数)

     关键字为:课程号 实体 1 与实体 2 的联系:学习(学号,课程号,成绩)

      关键字为:学号+课程号 注:一个学生可以选多门课程,一门课程也可以被多个学生选,学生选课后有成绩。

     学生选课关系 E-R 图

      五、编码题 1、下面给出三个关系模式:

     (1)学生关系 S(SNO,SName,SAge,SSex)

     (2)课程关系 C(CNO,CName,CTeacher)

     (3)学习关系 SC(SNO,CNO,Grade)

     根据要求用 T-SQL 完成下列各题。

     (1)

     检索学习课程号为“C01001”的学生学号与姓名; (2)

     检索至少选修课程号为“C00101”和“C02341”的学生学号。

     答:(1)SELECT S.S#,SNAME

      FROM S,SC

     WHERE S.S#=SC.S#

     AND

     C#=’C01001’ (2)SELECT X.S#

     FROM SC AS X,SC AS Y

     WHERE X.S#=Y.S#

     AND

     X.C#=’C00101’

     AND

     Y.C#=’C02341’ 2、图书管理数据库 BookManager 由以下四个关系模式组成,根据该结构用 T-SQL 完成以下各题。

     (1)读者(借书证号,姓名,性别,出生日期)

     (2)图书(ISBN,图书名称,作者,出版社,价格,数量)

     (3)借阅(借书证号,ISBN,借出时间)

     根据要求完成下列各题。

     (1)创建一个名称为 BookManager 的数据库,其初始大小为 10MB,最大为 20MB,允许数据库自动增长;日志文件初始大小为 2MB,最大为 5MB。文件存储在目录 D:\TEST 下。

     (2)编写一个存储过程,查询某读者当前的借书情况。

     (3)创建一个触发器,如果在图书表中添加或更改数据,则向客户端显示一条信息。

     解:(1)CREATE DATABASE BookManager ON( NAME=’BookManager_DATA’, FILENAME=’D:\TEST\BookManager.MDF’,

     SIZE=10MB, MAXSIZE=20MB, FILEGROWTH=10%) LOG ON( FILENAME=’D:\TEST\BookManager.LDF’, SIZE=2MB, MAXSIZE=5MB, FILEGROWTH=10%)

     (2)CREATE PROCEDURE proc_reader

     @ lib_num char(8)

     AS

      SELECT A.借书证号,姓名,B.ISBN,书名

      FROM Reader

     A, JY

     B , BOOK

     C

      WHERE A. 借书证号=B. 借书证号 AND B.ISBN=C.ISBN

     AND

     A. 借书证号= @ lib_num (3)CREATE TRIGGER trig_reminder ON Reader FOR INSERT ,UPDATE AS

      RAISEERROR(4008,16,10)

     3、设有学生表 S(SNO,SN)(SNO 为学生号,SN 为姓名)和学生选修课程表 SC(SNO,CNO,CN,G)(CNO 为课程号,CN 为课程名,G 为成绩),试用 SQL 语言完成以下各题:

     (1)建立一个视图 V_SSC(SNO,SN,CNO,CN,G),并按 CNO 升序排序; (2)从视图 V_SSC 上查询平均成线在 90 分以上的 SN、CN 和 G。

     答:(1)CREATE VIEW V_SSC(SNO,SN,CNO,CN,G)

     AS SELECT S.SNO,S.SN,CNO,SC.CN,SC.G

     FROM S,SC

     WHERE S.SNO=SC.SNO

     ORDER BY CNO

     (2)

     SELECT SN,CN,G

      FROM V_SSC

      GROUP BY SNO

      HAVING AVG(G)>90 4、图书管理数据库 BookManager 由以下四个关系模式组成,根据该结构用 T-SQL 完成以下各题。

     (1)读者(借书证号,姓名,性别,出生日期)

     (2)图书(ISBN,图书名称,作者,出版社,价格,数量)

     (3)借阅(借书证号,ISBN,借出时间)

     根据要求完成下列各题。

     (1)创建一个名称为 BookManager 的数据库,其初始大小为 10MB,最大为 20MB,允许数据库自动增长;日志文件初始大小为 2MB,最大为 5MB。文件存储在目录 D:\TEST 下。

     (2)编写一个存储过程,查询某读者当前的借书情况。

     (3)创建一个触发器,如果在图书表中添加或更改数据,则向客户端显示一条信息。

     解:(1)CREATE DATABASE BookManager ON( NAME=’BookManager_DATA’, FILENAME=’D:\TEST\BookManager.MDF’, SIZE=10MB, MAXSIZE=20MB, 字段名 类型与 宽度 是否 主码 是否允许 空值 借书证号 Char(8) 是 NOT NULL 姓名 Char(8)

     NOT NULL 专业名 Char(12)

     NOT NULL 性别 Char(2)

     NOT NULL 出生日期 Datetime

     NOT NULL 借书量 Integer

     NOT NULL 照片 Image

     NOT NULL 字段名 类型与 宽度 是 否主码 是否允许 空值 ISBN Char(16) 是 NOT NULL 书名 Char(26)

     NOT NULL 作者 Char(8)

     NOT NULL 出版社 Char(20)

     NOT NULL 价格 Float

     NOT NULL 副本量 Integer

     NOT NULL 库存量 Integer

     NOT NULL 字段名 类型与 宽度 是否 主码 是否允许 空值 借书证号 Char(8)

     NOT NULL ISBN Char(16)

     NOT NULL 索书号 Char(10) 是 NOT NULL 借书时间 Datetime 是 NOT NULL 还书时间 Datetime

     NOT NULL 字段名 类型与 宽度 是否 主码 是否允许 空值 借书证号 Char(8)

     NOT NULL ISBN Char(16)

     NOT NULL 索书号 Char(10) 是 NOT NULL 借书时间 Datetime

     NOT NULL 表 4.1 读者表(表名为 XS) 表 4.2 图书表(表名为 BOOK) 表 4.3 借阅表(表名为 JY) 表 4.4 借阅历史表(表名为 JYLS)

     FILEGROWTH=10%) LOG ON( FILENAME=’D:\TEST\BookManager.LDF’, SIZE=2MB, MAXSIZE=5MB, FILEGROWTH=10%)

     (2)CREATE PROCEDURE proc_reader

     @ lib_num char(8)

     AS

      SELECT A.借书证号,姓名,B.ISBN,书名

      FROM Reader

     A, JY

     B , BOOK

     C

      WHERE A. 借书证号=B. 借书证号 AND B.ISBN=C.ISBN

     AND

     A. 借书证号= @ lib_num (3)CREATE TRIGGER trig_reminder ON Reader FOR INSERT ,UPDATE AS

      RAISEERROR(4008,16,10)

      5、下面给出一个商品销售数据库中包含的三个基本表:

     (1)客户表:table_Client(CNO,Cname,Csex,Cbirthday)

     (2)商品表:table_Goods(GNO,Gname,Gunit,Gprice)

     (3)购物表:table_CG(CNO,GNO,CGquantity)

     用 T-SQL 语句完成下列各题。

     (1)查询购买了商品的客户号及姓名。

     (2)查询 1978 年出生的客户号及姓名。

     (3)购买了三种以上商品的客户号及客户姓名。

     答:(1)select CNO,Cname from table_Client where CNO in (select distinct CNO from table_CG) (2)select CNO,Cname

      from table_Client

     where Cbirthday=’1978’ (3)select CNO,Cname

     from table_Client

     where CNO in

     (select CNO from table_CG group by CNO having count(*)>3)

     6、学生-选课-课程数据库由以下四个关系模式构成:

     STUDENT(SNO,SName,SAge,SSex,SAddress)

     TEACHER(TNO,TTeacher,TPos,TAddress)

     COURSE(CNO,CName,CTerm,CCredit,TNO)

     SELECTCOURSE(SNO,CNO,Grade)

     按要求完成下列各题。

     (1)用 SQL 语句建立 STUDENT 表。

     (2)为 COURSE 表建立插入触发器,保证教师编号的正确性。

     (1)

     解:create table student (

     sno nvarchar(8),

     sname nvarchar(10),

     sage int,

     ssex char(4),

     saddress nvarchar(50),

     primary key(sno) ) (2)

     create trigger course_insert_tno on course

     for insert

     as if(not exists

      (select tno from teacher

     where tno in

      (select inserted.tno from inserted)))

     begin

     print "无此教师"

     rollback transaction

      end 1、设学生课程数据库中有三个关系:

     学生关系 S(S#,SNAME,AGE,SEX)

     学习关系 SC(S#,C#,GRADE)

     课程关系 C(C#,CNAME)

     其中 S#、C#、SNAME、AGE、SEX、GRADE、CNAME 分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。

     用 SQL 语句表达下列操作 (1)检索选修课程名称为“MATHS”的学生的学号与姓名

     (2)检索至少学习了课程号为“C1”和“C2”的学生的学号 (3)检索年龄在 18 到 20 之间(含 18 和 20)的女生的学号、姓名和年龄 (4)检索平均成绩超过 80 分的学生学号和平均成绩 (5)检索选修了全部课程的学生姓名 (6)检索选修了三门课以上的学生的姓名 答案:(1)SELECT SNAME,AGE

      FROM S,SC,C

      WHERE S.S#=SC.S#

      AND C.C#=SC.C#

      AND CNAME=’ MATHS’

      (2) SELECT S#

     FROM SC

     WHERE CNO=’C1’ AND S# IN( SELECT S#

     FROM SC

     WHERE CNO=’C2’)

     (3)SELECT S#,SNAME,AGE

      FROM S

      WHERE AGE BETWEEN 18 AND 20

     (4) SELECT S# ,AVG(GRADE) ‘平均成绩’

     FROM SC

     GROUP BY S#

     HAVING AVG(GRADE)>80 (5) SELECT

     SNAME FROM

     S WHERE

     NOT

     EXISTS

      (SELECT

     *

     FROM

     C

     WHERE NOT

     EXISTS

      (SELECT

     *

     FROM

     SC

     WHERE S#=S.S#

     AND C#=C.C#

      ) )

      (6) SELECT SNAME

      FROM S,SC

     WHERE S.S#=SC.S#

     GROUP BY SNAME

     HAVING COUNT(*)>3

      2、设学生-课程数据库中包括三个表:

     学生表:Student (Sno,Sname,Sex,Sage,Sdept)

     课程表:Course(Cno,Cname,Ccredit)

     学生选课表:SC(Sno,Cno,Grade)

     其中 Sno、Sname、Sex、Sage、Sdept、 Cno、Cname、Ccredit 、Grade 分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。

     试用 SQL 语言完成下列项操作:

     (1)查询选修课程包括“1042”号学生所学的课程的学生学号 (2)创建一个计科系学生信息视图 S_CS_VIEW,包括 Sno 学号、Sname 姓名、Sex 性别; (3)通过上面第 2 题创建的视图修改数据,把王平的名字改为王慧平 (4)创建一选修数据库课程信息的视图,视图名称为 datascore_view,包含学号、姓名、成绩。

     答案:(1) SELECT DISTINCT SNO

     FROM SC SCX

     WHERE NOT EXISTS

     (SELECT *

      FROM SC SCY

      WHERE SCY.SNO = " 1042"

     AND

     NOT EXISTS

      (SELECT *

      FROM SC SCZ

     WHERE SCZ.SNO=SCX.SNO AND

      SCZ.CNO=SCY.CNO));

      (2)

     CREATE VIEW S_CS_VIEW

     AS

      SELECT SNO,SNAME,SEX

      FROM STUDENT

      WHERE Sdept=’CS’

      (3)UPDATE S_CS_VIEW

      SET SNAME=’ 王慧平’

      WHERE SNAME=’ 王平’ (4) CREATE VIEW datascore_view

     AS

     SELECT

     SNO

     学号、SNAME

     姓名、GRADE 成绩

     FROM STUDENT,SC,COURSE

     WHERE STUDENT.SNO=SC.SNO

     AND COURSE.CNO=SC.CNO

     AND CNAME=’ 数据库’

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识