复习笔记:数据库程序分析题

  • 程序分析题(每题5分,共10分)

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

Begin

Waitfor time ’15:43’

Create View my_view

As  Select  order_date,book_number,book_id From orderform

Where book_number!< 25

End

该程序段的功能是:系统在15:43分为orderform表中订购数量book_number大于25本的订购信息的order_date、book_number和book_id三个字段创建一个名为my_view的视图。                                                                       

                                                               

2.阅读下面的程序段,然后简述该程序段所完成的功能。

Use bookdb

Go

If exists(Select name From Sysobjects  

Where name=’my_proc’and type=’ P ’)

         Drop Proc my_proc

Go

Create Proc my_proc

@a int, @b char(50),@c float,@d varchar(40)   

        As

Insert Into book(book_id,book­_name,price,publisher)

Values(@a,@b,@c,@d)

Go

该程序段的功能是:在数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是向book表的book_id、book¬_name、price和publisher字段插入数据。                                                                   

                                                               

  • 程序分析题(每题5分,共10分)

说明:为了管理学生的成绩,现建有学生管理数据库SCDB,以下各程序题以该数据库为操作对象。SCDB数据库包括student(学生表)、course(课程表)、sc(成绩表),表结构如下:

表1 student

字段名

数据类型

长度

是否允许为空

说明

Studentid

varchar

10

学号

Name

varchar

8

姓名

Sex

varchar

2

性别

表2 course

字段名

数据类型

长度

是否允许为空

说明

CourseID

Varchar

10

课程编号

CourseName

Varchar

40

课程名称

Teacher

Varchar

10

任课教师

表3 sc

字段名

数据类型

长度

是否允许为空

说明

Studentid

varchar

10

学号

CourseID

Varchar

10

课程编号

Grade

Float

成绩

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

USE SCDB

GO

CREATE FUNCTION stu_grade(@name Varchar(20),@coursename Varchar(20) )

RETURNS char(20)

AS

BEGIN

DECLARE @Grade char(20)

SET @Grade=(SELECT Grade

FROM SC,course,student

where sc.courseid=course.courseid and sc.studentid=student.studentid and name=@name and coursename=@coursename)

If @Grade is null

begin

SET @Grade='该生未学习该门课程!'

end

return @Grade

END

该程序段的功能是:打开SCDB数据库,创建一个用户自定义函数 ,名称为stu_grade,通过学生姓名和课程名称,返回该生改门课程的成绩,但是如果该生没有学习改门课程,则返回“该生未学习该门课程!”                                                                

                                                               

2.阅读下面的程序段,然后简述该程序段所完成的功能。

USE SCDB

GO

CREATE VIEW V_Student_Grade

AS

Select studentid ‘学号’,name ‘姓名’, courseid ‘课程编号’, coursename ‘课程名’, grade ‘成绩’

From course,sc,student

Where course.courseid= sc.courseid and student.studentid =sc.studentid

该程序段的功能是:创建 “V_Student_Grade”视图,视图通过course,sc,student的表连接,显示学生的学号、姓名、课程编号、课程名、成绩几个字段,并以中文显示列名。                                                                         

                                                               

  • 程序分析题(每题5分,共10分)

说明:为了管理学生的成绩,现建有学生管理数据库SCDB,以下各程序题以该数据库为操作对象。SCDB数据库包括student(学生表)、course(课程表)、sc(成绩表),表结构如下:

表1 student

字段名

数据类型

长度

是否允许为空

说明

Studentid

varchar

10

学号

Name

varchar

8

姓名

Sex

varchar

2

性别

表2 course

字段名

数据类型

长度

是否允许为空

说明

CourseID

Varchar

10

课程编号

CourseName

Varchar

40

课程名称

Teacher

Varchar

10

任课教师

表3 sc

字段名

数据类型

长度

是否允许为空

说明

Studentid

varchar

10

学号

CourseID

Varchar

10

课程编号

Grade

Float

成绩

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

USE SCDB

GO

CREATE FUNCTION AvgGrade (@studentID Varchar(20))

RETURNS FLOAT

AS

BEGIN

DECLARE @AVG_Grade FLOAT

SET @AVG_Grade=(SELECT AVG(Grade)  FROM SC WHERE studentID =@studentID)

