数据库期末考试题

余年寄山水
851次浏览
2020年08月03日 02:03
最佳经验
本文由作者推荐

日本物价-股份合作协议书


SQL Server

练习题二

一、单项选择题

1.下列关于Create Table创建数据表,叙述正确 的是______。

A)

必须在数据表名称中指定表所属的数据库

B)

必须指明数据表的所有者

C)

指定的所有者和表名称在数据库中必须唯一

D)省略表名称时,自动创建一个临时表

2.表设计器的“允许空”,用于创建字段的______约束。

A)

主键 B)

外键

C) CHECK D)非空

3.下列字段定义错误的是______。

A)

学号

varchar(16) B)

人数

int 4 C)

产量

float D)

价格

decimal(8,2)

4.删除数据库中已经存在的数据表test的命令是______。

A) DELETE TABLE test B) DELETE test

C) DROP TABLE test D) DROP test

5.在数据表test中增加一个字段

cj(成绩)的命令是______。

A) ADD TABLE test cj int B) ADD TABLE test ALTER cj int

C) ALTER TABLE test DROP cj int D) ALTER TABLE test ADD cj int

6.在关系模式test(学号,姓名,性别,年 龄)中,删除属性“年龄”的命令
是______。

A) DELETE

年龄

FROM test B) ALTER TABLE test DROP

年龄

C) UPDATE test SET年龄 D) ALTER TABLE test ADD

年龄

7.在关系模式test(学号,课程名称,成绩) 中,插入一条记录的正确命令是
______。

A) ADD INTO test VALUES(„0001‟,‟高数‟,‟80‟)

B) INSERT INTO test VALUES(„0001‟,‟高数‟,‟80‟)

C) ADD INTO test VALUES(„0001‟,‟高数‟,80)

D) INSERT INTO test VALUES(„0001‟,‟高数‟,80)

8.在关系模式test(学号,课程名称,成绩) 中,若要把“0001”的高数成绩
改成85分,正确命令是______。

A) UPDATE test SET

成绩=”85” WHERE

学号=”0001” and

课程名称=”高数”

B) UPDATE test SET

成绩=85 WHERE

学号=”0001” and

课程名称=”高数”

C) UPDATE test SET

成绩=‟85‟ WHERE

学号=‟0001‟ and

课程名称=‟高数‟

D) UPDATE test SET

成绩=85 WHERE

学号=‟0001‟ and

课程名称=‟高数‟

9.不属于SQL Server的数据类型是______。

A)

整型数据类型 B)浮点数据类型


C)

通用型数据类型

D)

字符数据类型

10.不属于整型数据类型的是______。

A) int B) smallint C) tinyint D) integer

11.如果数据表中某个字段只包含1~200之间的整数,则该字段最 好定义为
______。

A) int B) smallint C) tinyint D) bit

12.如果数据表中某个字段的数据精度要求8~12位,则该字段最好定义为
______。

A) real B) smallint C) float D) money

13.某个字段的数据类型定义为 decimal(12,5),则该字段有______位整数。

A) 12 B) 5 C) 6 D) 7

14.存储诸如”邮政编码”的字段类型最好定义为______。

A) Char(6) B) varChar(6) C) NChar(6) D) NvarChar(6)

15.存储诸如”通讯地址”的字段类型最好定义为______。

A) Binary(n) B) varChar(n) C) Nbianry(n) D) Ntext

16.SQL查询的HAVING子句通常出现在______子句中。

A) ORDER BY B) GROUP BY C) INDEX D) INTO

17.SELECT-SQL语句中的条件子句的关键 字是______。

A) WHERE B) FROM C) ORDER BY D)GROUP BY

18.INSERT-SQL命令的功能是______。

A)

在表头插入一条记录 B)

在表尾插入一条记录

C)

在指定位置插入一条记录 D)在指定位置插入若干记录

19.UPDATE- SQL命令的功能是______。

A)

数据定义 B)

数据查询

C)

更新表中某些列的属性 D)修改表中的某些列的内容

20.查询命令中,限制显示记录条数的关键字是____。

A)TOP n B)DISTINCT C) ORDER D)HAVING

21.查询命令中,搜索介于两个指定值之间的所有信息的关键字是____。

A)TOP n B)LIKE C) BETWEEN D)IN

22.能对某列进行平均值运算的函数是______。

A) SUM() B) AVERAGE() C) COUNT() D)AVG()

23.查询命令中,搜索与给定的列表中任意一个值相匹配的记录的关键字是
____。

A)TOP n B)LIKE C) BETWEEN D)IN

24.模式匹配符号中,可匹配任意类型和长度的字符串的模式符号是____。

A) _(下划线) B) % C) [ ] D)[^ ]


25.从表中删除一条或多条记录的T- SQL命令是______。

A) DELETE B) DELETE

„FROM„WHERE

C)DROP„FROM D) DELETE„TABLE„WHERE

26.对数据表的结构进行修改的命令是______。

