习题
一、选择题
1.创建银行的贷款情况表时,“还款日期”默认为当天,且必须晚于“借款日期”,应采用( )约束。
A.检查约束、默认约束 B.主键约束C.外键约束 D.默认约束
2.希望某个字段存放电话号码,该字段应选用( )数据类型。
A.char(10) B.varchar(13)
C.text D.int
3.在SQL Server中,删除数据库表使用( )语句。
A.delete B.drop
C.create D.use
4.在SQL Server中,创建数据库表使用( )语句。
A.delete B.drop
C.create D.use
5.表A和表B建立了主外键关系,A表为主表,B表为子表,以下说法中正确的是( )。
A.B表中存在A表的外键 B.B表中存在外键
C.A表中存在外键 D.A表中存在B表的外键
6.在学生成绩表(tblScore)中的列Score用来存放某学生学习某课程的考试成绩(0~100分,没有小数),用下面的( )类型最节省空间。
A.int B.smallint
C.decimal(3,0) D.tinyint
7.在SQL Server 2008的表设计器中编辑数据表记录时,下列叙述错误的是( )。
A.不允许修改标识列数据
B.不允许修改计算列数据
C.不允许修改二进制类型(包括binary、varbinary和image类型)和timestamp类型列的数据
D.任何时候都可以按【Esc】键取消对数据表的修改
8.可使用下列操作中的( )为列输入null值。
A.输入null B.输入>null<
C.将列清空 D.按【Ctrl+0】组合键(0为“零”)
9.下列关于“SQL Query”标签页的使用错误的是( )。
A.可以执行insert命令添加记录
B.不能直接打开数据表为其插入、修改或删除记录
C.可以通过执行update命令修改记录
D.可以通过执行delete命令删除记录
10.下列关于insert命令使用正确的是( )。
A.可以在insert命令中指定计算列的值
B.可以使用insert命令插入一个空记录
C.如果没有为列指定数据,则列值为空
D.如果列设置了默认值,则可以不为该列提供数据
11.下列关于update命令错误的是( )。
A.可以使用default关键字将列设置为默认值
B.可以使用null关键字将列设置为空值
C.可以使用update命令同时修改多个记录
D.如果update命令中没有指定的搜索条件,则默认只能修改第一条记录
12.在表A中有一列为B,执行删除语句“delete from A where B like ‘_[ae]%’”,下面包含B列( )值的数据行可能被删除。
A.Why B.Carson C.Annet D.John
13.假如A表中包括了主键列B,则执行更新命令update A set B=200 where B=201,执行的结果可能是( )。
A.更新了多行记录 B.可能没有更新
C.T-SQL语法错误,不能执行 D.错误,主键列不允许更新
14.假设A表中有主键AP列,B表中有外键BF列,BF列引用AP列来实施引用完整性约束,此时如果使用T-SQL命令update A set AP=‘ÁBC’ where AP=‘ÉDD’来更新A表的AP列,可能运行结果是( )。
A.肯定会产生更新失败 B.可能会更新A表中的两行数据
C.可能会更新B表中的一行数据 D.可能会更新A表中的一行数据
15.下列执行数据的删除语句在运行时不会产生错误信息的选项是( )。
A.delete * form A where B=‘6’ B.delete form A where B=‘6’
C.delete A where B=‘6’ D.delete A set B=‘6’
16.假如表ABC中A列的默认值为“EMPTY”,同时还有B列和C列,则执行T-SQL命令insert ABC (B,C) values(23,‘EMPTY’),下列说法中正确的选项是( )。
A.A列的值为“23” B.B列的值为“EMPTY”
C.C列的值为“EMPTY” D.A列的值为空
17.假设ABC表中A列为主键,并且为自动增长的标识列,同时还有B列和C列,所有列的数据类型都是整数,目前还没有数据,则执行插入数据的T-SQL语句insert ABC(A,B,C) values(1,2,3)后的结果是( )。
A.插入数据成功,A列的数据为1 B.插入数据成功,A列的数据为2
C.插入数据成功,B列的数据为3 D.插入数据失败
18.假设表T_Test中有A,B两列,则对T-SQL 语句delete A from T_Test说法正确的是( )。
A.这是一条错误的SQL 语句
B.这是删除表T_Test的A列字段和相应的数值
C.这是删除表T_Test的A列的所有值
D.这是删除表T_Test中有A的所有数据行
19.表A中的列B是标识列,属于自动增长数据类型,标识种子是2,标识递增量为3。首先插入3行数据,然后再删除一行数据,再向表中增加数据行时,标识值是( )。
A.5 B.8 C.11 D.2
20.假设表A中列B的数据类型是char类型,列C的数据类型是datetime类型,列D的数据类型是int类型,则对SQL语句insert into A(B,C,D) values("张三",#2002-2-10#,12.0)说法错误的是( )。
A."张三"应该是‘张三’
B.#2002-2-10#应该是‘#2002-2-10#’
C.#2002-2-10#应该是2002-2-10
D.#2002-2-10#应该是‘2002-2-10’
二、上机题
1.表和表中约束的建立
下面是一个虚构的企业员工管理系统中的3个表(如与具体企业管理系统相同,纯属巧合),表tblEmployee 用于记录员工基本信息,并作为基础表与其他表进行连接,如表2.14所示。表tblDepartment用于记录企业内部的部门信息,每个独立的部门在该表中都对应一条记录,如表2.15所示,该表通过与tblEmployee表关联可以确定员工所属的部门,该表中还记录了部门经理的员工编号,可以确定每个部门的部门经理。表tblSalary用于记录员工每月的工资信息,包括工资发放时间、工资编号等,表tblSalary通过字段Employeeid与表tblEmployee关联,如表2.16所示。
表2.14 tblEmployee(雇员表)
注:Departid应是外键,因为部门表还没有创建,所以在以后章节中通过修改表的约束操作实现。
表2.15 tblDepartment(部门表)
表2.16 tblSalary(工资表)
(1)先对上面3个数据库表使用create table<表名>编写SQL语句命令行;
(2)请在以前你自己创建的数据库下操作,上机使用界面方式(或称SQL Server管理平台)和SQL语句命令方式创建上面3个数据库表及其中的约束。
2.表中数据操作
(1)为学生基本情况表(tblStudent)增加StudMemo(备注)列,数据类型为ntext。
(2)删除tblClass表中的主键约束。
(3)用SQL语句删除表tblStudent和tblClass。(思考:应该先删除哪个表才不会出错?)
(4)向表tblCourse添加一条记录,课程号为“30007”,课程名为“操作系统”,课程类型编号为“2”,学分为“4”,学时为“60”。
(5)插入一条选课记录:学号为“31043003”,课程号为“30004”,选修学期为“5”。
(6)将“数据库”课程的学分改为“6”,学时改为“90”。
(7)将tblClass表中在校年份超过学制年份(Length)的毕业标志(Flag)更新为毕业。
(8)删除成绩表中所有不及格的记录。
(9)删除成绩表中所有的记录。