RETURN @AVG_Grade

END

该程序段的功能是:打开SCDB数据库,创建AvgGrade自定义函数,带有一个参数,该参数是学号,该函数通过学号,在sc成绩表中查找该学号对应学生的所有课程的平均成绩,并返回该生平均分。                                                                       

                                                                

2.阅读下面的程序段,然后简述该程序段所完成的功能。

use scdb

go

select sc.studentid,name,coursename,grade

from student,course,sc

where student.studentid=sc.studentid and course.courseid=sc.courseid and sc.studentid in (select studentid from sc where grade<60 group by studentid having count(grade)>=2)

该程序段的功能是:通过子查询实现查询有2门不及格课程的学生的学号、姓名、课程名、成绩。                                                                       

                                                               

  • 程序分析题(每题5分,共10分)

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

Begin

Waitfor time ’17:50’

Create View view1

As 

Select  stud_id as 学号,stud_name as 姓名,course_name as 课程名称,stud_grade as 成绩

From student_info a inner join student_grade b on a.stud_id=b.stud_id inner join course_info c on c.course_id=b.course_id

Where grade>=60

End

该程序段的功能是:系统在17:50分创建一个叫view1的视图,实现列出成绩合格的学生的学号,姓名,课程名和成绩。                                                              

                                                               

2.阅读下面的程序段,然后简述该程序段所完成的功能。

Use bookdb

Go

If exists(Select name From Sysobjects  

Where name=’ proc_1’and type=’ P ’)

         Drop Proc proc_1

Go

CREATE PROCEDURE proc_1

@sid char(10)

AS

BEGIN

    DECLARE @grade numeric(5,2)

    SELECT @grade=AVG(grade) FROM student_grade

        WHERE stud_id=@sid

    IF (@grade>=60)

        PRINT N'合格'

    ELSE

        PRINT N'不合格'

END

GO

EXECUTE proc_1 'D06010209 '

该程序段的功能是:在数据库中判断是否存在名为proc_1的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是输入学号,判断该学生的平均成绩是否合格,如果合格,则输出合格,否则输出不合格。                                                                    

                                                               

  • 程序分析题(每题5分,共10分)

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

Begin

Waitfor time ’18:00’

Create View my_view

As 

select count(*) as '总人数',class_id

from student_info

group by class_id

End

该程序段的功能是:系统在18:00分创建一个视图,实现统计每个班级分人数。                                                                       

                                                               

2.阅读下面的程序段,然后简述该程序段所完成的功能。

Use bookdb

Go

If exists(Select name From Sysobjects  

Where name=’my_proc’and type=’ P ’)

         Drop Proc my_proc

Go

CREATE PROCEDURE my_proc

@cid char(10)

AS

SELECT c.course_id,c.course_name,s.stud_id,s.stud_name,s.gender

   FROM (student_grade g JOIN student_info s ON g.stud_id=g.stud_id) JOIN course_info c

        ON g.course_id=c.course_id

    WHERE g.course_id=@cid

GO

EXECUTE my_proc 'DEJ001'

该程序段的功能是:在数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能产生某门课程的选课学生情况列表,

其中包括课程号、课程名、学号、姓名、性别等。要求输入某门课程的课程号,得到上述信息。                                                                        

                                                               

  • 程序分析题(每题5分,共10分)

1. Xsbook为学生图书借阅数据库,其中Xs为学生表,Book为图书表,Jy为借阅表,阅读下面的程序段,然后简述该程序段所完成的功能。

Select 姓名

From Xs,Book,Jy

Where Book.书名='计算机网络' And Xs.借书证号=Jy.借书证号And Jy.Isbn=Book.Isbn

该程序段的功能是:查询借阅了“计算机网络”这本书的所有学生的姓名。                                                                         

                                                               

2. 在名为商品库的数据库中包含有商品规格表Content和商品特性表Property,它们的定义分别为:

ContentCode  Char(10),Class  Char(8),Price  Float,Number  Int)

Property(Code  Char(10),Place  Char(12),Brand  Char(15))阅读下面的程序段,然后简述该程序段所完成的功能。

Select  Class,Max(Price) As Maxpri

From  Content

Group  By  Class