A) MODIFY TABLE B)ALTER TABLE C)DROP TABLE D)CREATE
TABLE

27.查询命令中,消除字段数据的重复值的关键字是____。

A)TOP n B)DISTINCT C) ORDER D)HAVING

28.用于统计记录个数的运算函数是______。

A) SUM() B) AVERAGE() C) COUNT() D)AVG()

29.查询命令中,搜索某字符串是否与指定的模式匹配的关键字是____。

A)TOP n B)LIKE C) BETWEEN D)IN

30.连接查询中,连接的结果是从两个表中挑选出符合连接条件的数据的连接方式是____。

A) Inner Join B)Left Join C)Right Join D)Full Join

二、填空题

1.在SQL中,create table、alter table和drop table命令分别 是在数据
库中 、 和_______基本表结构的命令。

2.向基本表插入数据时, 可以在命令中使用关键字 引出记录
值。或者在命令中 子句得到一个结果表。

3.在SQL的查询语句中, 选项实现投影运算,
___________选项实现连接运算, 选项实现选择运算。

4.在SQL的查询语句中, 选项实现分组统计功能,

选项实现对结果表的排序功能。

5.在SELECT语句的ORDERBY子句中, DESC表示按______输出;省略DESC
则按______输出。

6.在SQL SERVER中,datetime数据类型主要用来存储______和______ 的组合
数据,其常量需 要用______括起来;通常用______数据类型来表示逻辑数 据。

7.在SQL SERVER中,整数类型包括______、______、____ __和______4种,
它们分别占用______、______、______和______个 存储字节。

8.在SQL SERVER中,数据表的完整名称 应包括______、__ ____和______3
个部分,其中______和______可以省略。

9.SQL Server提供的双字节数据类型 共有3类,分别是______、______、______。

10.在SQL Server中,共使用了3种数据类型来存储二进制 数据,分别是______、
______、______。在对二进制数据进行 插入操作时,必须在数据常量前面增加
一个前缀______。



三、数据表基本操作

学生的基本情况表如下:

学号 姓名 身份证号
342425760824271



出生日期 省份 所属单位
管理学院
测量系
测量系

专业
信管
地质
地质










李龙

张峰
03091983
陕西省
06181985
河南省
08171986
湖南省
……
69 92 56
41 67 65
93 96 87

410527


王亚泽
611213

…… ……
1.写出建立该数据表结构的T- SQL语句(数据表名:JBQK099);要求“学 号”、
“姓名”、“身份证号”必须输入。(将099改 成自己学号后3位)

2.按下列要求修改数据表结构

1)添加“年龄”、“出生地”两个字段;

2)将“性别”的数据类型修改成bit;

3)将“专业”的数据类型改成Varchar(30)且不允许空;

4)删除“备注”字段。

2.按下列要求写出插入数据的T-SQL语句

(要求:以下操作中,所有的“学号”、“姓名”、“专业”均 为自己的真实信息)

1)插入1条 完整记录;

2)插入1条 记录,只输入“学号”、“姓名”、“身份证号”、“专业”的相关内容;

3)插入1条 记录,只输入“学号”、“姓名”、“身份证号”、“专业”和各门课程成
绩等相关内容;

3.按下列要求修改数据表

1)将所给表中第2条 记录的“姓名”、“学号”、“专业”修改为自己的真实数据;

2)将自己的数学成绩提高15%,英语成绩提高10分,政治成绩减少5分;

3)将没有数学成绩的记录,均修改为60分。

4)添加“总分”、“平均分”字段,并计算自己的总分和平均 分。

4.删除“性别”为空的所有记录。

四、基本查询

(根据上面的数据表,按下列要求写出相应的SELECT 语句)

1.显示表中前2条 的学号、姓名、各门课程成绩的信息;

2.查询自己的学号、姓名、各门课程成绩、总成绩、平均成绩信 息;

3.显示学号是„40‟ 开头,姓“张”和姓“李”的所有信息;

4.显示“管理学院”的不及格学生的信息;

5.显示80年 到83年出生的学生信息;

6.显示数学成绩不是60、70、80、90的 学生信息;

7.显示不同系部单位的学生人数、英语课程的总分、平均、最高 分、最低分;


8.将总成绩大于200的学生的学号、数学、 政治、英语等信息存入CJB中;

9.从JBQK、CJB中选出“陕西省”的学 生的姓名 、性别、所在系部、省份、
总成绩,结果按总成绩降序排列,若总成绩相同则按姓名升序排列;

10.选出与“王亚泽”同一个系的学生的姓名、性别、所在系部、平 均成绩。


SQL Server

练习题三

一、选择题

