数据库重点题目及答案资料

更新时间:2023-03-14 06:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

在学生成绩数据库中有 “学生表”、“课程表”和一个“成绩表”。学生表中包含“学号”,“姓名”,“专业”,“班级”四个字段,课程表中包含“课程编号”,“课程名称”,“学分”,成绩表中包含“学号”,“课程编号”,“成绩”三个字段

1、在学生表中添加一行新记录,其中各字段值如下:学号为“200016”,姓名为“张国梁”,专业为“电子商务”,班级为“0103”

2、在学生表中搜索姓名为“吴小亮”的学生记录并将此记录中的班级指定为“0106” 3、在成绩表中删除课程成绩低于60分的记录

4、从成绩表中检索所有002号课程成绩介于80分与90分之间的学生记录 5、从学生表中检索所有姓名中第二个字是“小”的学生记录 6、从课程表中查找课程名称中带有“网络”二字的课程 7、从学生表中检索学号末位数字不在2~6范围内的学生 8、从成绩表中统计002号课程成绩的平均分、最高分和最低分 9、统计学生表中包含的记录数目来确定学生总数 10、查询出只选修了一门课程的学生的学号

11、检索成绩表中各个课程号及相应的选课人数,并给出结果。 12. 查询出没有被选修的课程的课程号和课程名称 13、查询出至少选修了2门课程的全部学生信息。

14、检索出成绩大于学号为100002的学生成绩的学生的姓名、学号 答案:

1、insert into 学生表 values('200016','张国梁','电子商务','0103') 2、update 学生表 set 班级=‘0106’ where 姓名=‘吴小亮’ 3、delete from 成绩表 where 成绩<60

4、select * from 成绩表 where 课程编号='002' AND 成绩 between 80 and 90 5、select * from 学生表 where 姓名 like '_小%' 6、select * from 课程表 where 课程名称 like '%网络%' 7、select * from 学生表 where 学号 like '%[^2-6]'

8、select max(成绩),min(成绩),avg(成绩) from 成绩表 where 课程编号 ='002' 9、select count(学号) 总人数 from 学生表

10、select 学号 from 成绩表 group by 学号 having count(课程编号)=1 11、Select 课程编号, count(学号) 人数 from 成绩表 group by 课程编号

12、select 课程编号,课程名称 from 课程表 where 课程编号 not in (select distinct课程编号 from 成绩表)

select 课程编号,课程名称 from 课程表 where not exists(select * from 成绩表 where 课程编号=课程表.课程编号)

13、Select * from 学生表 where 学号 in (select 学号 from 成绩表 group by 学号 having count(*)>=2)

14、Select distinct 学号 from 成绩表 where 成绩>all(select 成绩 from 成绩表 where 学号='100002') 二、选择题

1、SQL Server提供了4种通配符,?、%、[]、和^。若要表示一个4位的字符串,该字符串以T开头,后四位是1到5的数字,正确的表示方法是(B )。 A.'T????'

B.'T[1-5][1-5][1-5][1-5]'

C.'T[12345][12345][12345][12345]' D. 'T%'

2、在Transact-SQL中,查询时将student表的bh列标题命名为“编号”的正确操作是( A。 A.SELECT bh 编号 B. SELECT 编号 bh FROM student FROM student C.SELECT bh=编号 D. SELECT bh AS 编号 FROM student FROM student

3、在Transact-SQL中,使用INSERT命令添加数据,若需要添加一批数据应使用(B )语句。 A.INSERT?VALUES B.INSERT?SELECT C.INSERT?DEFAULT D.A B C均可

4、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(B__),使用关键字(_A_)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(B),如果在SELECT语句中使用聚合函数时,一般在后面使用(_A_)。

⑴ A、SELECT,INTO B、SELECT,FROM C、SELECT,GROUP D、仅SELECT

⑵ A、DISTINCT B、UNION C、ALL D、TOP ⑶ A、JOIN B、UNION C、INTO C、LIKE ⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 5、下面关于update语句错误的是(D )

A. B. C. D. 三、填空题 1、 2、 3、

在启动查询分析器时,在登录对话框中可使用 . 或(local)作为本地服务器名称 从windows的开始菜单启动查询分析器后,默认数据库为master。 若要把查询结果存放到一个新建的表中,可使用into子句

可以使用default 关键字将列设置为默认值 可以使用NULL 关键字将列设置为空值 可以使用update语句同时修改多个记录

如果update语句中没有指定搜索条件,则默认只能修改第一条记录

4、使用sql语句进行分组检索时,为了去掉不满足条件的分组,应当使用having子句

嵌入式SQL实验

实验内容:

掌握SQL Server 2000的预编译程序NSQLPREP.EXE的使用(以课本例题1进行调试); 实验步骤:一、试验准备

1、先在企业管理器的安全性——登录中将sa的密码改为空,然后将服务器注册属性改为sa,重新连接服务器

2、我的电脑右击属性——高级——环境变量——系统变量中新建 变量名Complier:

变量值C:\\Program Files\\Microsoft Visual Studio\\VC98\\bin 变量名Include:

变量值C:\\Program Files\\Microsoft Visual Studio\\VC98\\atl\\include;

C:\\Program Files\\Microsoft Visual Studio\\VC98\\mfc\\include; C:\\Program Files\\Microsoft Visual Studio\\VC98\\include 二、数据库环境配置 1、创建数据库(附加school数据库) 2、关闭sql server 2000服务管理器;

3、将devtools文件夹拷贝到:C:\\Program Files\\Microsoft SQL Server中 4、将Binn文件夹拷贝到:C:\\Program Files\\Microsoft SQL Server\\MSSQL中 5、启动服务器;

二、VC++6.0编辑器配置(初始化Vc++环境) 1.工具—>选择—>目录—>Include Files

添加: C:\\Program Files\\Microsoft SQL Server\\devtools\\include 并设为第一项

2.选择Library Files

添加:C:\\Program Files\\Microsoft SQL Server\\devtools\\x86lib 并设为第一项

3、开始——运行——cmd

在ms_dos中输入cd c:\\program files\\Microsoft Visual Studio\\VC98\\Bin回车 输入vcvars32.bat回车

三、写程序,预编译,最后在VC++中编译、执行

1、下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)新建c++源文件,文件名为demo.sqc文件,保存到:C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Binn目录 #include void main( )