该程序段的功能是:从商品库中查询出每类商品的最高单价。                                                                         

                                                               

  • 程序分析题(每题5分,共10分)

1. Xsbook为学生图书借阅数据库,其中Xs为学生表,Book为图书表,Jy为借阅表,阅读下面的程序段,然后简述该程序段所完成的功能。

Select 书名,作者

From Xs,Book,Jy

Where Xs.姓名='李宏' And Xs.借书证号=Jy.借书证号And Jy.Isbn=Book.Isbn

该程序段的功能是:查询姓名为“李宏”所借所有书本的书名和作者。                                                                      

                                                               

2. 认真阅读以下程序:

Declare @Var1 Char(10),@Var2 Char(30)

Set @Var1='中国'

Set @Var2=@Var1+'是一个伟大的国家'

Select @Var1 As Col1,@Var2 As Col2

Go

请根据以上的程序写出执行结果:

Col1

Col2

1

中国

中国是一个伟大的国家

  • 程序分析题(每题5分,共10分)

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

Create procedure DynmaicSearch

@tablename varchar(10),@where varchar(50)

as

begin

declare @sql varchar(100)

set @sql='select * from ' +@tablename+ ' where ' +@where

exec(@sql)

end

go

exec DynmaicSearch 'student',' ssex=''女'''

该程序段的功能是:创建存储过程,动态指定要查询的表和条件,带参数运行该存储过程,在Student表中查询性别为女的学生信息。                                                                         

                                                               

2.阅读下面的程序段,然后简述该程序段所完成的功能。

DECLARE @i int

set @i=1

while @i<8

begin

  if @i<5

    print space(4-@i)+REPLICATE('*',2*@i-1)

  else 

    print space(@i-4)+REPLICATE('*',15-2*@i)

set @i=@i + 1

end

该程序段的功能是:在结果窗口中用‘*’符号输出菱形图案。                                                                           

                                                               

  • 程序分析题(每题5分,共10分)

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

CREATE TABLE Persons

( Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (Id_P) )

该程序段的功能是:创建一张数据表Persons,该表包含5个字段,分别为Id_P(整型,不为空)、LastName(字符型,不为空)、FirstName(字符型)、Address(字符型)、City(字符型),其中Id_P为数据表的主键。                                                                            

                                                               

2.阅读下面的程序段,然后简述该程序段所完成的功能。

USE pubs

IF EXISTS (SELECT name FROM sysobjects

         WHERE name = 'au_info' AND type = 'P')

   DROP PROCEDURE au_info

GO

USE pubs

GO

CREATE PROCEDURE au_info

   @lastname varchar(40),

   @firstname varchar(20)

AS

SELECT au_lname, au_fname, title, pub_name

   FROM authors a INNER JOIN titleauthor ta

      ON a.au_id = ta.au_id INNER JOIN titles t

      ON t.title_id = ta.title_id INNER JOIN publishers p

      ON t.pub_id = p.pub_id

   WHERE  au_fname = @firstname

      AND au_lname = @lastname

GO

该程序段的功能是:创建一个存储过程,从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社,该存储过程接受两个参数lastname和firstname。                                                                           

                                                               

  • 程序分析题(每题5分,共10分)

某学生选课成绩管理数据库(StuSelectCourse)的表结构如下:

 (1)“学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为: Student(Sno,Sname,Ssex,Sage,Sdept) Sno 为关键字。

(2)“课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,可记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。

(3)“学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为:SC(Sno,Cno,Grade) (SNO, CNO) 为关键字。

1.阅读下面的程序段,然后简述该程序段所完成的功能。(5分)

Declare @A Numeric(5,2) 

Set @A=(Select Avg(Grade) From SC

Select * From SC 

Where Grade>=@A

该程序段的功能是:从score表中查询出大于等于平均成绩的所有记录。                                                                  

                                                               

2.阅读下面的程序段,然后简述该程序段所完成的功能。

Select  Top 5 Student.Sno, Sname, Sdept

From Student Join SC On Student.Sno = SC.Sno Join Course On Course.Cno = SC. Cno

Where Cname =‟C语言‟

Order By Grade Desc

此程序的功能为:

该程序段的功能是:查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。                                                                     

                                                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值