1. 如果将某一列设置为表的主键,则在表中此列的值( )。
A)可以出现重复值 B)允许为空值
C)不允许为空值,也不能出现重复值 D)不允许为空值,但允许列值重复
2. 下面语句中,哪种语句用来修改视图( )。
A)alter table B)modify view C)drop view D)alter view
3.下列标识符可以作为局部变量使用( )
A) [@Myvar] B) My var C) @Myvar D) @My var
4.创建存储过程的命令为( )。
A) CREATE VIEW B) CREATE INDEX
C) CREATE PROCEDURE D) CREATE FUNCTION
5.将jbqk表复制到数据表jg_tab中,正确的语句是 ( )
A) select * from jbqk into jg_tab B) select * into jg_tab from jbqk
C) insert jg_tab from jbqk D)insert jg_tab select * from jbqk
6.print len(rtrim(str(245+100+0.5)))的显示结果是 ( )
A) 345 B) 345.5 C) 10 D)3
ascii(„12‟)+len (substring(„1234‟,2,2))+day(„2009-10-1‟)的 结果为
A)26 B) 35 C) 52 D)出错
8.计算两个日期之间的差值的函数是( )
A) getdate B) dateadd C) datename D)datediff
9.产生(0,1)之间随机数的函数是( )
A) sqrt() B) rnd() C) floor() D)rand()
10.判断“成绩”是否在0~100之间的约束是( )
A) default B) constrain C) range D)check
二、填空题

1. 在SQL Server中, 编辑、运行Transact- SQL语句是在 ______中完成。
2.Create database命令定义一个数据库,包括定义______文件和 _____文件
部分。


3.在查询分析器中,打开一个数据库使之成为当前库,有___种方法,其中之一使用的命令关键字为 _______。
4. Select语句可以实现多个数据表连接查询,其中外连接的方式分别有 ______、__
____和______。
5. Select语句可以实现模糊查询, 其模式匹配有4种,它们分别是______、___
___、______、______。
6. 常用的聚合函数有:计算最大值的_______,计算最小值的_______,统计总 和的
_______,统计记录总数的_______和计算平均值 的_______。聚合函数的计算对象不仅
是列而且可以是_______。
7. SQL Server 2000的数据库管理程序分为_________和_________两部分,两部分可以
安装在 同一台计算机上,也可以分别安装在不同的计算机上。
8. SQL Server实例的身份验证模式有_______和_______两种。
9. 对表操作的 数据定义语言(DDL)有创建表的_______语句、修改表结构的_______语
句和删除表 的_______语句。
10. 对表中数据更新操作的数据定义语言(DML)有添加记录的__ _____语句、修改记录的
_______语句和删除记录的_______语句。
11. 主键是唯一能够区分表中每一行记录的_______。一个表只能有_______主键,主键不
能为 空值,并且 可以强制表中的记录的_______。主键的标志为_______。
12. 存在 两个表A和B,表A中的主键列在表B中也存在,但并不是表B的主键,仅作为
表B的一个必要的属性, 则称此属性为表B的_______。
13. 在一个已存在数据的表中增加一列,一定要保证所增加的列允许______ 值。
14.CHECK 约束被称为________约束,UNIQUE约束被称为________约
束。当一个表带有约束 后,执行对表的各种_______操作时,将自动 检查相应的约
束,只有符合约束条件的合法操作才能被真正执行。
15.定义局部变量的语句关键字为___,局部变量的开始标记为______。
16.创建和删除存储过程my_proc的命令为 ________和_________。
17.任意写出5个常用字符函数的完整命令格式(即命令和参 数)_____、____
_、_____、_____、_____。
18.任意写出5个常用日期函数的完整命令格式(即命令和参 数)_____、____
_、_____、_____、_____。
19.select * from 学生基本情况 where len(rtrim(姓名))=2的功能是_____
20.select ascii(str(156))+ascii(ltrim(str(200)))的结果是_____

三、综合练习

假设存在名为AAA的数据库,包括Students( 学号char(8),姓名varchar(8),身份证号
char(18),年龄int,专业va rchar(20),入学日期DateTime)和Score(学号char(8),课程名
var char(10),成绩numeric(5,2))两张表。
一)写出下列程序段的功能。



1. DECLARE @ MyNO CHAR(8)
SET @MyNO=‟40030001‟
IF(SELECT 专业FROM Students WHERE 学号=@MyNO)=‘信息管理’
BEGIN
SELECT AVG (成绩)AS 平均成绩
FROM Score
WHERE =@MyNO
END
ELSE
PRINT ‘学号为’+@MyNO+‘的学生不存在或不属于信管专业’
GO
2. Declare @a numberic(5,2),@b numeric(5,2)
Set @a =(select max(成绩)from score)
Set @b=(select min (成绩)from score)
Print @a-@b
3. Declare @a char(8)
Set @a=‘计算机’
Select 计算机专业人数=count(*) From students Where left(专业,3)=@a
4. Select month (入学日期)as入学月份,count(*) as 人数
From students
Group by month(入学日期)

5. Create procedure xxk1
@xm varchar(10)=‟张‟
as
select * from students x,score y
where x.学号=y.学号and 姓名 like @xm+‟%‟
go
exec xxk1
6.Create procedure xxk3
@xh1 char(2)=‟2‟,@xh2 char(2)=‟22‟
as
select 学号,avg(成绩) as平均成绩 from score
where right(rtrim(学号),2) between @xh1 and @xh2
group by 学号


