练习题1—数据库创建与管理
1.请在空白处填写合适的内容,以完善下列语句。
(1)创建一个名为company的用户数据库。其数据文件的初始大小为10MB,无最大限制,以10%的速度增长。日志文件的初始大小为1MB,最大为5MB,以1MB的速度增长。
create database on primary
(name=company_data,
filename=?D:\\MSSQL\\DATA\\company.mdf', SIZE= , MAXSIZE = , FILEGROWTH= ) log on
(name=company_log,
filename=?D:\\MSSQL\\DATA\\company.ldf', SIZE= , MAXSIZE = , FILEGROWTH= ) (2)将company数据库设置为只读状态。
EXEC SP_DBOPTION ? ?, ? ?,?true? (3)将company数据库的初始分配空间大小扩充到20MB。
ALTER DATABASE MODIFY FILE
(NAME= , SIZE= ) (4)将company用户数据库改名为corporation。
EXEC SP_DBOPTION ?company ?, ? ?, ?true? EXEC ?company ?, ?corporation?
EXEC SP_DBOPTION ?corporation?, ?single user?, ? ? (5)将corporation数据库的空间压缩至最小容量。
(?corporation?) (6)删除corporation数据库。
corporation 2.简答题
(1)SQL Server中包含了哪两种类型的数据库?
(2)系统数据库有哪些?它们各自的功能是什么? (3)创建用户数据库的方法有哪些?
练习题2—数据表的创建、修改
一、选择题
1.假如定义表时没有为一个CHAR数据类型的列指定长度,其默认长度是多少( )
A. 256 B. 1000 C.64 D.1 2.关系数据库是若干( )的集合。
A. 表(关系) B. 视图 C. 列 D.行 3.从下列选项中选择一个无效的数据类型( )。无
A. binary B. varchar C. time D.image 4.不允许在关系中出现重复记录的约束通过( )实现。
A.CHECK B. DEFAULT C. FOREIGN KEY D.PRIMARY KEY 或UNIQUE
5.参照完整性规则:表的( )必须是另一个表主键的有效值,或者是空值。
A. 次关键字 B. 外关键字 C. 主关键字 D.主属性 6.从表stud_info中删除一列telcode的命令是什么( )
A. ALTER TABLE stud_info DROP COLUMN telcode
B. ALTER TABLE stud_info REMOVE COLUMN telcode C. DROP COLUMN telcode FROM stud_info D.不能从表中删除一列
7.下列哪一条语句将在教师基本信息表teacher_info的teacher_id列上建立一个主键约束PK_teacher_id( )
A. CREATE PRIMARY KEY ON teacher_info(teacher_id)
B. CREATE CONSTRAINT PRIMARY KEY PK_teacher_id ON teacher_info(teacher_id) C. ALTER TABLE teacher_info
ADD CONSTRAINT PK_teacher_id PRIMARY KEY(teacher_id) D. ALTER TABLE teacher_info ADD PRIMARY KEY(teacher_id)
8.假如已经建立了表stud_score,该表有6条记录,当执行以下语句时,哪条说法是正确的 ALTER TABLE stud_score ADD exam_date DATE DEFAULT GETDATE( )
A.一个新的列exam_date 被添加到表stud_score中,并且已经存在的行中该列的值为
NULL
B.由于表中有数据,所以不能增加新的列
C.由于表中有数据,不能提供DEFAULT值
D. 一个新的列exam_date 被添加到表stud_score中,并且用当前系统日期和时间作为该列的值
9.下列哪条语句将成功地往表stud_score中加入一个新列exam_date( )
A.ALTER TABLE stud_score ADD COLUMN exam_date DATE B. ALTER TABLE stud_score ADD exam_date(DATE) C. ALTER TABLE stud_score ADD exam_date DATE
D. ALTER TABLE stud_score NEW COLUMN exam_date TYPE DATE 10.下列CHECK约束条件中哪个总是有效的?( )
A. CONSTRAIT sex_chk CHECK (sex IN (?男?,?女?))
B. CONSTRAIT birthday_chk CHECK (birthday>GETDATE( )) C. CONSTRAIT mark_chk CHECK (mark<560)
D. CONSTRAIT address_chk CHECK (address LIKE ?广州市%?)
二、填空题
1.对student数据库的stud_info学生信息表中的学号stud_id列建立一个名为xh_index索引。 USE student GO
CREATE INDEX xh_index ON stud_info (stud_id)
2.创建一个复合索引。为了方便按入学成绩和学号查找学生,为stud_info学生信息表创建一个基于“入学成绩,学号”组合列的非聚集、复合索引cj_xh_index,其语句如下: USE student GO
CREATE INDEX cj_xh_index ON stud_info (mark,stud_id)
3. 创建一个聚集、复合索引。
为stud_grade学生成绩表创建一个基于“学号,课程号”组合列的聚集、复合索引xhkc_index,其语句如下: USE student GO
CREATE clustered INDEX xhkc_index ON stud_grade(stud_id,course_id)
4. 创建一个唯一、聚集、复合索引。
为课程信息表course_info创建一个基于“课程号,课程类型”组合列的唯一、聚集、复合索引kc_lx_index,填充因子值为60。其语句如下: USE student GO
CREATE unique clustered INDEX kc_lx_index ON course_info(course_id,course_type)
WITH
PAD_INDEX,FILLFACTOR= 60
三、简答题
1.对已经建立的学生成绩表stud_grade中的课程号course_id列创建一个名为stud_course_id_index的索引。
CREATE INDEX stud_course_id_index ON stud_grade(course_id)
2.删除索引时所对应的数据表会删除吗?
3.请说明下列命令的作用。
EXEC sp_helpindex ?teacher_info?
4.写命令,清除student数据库中stud_info表的索引pk_xuehao上的碎片。 Use student Go
Dbcc indexdefrag(student,stud_info,pk_xuehao)
5.写命令,在student数据库中的stud_info表上查询所有男生的姓名和年龄,并显示查询处理过程中的磁盘活动统计信息。 Use student Go
Set statistics io on go
select stud_name as 姓名,year(getdate( ))-year(birthday) as 年龄 from stud_info where sex=?男? go
6.写命令,删除课程信息表course_info中已经建立的索引course_idx。 Use student Go
Drop index course_info.course_idx
7. 写命令,对表stud_score增加一列total_score,数据类型为int。 Use student Go
Alter table stud_score add total_score int
8.写命令,在student数据库中创建一个名为stud_info_gz的规则,并将其绑定到表stud_info中的性别sex列上,使用户输入的性别只能是“男”或者“女”,否则提示输入无效。
CREATE RULE stud_info_gz AS @sex in('男','女') go
exec sp_bindrule stud_info_gz,'stud_info.sex'