{EXEC SQL BEGIN DECLARE SECTION; char first_name[40];

char last_name[ ]=\EXEC SQL END DECLARE SECTION;

EXEC SQL CONNECT TO hushaobo.pubs USER sa.1982; EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name; EXEC SQL DISCONNECT ALL;

printf(\2、使用MS-DOS进行预编译:

进到Binn文件下:cd C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Binn 3、调用预编译程序nsqlprep.exe程序:nsqlprep demo

4、预编译成功后,关闭demo.Sqc,打开生成的demo.c,使用Vc++进行编译 5、编译成功后添加库文件:工程—>设置—>Link—>对象/库模块 输入 空格SQLakw32.lib空格Caw32.lib两个文件名。 注意,两个文件之间用空格分开。

6、将动态链接库SQLakw32.dll,sqlaiw32.dll文件拷贝到操作系统目录下的子目录C:\\WINDOWS\\system32中 7、连接 8、执行

修改课本例题1(使用school数据库),然后调试

Update.sqc文件如下: #include #include

EXEC SQL BEGIN DECLARE SECTION; /*主变量说明开始*/ char deptname[64]; char HSno[64]; char HSname[64]; char HSsex[64]; int HSage; int NEWAGE; long SQLCODE;

EXEC SQL END DECLARE SECTION; /*主变量说明结束*/ EXEC SQL INCLUDE sqlca; /*定义SQL通信区*/

/********************************************************************/ int main(void) /*C语言主程序开始*/ {int count = 0;

char yn; /*变量yn代表yes或no*/ printf(\ scanf(\为主变量deptname赋值*/

EXEC SQL CONNECT TO server_name.database_name USER login.password; /*连接数据库*/

EXEC SQL DECLARE SX CURSOR FOR /*定义游标*/

SELECT Sno, Sname, Ssex, Sage /*SX对应语句的执行结果*/ FROM Student

WHERE SDept = :deptname;

EXEC SQL OPEN SX; /*打开游标SX便指向查询结果的第一行*/

for ( ; ; ) /*用循环结构逐条处理结果集中的记录*/{ EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage; /*推进游标,将当前数据放入主变量*/

if (sqlca->sqlcode != 0) /* sqlcode != 0,表示操作不成功*/ break; /*利用SQLCA中的状态信息决定何时退出循环*/ if(count++ == 0) /*如果是第一行的话,先打出行头*/

printf(\printf(\/*打印查询结果*/

printf(\询问用户是否要更新该学生的年龄*/ do{ scanf(\

while(yn != 'N' && yn != 'n' && yn != 'Y' && yn != 'y');

if (yn == 'y' || yn == 'Y') /*如果选择更新操作*/ { printf(\

scanf(\用户输入新年龄到主变量中*/ EXEC SQL UPDATE Student /*嵌入式SQL*/ SET Sage = :NEWAGE

WHERE CURRENT OF SX ; } /*对当前游标指向的学生年龄进行更新*/}

EXEC SQL CLOSE SX; /*关闭游标SX不再和查询结果对应*/ EXEC SQL COMMIT WORK; /*提交更新*/

EXEC SQL DISCONNECT connection; /*断开数据库连接*/ }

将成绩管理数据库附加到本机上,打开成绩管理数据库然后做以下题目 写出下列每题的sql语句或程序段的功能 1) 声明一个动态游标stu_cursor,要求返回学生表中性别为男的学生记录 declare stu_cursor cursor

for select * from 学生 where 性别='男' 2) 打开stu_cursor游标

open stu_cursor 3) 获取并显示所有数据 fetch from stu_cursor while @@fetch_status=0 fetch from stu_cursor 4) 关闭该游标 close stu_cursor 5) 将姓齐的男同学的年龄加1 open stu_cursor

fetch from stu_cursor fetch from stu_cursor fetch from stu_cursor

update 学生 set 年龄=年龄+1 where current of stu_cursor 或者

open stu_cursor

declare @a nvarchar(13),@b nvarchar(4),@c tinyint,@d char(2),@e nvarchar(255),@f int,@g nvarchar(30),@h smalldatetime,@i char(10),@j int fetch from stu_cursor into @a,@b,@c,@d,@e,@f,@g,@h,@i,@j while @@fetch_status=0 begin

if @b like '齐%'

update 学生 set 年龄=年龄+1 where current of stu_cursor fetch from stu_cursor into @a,@b,@c,@d,@e,@f,@g,@h,@i,@j end

select * from 学生 close stu_cursor 6)释放该游标

deallocate stu_cursor 7)说明下列程序段的功能

declare @a char(8),@b varchar(10),@c numeric(5,2)

本文来源:https://www.bwwdw.com/article/eivx.html

Top