go
exec xxk3 @xh2=‟16‟,@xh1=‟6‟
7.create procedure xxk5
(
@a char(8),@b varchar(10),@c numeric(5,2)
)
as
insert into score values(@a,@b,@c)
二)按下列要求写出操作命令
1.根据student s、score表生成数据表xs_cj的结构,字段包括学号、姓名、入学日期、
专业、课程名、成绩 ;
2.根据students、score表向数据表xs_cj插入“信息管理”和“电子商务”专 业的学生
信 息;
3.修改“学号”的宽度为10,并将本专业的学号前7位改为专业的编号 、第8位为1或2(随
机产生)、后两位不变;
4.显示学生的学号、姓名、入学日期和专业的信息,要求入学日期按“xx年xx月xx日 星
期x”格式显示;
5.将“高等数学”为空的记录,修改为[60,85)之间的随机数;
6.创建视图view_xscj,包括学号、姓名、年龄、 入学日期、专业、课程名、成绩;
7. 查询“本专业99年入学年龄在19-25间”的学生信息;
8.查询“本专业学习成绩前5名”的学生信息;;
9.创建视图view_xscj1,包括学号、姓名、专 业、总成绩、平均成绩;
10. 查询各专业学习的排序情况;
11.创建存储过程按给定姓氏(默认姓“李”)查询学生的姓名、专业、总成绩、平均成
绩;
12.创建存储过程统计给定专业学生的平均成绩及人数;
13.创建存储过程统计2006-2009年入学的 学生的平均成绩、最高分、最低分;
14.创建视图view_stu,包括学号、姓名、年龄、入 学日期、专业;
15.向students表的学号、姓名、年龄、入学 日期、专业 输入自己的相关信息。
三)根据实验3提供的Employees、Departments、Salary数据表,写出下列查询语 句的
主要功能。
1. SELECT Employees.*
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Departments.部门名 = '财务部')
2. SELECT Employees.*
FROM Employees INNER JOIN


Salary ON Employees.编号 = Salary.编号
WHERE (Salary.收入< 2500)
3. SELECT Employees.*
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Employees.出生日期<=
(SELECT MIN(出生日期)
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Departments.部门名 = '研发部'))) AND (Departments.部门名 = '财务部')
4. SELECT AVG(Salary.收入) AS 平均收入
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部')
5. SELECT MAX(Salary.收入) AS 最高收入, MIN(Salary.收入) AS 最低收入
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部')
6. SELECT AVG(Salary.收入-Salary.支出) AS 实际平均收入
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部')
7. SELECT COUNT(Employees.编号) AS 总人数
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Departments.部门名 = '财务部')
8. SELECT COUNT(Employees.编号) AS 总人数
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部') AND (Salary.收入> 2500)
9. SELECT Employees.*, Salary.收入
FROM Employees INNER JOIN


Salary ON Employees.编号 = Salary.编号
ORDER BY Salary.收入DESC
10. SELECT Departments.部门名, AVG(Salary.收入) AS 平均, MAX(Salary.收入) AS 最
高,
MIN(Salary.收入) AS 最低, COUNT(*) AS 人数
FROM Employees INNER JOIN
Salary ON Employees.编号 = Salary.编号 INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
GROUP BY Departments.部门名
ORDER BY COUNT(*)

四、程序改错

建立j bqk数据表结构并满足完整性的要求是:学号必须输入,且为主键;
“姓名”必须输入;“性别”必须 输入“男”或“女”; 出生日期为1985-2009
之间,所属单位为“管理 学院”和“能源学院 ”;专业的默认值为“信息管理”;
各门课程的成绩必须在0-100之间。建立该数据表结构 的其T-SQL语句如下,
修改其中的错误。

CREATE DATABASE JBQK --FOUND ERROR 1--

(学号

char (8) PK_xh NOT NULL PRIMARY KEY, --FOUND ERROR 2--



姓名nchar (4) IS NULL , --FOUND ERROR 3--



性别nchar (1) CONSTRAINT chk_xb

性别=‟男女‟, --FOUND ERROR 4--



出生日期

datetime CONSTRAINT CK_rq check(出生日期

between 1985
and 2008) , --FOUND ERROR 5--



所属单位

char (16) in(„管理学院‟,‟能源学院‟), --FOUND ERROR 6--



专业char (20) default „信息管理‟ for

专业, --FOUND ERROR 7--



数学decimal(4, 1) CHECK (数学

= [0-100]) , --FOUND ERROR 8--



语文decimal(4, 1) CHECK (语文

Not NULL) , --FOUND ERROR 9--



英语decimal(4, 1) CHECK (0<=英语

<= 100) , --FOUND ERROR 10--



备注text )


SQL Server

练习题二

一、单项选择题

1.下列关于Create Table创建数据表,叙述正确 的是______。

A)

必须在数据表名称中指定表所属的数据库

B)

必须指明数据表的所有者

C)

