数据库期末考试题
日本物价-股份合作协议书
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 )