- 程序分析题(每题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,它们的定义分别为:
Content(Code 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名的学生的学号、姓名和班级。
。