指定的所有者和表名称在数据库中必须唯一

D)省略表名称时,自动创建一个临时表

2.表设计器的“允许空”,用于创建字段的______约束。

A)

主键 B)

外键

C) CHECK D)非空

3.下列字段定义错误的是______。

A)

学号

varchar(16) B)

人数

int 4 C)

产量

float D)

价格

decimal(8,2)

4.删除数据库中已经存在的数据表test的命令是______。

A) DELETE TABLE test B) DELETE test

C) DROP TABLE test D) DROP test

5.在数据表test中增加一个字段

cj(成绩)的命令是______。

A) ADD TABLE test cj int B) ADD TABLE test ALTER cj int

C) ALTER TABLE test DROP cj int D) ALTER TABLE test ADD cj int

6.在关系模式test(学号,姓名,性别,年 龄)中,删除属性“年龄”的命令
是______。

A) DELETE

年龄

FROM test B) ALTER TABLE test DROP

年龄

C) UPDATE test SET年龄 D) ALTER TABLE test ADD

年龄

7.在关系模式test(学号,课程名称,成绩) 中,插入一条记录的正确命令是
______。

A) ADD INTO test VALUES(„0001‟,‟高数‟,‟80‟)

B) INSERT INTO test VALUES(„0001‟,‟高数‟,‟80‟)

C) ADD INTO test VALUES(„0001‟,‟高数‟,80)

D) INSERT INTO test VALUES(„0001‟,‟高数‟,80)

8.在关系模式test(学号,课程名称,成绩) 中,若要把“0001”的高数成绩
改成85分,正确命令是______。

A) UPDATE test SET

成绩=”85” WHERE

学号=”0001” and

课程名称=”高数”

B) UPDATE test SET

成绩=85 WHERE

学号=”0001” and

课程名称=”高数”

C) UPDATE test SET

成绩=‟85‟ WHERE

学号=‟0001‟ and

课程名称=‟高数‟

D) UPDATE test SET

成绩=85 WHERE

学号=‟0001‟ and

课程名称=‟高数‟

9.不属于SQL Server的数据类型是______。

A)

整型数据类型 B)浮点数据类型


C)

通用型数据类型

D)

字符数据类型

10.不属于整型数据类型的是______。

A) int B) smallint C) tinyint D) integer

11.如果数据表中某个字段只包含1~200之间的整数,则该字段最 好定义为
______。

A) int B) smallint C) tinyint D) bit

12.如果数据表中某个字段的数据精度要求8~12位,则该字段最好定义为
______。

A) real B) smallint C) float D) money

13.某个字段的数据类型定义为 decimal(12,5),则该字段有______位整数。

A) 12 B) 5 C) 6 D) 7

14.存储诸如”邮政编码”的字段类型最好定义为______。

A) Char(6) B) varChar(6) C) NChar(6) D) NvarChar(6)

15.存储诸如”通讯地址”的字段类型最好定义为______。

A) Binary(n) B) varChar(n) C) Nbianry(n) D) Ntext

16.SQL查询的HAVING子句通常出现在______子句中。

A) ORDER BY B) GROUP BY C) INDEX D) INTO

17.SELECT-SQL语句中的条件子句的关键 字是______。

A) WHERE B) FROM C) ORDER BY D)GROUP BY

18.INSERT-SQL命令的功能是______。

A)

在表头插入一条记录 B)

在表尾插入一条记录

C)

在指定位置插入一条记录 D)在指定位置插入若干记录

19.UPDATE- SQL命令的功能是______。

A)

数据定义 B)

数据查询

C)

更新表中某些列的属性 D)修改表中的某些列的内容

20.查询命令中,限制显示记录条数的关键字是____。

A)TOP n B)DISTINCT C) ORDER D)HAVING

21.查询命令中,搜索介于两个指定值之间的所有信息的关键字是____。

A)TOP n B)LIKE C) BETWEEN D)IN

22.能对某列进行平均值运算的函数是______。

A) SUM() B) AVERAGE() C) COUNT() D)AVG()

23.查询命令中,搜索与给定的列表中任意一个值相匹配的记录的关键字是
____。

A)TOP n B)LIKE C) BETWEEN D)IN

24.模式匹配符号中,可匹配任意类型和长度的字符串的模式符号是____。

A) _(下划线) B) % C) [ ] D)[^ ]


25.从表中删除一条或多条记录的T- SQL命令是______。

A) DELETE B) DELETE

„FROM„WHERE

C)DROP„FROM D) DELETE„TABLE„WHERE

26.对数据表的结构进行修改的命令是______。

A) MODIFY TABLE B)ALTER TABLE C)DROP TABLE D)CREATE
TABLE

27.查询命令中,消除字段数据的重复值的关键字是____。

A)TOP n B)DISTINCT C) ORDER D)HAVING

28.用于统计记录个数的运算函数是______。

A) SUM() B) AVERAGE() C) COUNT() D)AVG()

29.查询命令中,搜索某字符串是否与指定的模式匹配的关键字是____。

