数据库应用答案第四章
第4章习题参考答案
1. 简要回答下列问题。
⑴ 什么是表?什么是列?如何确定列值的数据类型?数据类型中char 和varchar 有什么区别?
答:
表是对数据进行存储和操作的一种逻辑结构,每一个表代表一个对象。
列是代表记录中的一个域。
其列值应为SQL Server数据类型。
Char 与varchar 的区别在于:
① 当实际的字符串长度小于给定长度时,char 类型会在实际的字符串尾部添加空格以达到固定的字符数,而varchar 类型则会丢掉尾部的空格以节省空间。
② 由于varchar 类型是长度可变的结构,因此需要额外的开销来保存信息。所以,选用char 还需要varchar ,要根据用户提供数据的长度而定。
⑵ 简述CREATE TABLE语句的各个参数的作用。如果创建表时,没有指定NULL 或NOT NULL,在缺省情况用什么?
答:
database name:指要在其中创建表的数据库名称。
Table name:新建表的名称
Colume_name:表中的列名
Computed_colume_expression:定义统计列值的表达式。
ON{filegroup|DEFAULT}:指定存储表的文件组。
TEXTIMAGE_ON:表示text.ntext 和image 列存储在指定文件组中。
如果创建表时,没有指定NULL 或NOT NULL,默认用NULL (允许为空值)。
⑶ INSERT语句的用途是什么?如果在INSERT 语句中列出了6个列名,那需要提供几个列值?如果向一个没有缺省值而且也不允许NULL 值的列中插入一个NULL 值,结果会怎样?
答:
使用INSERT 语句可以完成数据插入;
6个列值;
弹出信息框:INSERT 失败,语句被终止。
⑷ UPDATE语句的作用是什么?为什么在使用UPDATE 语句时提供一个WHERE 子句很重要?
答:
使用UPDATE 语句可以更新数据库表中已有记录中的数据;
WHERE 可以指定更新的记录所应满足的条件。
⑸ DELETE语句的作用是什么?使用DELETE 语句能一次删除多个行吗?
答:
使用DELETE 语句可以从表中删除一行或多行记录;
可以,需要WHERE 子句。
⑹ 说明DELETE FROM teacher_info与ALTER TABLE teacher_info DROP COLUOMN teacher_id的区别?
答:
DELETE FROM teacher_info
--删除的是teacher_info表中的行;
ALTER TABLE teacher_info
DROP COLUOMN teacher_id
--删除列teacher_id。
⑺ 对表stud_score增加一列total_score,数据类型为int ,用什么命令?
答:
ALTER TABLE stud_score
ADD COLUOMN total_score int
GO
⑻ 什么是约束?请分别说明各种不同类型约束的含义。如何创建和删除PRIMARY KEY 约束?写出其SQL 的语句格式。
答:
约束是SQL Server强制实行的应用规则,它通过限制列/行和表中的数据来保证数据完整性。
CHECK 约束:用于限制输入到一列或多列的值的范围,从逻辑表达式判断数据的有效性;
DEFAULT 约束:若将表中某列定义了DEFAULT 约束后,用户在插入数据行时,如果没有为该列指定数据,那么系统将默认值赋给该列;
PRIMARY KEY约束:表中常有一列或多列的组合,其值能唯一得标识表中的每一行; FOREIGN KEY约束:外键用于建立和加强两个表的一列或多列数据之间的连接,当数据添加. 修改或删除时,通过外键约束保证它们之间数据的一致性;
UNIQUE 约束:用于确保表中某个列或某些列没有相同的列值。
--创建PRIMARY KEY约束
ALTER TABLE stud_info
ADD CONSTRAINT pk_stud_info PRIMARY KEY CLUSTERED(suud_id)
--删除PRIMARY KEY约束
ALTER TABLE stud_info
DROP CONSTRAINT ck_stud_info
⑼ 试述默认和规则的概念和作用?创建一个名为stud_info_gz的规则,并将其绑定到表stud_info中的性别(gender)列上,使用户输入的性别只能是“男”或“女”,否则提示输入无效。
答:
默认值是预先定义好,需要时将它绑定到一列或多列上,在表中插入数据行时,系统自动为没有指定数据的列提供事先定义的默认值。
默认值时一种数据库对象,在数据库中只需要定义一次后,就可以被一次或多次应用于任意表中的一列或多列,还可以用于用户自定义的数据类型。
规则,这种数据库对象的作用就是当向数据表中插入数据时,指定该列数据值的范围,通过使用规则,用户可以指定插入某列的有效值,从而确保用户在该列输入的数据在指定的范围内。
USE student
GO
CREATE RULE stud_info_gz
AS gender=N'男' or gender='女'
GO
EXEC sp_bindrule stud_info_gz, stud_info.gender
⑽ 请说明下面批无效的原因,并指出能够正常执行的方法。 USE student
GO
CREATE TABLE dept_code (deptcode CHAR(2),deptname NVARCHAR(20))
GO
ALTER TABLE ADD director NCHAR(8)
INSERT INTO dept_code VALUES('08',N'人文科学系',N' 李里')
GO
答:
去掉中间的GO
2. 选择最适合的答案
⑴ 假如定义表时没有为一个CHAR 数据类型的列指定长度,其默认长度是多少?
[ A ]
3
A. 256 B. 1000 C. 64 D. 1
⑵ 不允许在数据表中出现重复记录的约束是通过[ D ]实现。
A. CHECK B. DEFAULT C. FOREIGN KEY D. PRIMARY KEY或UNIQUE
⑶ 参照完整性规则:表的[ B ]必须是另一个表主键的有效值,或者是空值。
A. 次关键字 B. 外关键字 C. 主关键字 D. 主属性
⑷ 从表stud_info中删除一列telcode 的命令是什么?[ B ]
A. ALTER TABLE stud_info DROP COLUMN telcode
B. ALTER TABLE stud_info REMOVE COLUMN telcode
C. DROP COLUMN telcode FROM stud_info
D. 不能从表中删除一列。
⑸ 下列哪一条语句将在教师基本信息表(teacher_info)的teacher_id列上建立一个主键约束PK_teacher_id?[ C ]
A. CREATE PRIMARY KEY ON teacher_info (teacher_id)
B. CREATE CONSTRAINT PK_teacher_id PRIMARY KEY 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)
⑹ 假如已经建立了表stud_score,该表有6条记录,当执行以下语句时,哪条说法是正确的?[ C ] ALTER TABLE stud_score ADD exam_date DATE DEFAULT GETDATE()
A. 一个新的列exam_date被加到表stud_score中,并且已经存在的行中该列的值为NULL 。
B. 由于表中有数据,所以不能增加新的列。
C. 由于表中有数据,不能提供DEFAULT 值。
D. 一个新的列exam_date被加到表stud_score中,并且用当前系统日期和时间作为该列的值。
⑺ 下列哪条语句将成功地往stud_score表中加入一个新列exam_date?[ C ]
A. ALTER TABLE stud_score ADD COLUMN exam_date DATETIME
B. ALTER TABLE stud_score ADD exam_date(DATETIME)
C. ALTER TABLE stud_score ADD exam_date DATETIME
D. ALTER TABLE stud_score NEW COLUMN exam_date TYPE DATETIME
⑻ 下列CHECK 约束条件中哪个总是有效的?[ A ]
A. CONSTRAINT gender_chk CHECK(gender IN (N'男',N' 女'))
B. CONSTRAINT birthday_chk CHECK(birthday > GETDATE())
C. CONSTRAINT mark_chk CHECK(mark
D. CONSTRAINT address_chk CHECK(address LIKE N'广州市%')