A)TOP n B)LIKE C) BETWEEN D)IN

30.连接查询中,连接的结果是从两个表中挑选出符合连接条件的数据的连接方式是____。

A) Inner Join B)Left Join C)Right Join D)Full Join

二、填空题

1.在SQL中,create table、alter table和drop table命令分别 是在数据
库中 、 和_______基本表结构的命令。

2.向基本表插入数据时, 可以在命令中使用关键字 引出记录
值。或者在命令中 子句得到一个结果表。

3.在SQL的查询语句中, 选项实现投影运算,
___________选项实现连接运算, 选项实现选择运算。

4.在SQL的查询语句中, 选项实现分组统计功能,

选项实现对结果表的排序功能。

5.在SELECT语句的ORDERBY子句中, DESC表示按______输出;省略DESC
则按______输出。

6.在SQL SERVER中,datetime数据类型主要用来存储______和______ 的组合
数据,其常量需 要用______括起来;通常用______数据类型来表示逻辑数 据。

7.在SQL SERVER中,整数类型包括______、______、____ __和______4种,
它们分别占用______、______、______和______个 存储字节。

8.在SQL SERVER中,数据表的完整名称 应包括______、__ ____和______3
个部分,其中______和______可以省略。

9.SQL Server提供的双字节数据类型 共有3类,分别是______、______、______。

10.在SQL Server中,共使用了3种数据类型来存储二进制 数据,分别是______、
______、______。在对二进制数据进行 插入操作时,必须在数据常量前面增加
一个前缀______。



三、数据表基本操作

学生的基本情况表如下:

学号 姓名 身份证号
342425760824271



出生日期 省份 所属单位
管理学院
测量系
测量系

专业
信管
地质
地质










李龙

张峰
03091983
陕西省
06181985
河南省
08171986
湖南省
……
69 92 56
41 67 65
93 96 87

410527


王亚泽
611213

…… ……
1.写出建立该数据表结构的T- SQL语句(数据表名:JBQK099);要求“学 号”、
“姓名”、“身份证号”必须输入。(将099改 成自己学号后3位)

2.按下列要求修改数据表结构

1)添加“年龄”、“出生地”两个字段;

2)将“性别”的数据类型修改成bit;

3)将“专业”的数据类型改成Varchar(30)且不允许空;

4)删除“备注”字段。

2.按下列要求写出插入数据的T-SQL语句

(要求:以下操作中,所有的“学号”、“姓名”、“专业”均 为自己的真实信息)

1)插入1条 完整记录;

2)插入1条 记录,只输入“学号”、“姓名”、“身份证号”、“专业”的相关内容;

3)插入1条 记录,只输入“学号”、“姓名”、“身份证号”、“专业”和各门课程成
绩等相关内容;

3.按下列要求修改数据表

1)将所给表中第2条 记录的“姓名”、“学号”、“专业”修改为自己的真实数据;

2)将自己的数学成绩提高15%,英语成绩提高10分,政治成绩减少5分;

3)将没有数学成绩的记录,均修改为60分。

4)添加“总分”、“平均分”字段,并计算自己的总分和平均 分。

4.删除“性别”为空的所有记录。

四、基本查询

(根据上面的数据表,按下列要求写出相应的SELECT 语句)

1.显示表中前2条 的学号、姓名、各门课程成绩的信息;

2.查询自己的学号、姓名、各门课程成绩、总成绩、平均成绩信 息;

3.显示学号是„40‟ 开头,姓“张”和姓“李”的所有信息;

4.显示“管理学院”的不及格学生的信息;

5.显示80年 到83年出生的学生信息;

6.显示数学成绩不是60、70、80、90的 学生信息;

7.显示不同系部单位的学生人数、英语课程的总分、平均、最高 分、最低分;


8.将总成绩大于200的学生的学号、数学、 政治、英语等信息存入CJB中;

9.从JBQK、CJB中选出“陕西省”的学 生的姓名 、性别、所在系部、省份、
总成绩,结果按总成绩降序排列,若总成绩相同则按姓名升序排列;

10.选出与“王亚泽”同一个系的学生的姓名、性别、所在系部、平 均成绩。


SQL Server

练习题三

一、选择题

1. 如果将某一列设置为表的主键,则在表中此列的值( )。
A)可以出现重复值 B)允许为空值
C)不允许为空值,也不能出现重复值 D)不允许为空值,但允许列值重复
2. 下面语句中,哪种语句用来修改视图( )。
A)alter table B)modify view C)drop view D)alter view
3.下列标识符可以作为局部变量使用( )
A) [@Myvar] B) My var C) @Myvar D) @My var
4.创建存储过程的命令为( )。
A) CREATE VIEW B) CREATE INDEX
C) CREATE PROCEDURE D) CREATE FUNCTION
5.将jbqk表复制到数据表jg_tab中,正确的语句是 ( )
A) select * from jbqk into jg_tab B) select * into jg_tab from jbqk
C) insert jg_tab from jbqk D)insert jg_tab select * from jbqk
6.print len(rtrim(str(245+100+0.5)))的显示结果是 ( )
A) 345 B) 345.5 C) 10 D)3
ascii(„12‟)+len (substring(„1234‟,2,2))+day(„2009-10-1‟)的 结果为
A)26 B) 35 C) 52 D)出错
8.计算两个日期之间的差值的函数是( )
A) getdate B) dateadd C) datename D)datediff
9.产生(0,1)之间随机数的函数是( )
A) sqrt() B) rnd() C) floor() D)rand()
10.判断“成绩”是否在0~100之间的约束是( )
A) default B) constrain C) range D)check
二、填空题

1. 在SQL Server中, 编辑、运行Transact- SQL语句是在 ______中完成。
2.Create database命令定义一个数据库,包括定义______文件和 _____文件
部分。


3.在查询分析器中,打开一个数据库使之成为当前库,有___种方法,其中之一使用的命令关键字为 _______。
4. Select语句可以实现多个数据表连接查询,其中外连接的方式分别有 ______、__
____和______。
5. Select语句可以实现模糊查询, 其模式匹配有4种,它们分别是______、___
___、______、______。
6. 常用的聚合函数有:计算最大值的_______,计算最小值的_______,统计总 和的
_______,统计记录总数的_______和计算平均值 的_______。聚合函数的计算对象不仅
是列而且可以是_______。
7. SQL Server 2000的数据库管理程序分为_________和_________两部分,两部分可以
安装在 同一台计算机上,也可以分别安装在不同的计算机上。
8. SQL Server实例的身份验证模式有_______和_______两种。
9. 对表操作的 数据定义语言(DDL)有创建表的_______语句、修改表结构的_______语
句和删除表 的_______语句。
10. 对表中数据更新操作的数据定义语言(DML)有添加记录的__ _____语句、修改记录的
_______语句和删除记录的_______语句。
11. 主键是唯一能够区分表中每一行记录的_______。一个表只能有_______主键,主键不
能为 空值,并且 可以强制表中的记录的_______。主键的标志为_______。
12. 存在 两个表A和B,表A中的主键列在表B中也存在,但并不是表B的主键,仅作为
表B的一个必要的属性, 则称此属性为表B的_______。
13. 在一个已存在数据的表中增加一列,一定要保证所增加的列允许______ 值。
14.CHECK 约束被称为________约束,UNIQUE约束被称为________约
束。当一个表带有约束 后,执行对表的各种_______操作时,将自动 检查相应的约
束,只有符合约束条件的合法操作才能被真正执行。
15.定义局部变量的语句关键字为___,局部变量的开始标记为______。
16.创建和删除存储过程my_proc的命令为 ________和_________。
17.任意写出5个常用字符函数的完整命令格式(即命令和参 数)_____、____
_、_____、_____、_____。
18.任意写出5个常用日期函数的完整命令格式(即命令和参 数)_____、____
_、_____、_____、_____。
19.select * from 学生基本情况 where len(rtrim(姓名))=2的功能是_____
20.select ascii(str(156))+ascii(ltrim(str(200)))的结果是_____

三、综合练习

假设存在名为AAA的数据库,包括Students( 学号char(8),姓名varchar(8),身份证号
char(18),年龄int,专业va rchar(20),入学日期DateTime)和Score(学号char(8),课程名
var char(10),成绩numeric(5,2))两张表。
一)写出下列程序段的功能。



1. DECLARE @ MyNO CHAR(8)
SET @MyNO=‟40030001‟
IF(SELECT 专业FROM Students WHERE 学号=@MyNO)=‘信息管理’
BEGIN
SELECT AVG (成绩)AS 平均成绩
FROM Score
WHERE =@MyNO
END
ELSE
PRINT ‘学号为’+@MyNO+‘的学生不存在或不属于信管专业’
GO
2. Declare @a numberic(5,2),@b numeric(5,2)
Set @a =(select max(成绩)from score)
Set @b=(select min (成绩)from score)
Print @a-@b
3. Declare @a char(8)
Set @a=‘计算机’
Select 计算机专业人数=count(*) From students Where left(专业,3)=@a
4. Select month (入学日期)as入学月份,count(*) as 人数
From students
Group by month(入学日期)

5. Create procedure xxk1
@xm varchar(10)=‟张‟
as
select * from students x,score y
where x.学号=y.学号and 姓名 like @xm+‟%‟
go
exec xxk1
6.Create procedure xxk3
@xh1 char(2)=‟2‟,@xh2 char(2)=‟22‟
as
select 学号,avg(成绩) as平均成绩 from score
where right(rtrim(学号),2) between @xh1 and @xh2
group by 学号


go
exec xxk3 @xh2=‟16‟,@xh1=‟6‟
7.create procedure xxk5
(
@a char(8),@b varchar(10),@c numeric(5,2)
)
as
insert into score values(@a,@b,@c)
二)按下列要求写出操作命令
1.根据student s、score表生成数据表xs_cj的结构,字段包括学号、姓名、入学日期、
专业、课程名、成绩 ;
2.根据students、score表向数据表xs_cj插入“信息管理”和“电子商务”专 业的学生
信 息;
3.修改“学号”的宽度为10,并将本专业的学号前7位改为专业的编号 、第8位为1或2(随
机产生)、后两位不变;
4.显示学生的学号、姓名、入学日期和专业的信息,要求入学日期按“xx年xx月xx日 星
期x”格式显示;
5.将“高等数学”为空的记录,修改为[60,85)之间的随机数;
6.创建视图view_xscj,包括学号、姓名、年龄、 入学日期、专业、课程名、成绩;
7. 查询“本专业99年入学年龄在19-25间”的学生信息;
8.查询“本专业学习成绩前5名”的学生信息;;
9.创建视图view_xscj1,包括学号、姓名、专 业、总成绩、平均成绩;
10. 查询各专业学习的排序情况;
11.创建存储过程按给定姓氏(默认姓“李”)查询学生的姓名、专业、总成绩、平均成
绩;
12.创建存储过程统计给定专业学生的平均成绩及人数;
13.创建存储过程统计2006-2009年入学的 学生的平均成绩、最高分、最低分;
14.创建视图view_stu,包括学号、姓名、年龄、入 学日期、专业;
15.向students表的学号、姓名、年龄、入学 日期、专业 输入自己的相关信息。
三)根据实验3提供的Employees、Departments、Salary数据表,写出下列查询语 句的
主要功能。
1. SELECT Employees.*
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Departments.部门名 = '财务部')
2. SELECT Employees.*
FROM Employees INNER JOIN


Salary ON Employees.编号 = Salary.编号
WHERE (Salary.收入< 2500)
3. SELECT Employees.*
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Employees.出生日期<=
(SELECT MIN(出生日期)
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Departments.部门名 = '研发部'))) AND (Departments.部门名 = '财务部')
4. SELECT AVG(Salary.收入) AS 平均收入
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部')
5. SELECT MAX(Salary.收入) AS 最高收入, MIN(Salary.收入) AS 最低收入
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部')
6. SELECT AVG(Salary.收入-Salary.支出) AS 实际平均收入
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部')
7. SELECT COUNT(Employees.编号) AS 总人数
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
WHERE (Departments.部门名 = '财务部')
8. SELECT COUNT(Employees.编号) AS 总人数
FROM Employees INNER JOIN
Departments ON Employees.部门号 = Departments.部门号 INNER JOIN
Salary ON Employees.编号 = Salary.编号
WHERE (Departments.部门名 = '财务部') AND (Salary.收入> 2500)
9. SELECT Employees.*, Salary.收入
FROM Employees INNER JOIN


Salary ON Employees.编号 = Salary.编号
ORDER BY Salary.收入DESC
10. SELECT Departments.部门名, AVG(Salary.收入) AS 平均, MAX(Salary.收入) AS 最
高,
MIN(Salary.收入) AS 最低, COUNT(*) AS 人数
FROM Employees INNER JOIN
Salary ON Employees.编号 = Salary.编号 INNER JOIN
Departments ON Employees.部门号 = Departments.部门号
GROUP BY Departments.部门名
ORDER BY COUNT(*)

四、程序改错

建立j bqk数据表结构并满足完整性的要求是:学号必须输入,且为主键;
“姓名”必须输入;“性别”必须 输入“男”或“女”; 出生日期为1985-2009
之间,所属单位为“管理 学院”和“能源学院 ”;专业的默认值为“信息管理”;
各门课程的成绩必须在0-100之间。建立该数据表结构 的其T-SQL语句如下,
修改其中的错误。

CREATE DATABASE JBQK --FOUND ERROR 1--

(学号

char (8) PK_xh NOT NULL PRIMARY KEY, --FOUND ERROR 2--



姓名nchar (4) IS NULL , --FOUND ERROR 3--



性别nchar (1) CONSTRAINT chk_xb

性别=‟男女‟, --FOUND ERROR 4--



出生日期

datetime CONSTRAINT CK_rq check(出生日期

between 1985
and 2008) , --FOUND ERROR 5--



所属单位

char (16) in(„管理学院‟,‟能源学院‟), --FOUND ERROR 6--



专业char (20) default „信息管理‟ for

专业, --FOUND ERROR 7--



数学decimal(4, 1) CHECK (数学

= [0-100]) , --FOUND ERROR 8--



语文decimal(4, 1) CHECK (语文

Not NULL) , --FOUND ERROR 9--



英语decimal(4, 1) CHECK (0<=英语

<= 100) , --FOUND ERROR 10--



备注text )

关于爱国的文章-乔迁贺词


童年的读后感500字-给辅导员的一封信


圣诞之夜-中药材种植指南网


五一手抄报大全-读后感100字


美发店活动-环保作文结尾


梵文是什么-房屋出租合同范本


湖南广益实验中学-邀请函英文


河北民族师范学院吧-怎么写个人简历