MySQL数据表的结构的同步练习与实训答案
一、选择题
- MySQL中创建数据表应该使用( B )语句。
A.CREATE SCHEMA
B.CREATE TABLE
C.CREATE VIEW
D.CREATE DATABASE
2.对一个已创建的表,( D )操作是不可以的。
A.更改表名
B.增加或删除列
C.修改已有列的属性
D.将已有text数据类型修改为image数据类型
3.在下列SQL语句中,修改表结构的语句是( A )。
A.ALTER B. CREATE C. UPDATE D. INSERT
4.下面是有关主键和外键之间的关系描述,正确的是( AC )。
A.一个表中最多只能有一个主键约束,多个外键约束
B.一个表中最多只有一个外键约束,一个主键约束
C.在定义主键外键约束时,应该首先定义主键约束,然后定义外键约束
D.在定义主键外键约束时,应该首先定义外键约束,然后定义主键约束
5.下列几种情况下,不适合创建索引的是( A )。
A.列的取值范围很小
B.用作查询条件的列
C.频繁搜索范围的列
D.连接中频繁使用的列
6.CREATE UNIQUE INDEX writer_index ON 作者信息(作者编号)语句创建了一个( A )索引。
A.唯一索引
B.全文索引
C.主键索引
D.普通索引
7.建立索引的目的是( D )。
A.降低MySQL数据检索的速度
B.与MySQL数据检索的速度无关
C.加快数据库的打开速度
D.提高MySQL数据检索的速度
8.创建索引的命令是( D )。
A.create trigger
B.create procedure
C.create function
D.create index
9.索引只能创建在CHAR、VARCHAR或者TEXT类型的字段上,称之为( C )。
A.主索引
B.唯一性索引
C.全文索引
D.哈希索引
10.下面关于唯一性索引描述不正确的是( A )。
A.某列创建了唯一索引则这一列为主键
B.不允许插入重复的列值
C.某列创建为主键,则该列会自动创建唯一索引
D.一个表中可以有多个唯一索引
11.某数据表已经将列F定义为主关键字,则以下说法中错误的是( A )。
A.列F的数据是有序排列的
B.列F的数据在整个数据表中是唯一存在的
C.不能再给数据表其它列建立主键
D.当为其它列建立普通索引时,将导致此数据表的记录重新排列
12.以下关于数据库完整性描述不正确的是( D )。
A.数据应随时可以被更新
B.表中的主键的值不能为空
C.数据的取值应在有效范围内
D.一个表的值若引用其它表的值,应使用外键进行关联
13.下面关于默认值的描述,正确的是( D )。
A.表中添加新列时,如果没有指明值,可以使用默认值
B.可以绑定到表列,也可以绑定到数据类型
C.可以响应特定时间的操作
D.以上描述都正确
14.下列SQL语句中,能够实现实体完整性控制的语句是( B )。
A.FOREIGN KEY
B.PRIMARY KEY
C.REFERENCES
D.FOREIGN KEY和REFERENCES
15.关于FOREIGN KEY约束的描述不正确的是( B )。
A.体现数据库中表之间的关系
B.实现参照完整性
C.以其他表PRIMARY KEY约束和UNIQUE约束为前提
D.每个表中都必须定义
二、填空题
1.完整性约束包括 实体 完整性、 域 完整性、参照完整性和用户定义完整性。
2.索引的类型主要有 FULLTEXT , HASH , BTREE 和 RTREE 。 - 域 完整性是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。
- 实体 完整性用于保证数据库中数据表的每一个特定实体的记录都是唯一的。
5.创建和修改表的命令分别是 create table和 alter table。
6.限制输入到列的值的范围,应使用 检查 约束。
7.建立和使用 约束 的目的是为了保证数据的完整性。
8.当在一个表中已存在有PRIMARY KEY约束时,不能再创建 聚集 索引,用CREATE INDEX ID_Index ON Students(身份证)建立的索引为 唯一性 索引。
9.创建唯一性索引时,应保证创建索引的列不包括重复的数据,并且没有两个或两个以上的空值。如果有这种数据,必须先将其 删除 ,否则索引不能创建成功。
10.两个表的主关键字和外关键字的数据对应一致,这是属于 引用 完整性,通常可以通过 外键 和 CHECK 约束 来实现。
三、简答题 - 如果表的某一列被指定具有NOT NULL属性,则表示什么?
MySQL 非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。 - 什么是数据完整性?完整性有哪些类型?
数据完整性是指数据的准确性和一致性,它是为防止数据库中存在不符合语义规定的数
据和因错误信息的输入/输出导致无效操作而提出的。
在MySQL数据库中,可以通过实体完整性、域完整性、参照完整性和用户自定义完整性
保证数据的完整性 - 简述索引与表的约束之间的关系。
在MySQL数据库中,可以通过实体完整性、域完整性、参照完整性和用户自定义完整性保证数据的完整性。而实现数据完整性的途径主要就是约束。数据库中的约束包括主键约束、外键约束、唯一约束、检查约束、空值约束和默认值约束等。
对于唯一约束来说,创建唯一约束的同时会自动创建其对应的索引 而删除其索引则同时删除其约束;
对于外键约束来说,创建外键约束的同时则不会同时创建其对应的索引 而要删除他则可以通过删除其约束名称进行删除;
四、实训题
- 数据类型
使用MySQL语句创建一个班级表CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均为字符型;长度分别为8、2、20且均不允许为空。
解答
create table class( CLASSNO varchar(8) not null, DEPARTNO varchar(2) not null, CLASSNAME varchar(20) not null);
2.现有关系数据库如下:
数据库名:学生成绩数据库
学生表(学号,姓名,性别,民族)
课程表(课程号,课程名称,任课教师)
成绩表(学号,课程号,分数)
用SQL语言实现下列功能:
①创建数据库[学生成绩数据库];
②创建[课程表];
课程表(课号 char(6),名称)
要求使用:主键(课号)、非空(名称)
③创建[学生表];
学生表(学号 char(6),姓名,性别,民族)
要求使用:主键(学号)、默认(民族)、非空(民族,姓名),检查(性别)
④创建[成绩表];
成绩表(学号,课程号,分数)
要求使用:外键(成绩表.学号,成绩表.课程号)、检查(分数)
⑤将下列课程信息添加到课程表中
课号 课程名称
100001 大学语文
100002 大学英语
解答
1.CREATE DATABASE学生成绩数据库;
2.CREATE TABLE 课程表( 课号CHAR(6) NOT NULL,
名称 VARCHAR(20) NOT NULL,
PRIMARY 课号);
3.CREATE TABLE 学生表( 学号CHAR(6) PRIMARY KEY,
姓名 VARCHAR(20) NOT NULL,
性别 CHAR(2) NOT NULL CHECK,
民族 CHAR(2) NOT NULL );
4.CREATE TABLE 成绩表( FOREIGN KEY(学号) REFERENCES 成绩表 (学号),
FOREIGN KEY(课程号) REFERENCES 成绩表 (课程号),
分数 CHAR(3) NOT NULL CHECK);
5.INSERT INTO 课程表(课号,名称) VALUES(‘100001’,‘大学语文’);
INSERT INTO 课程表(课号,名称) VALUES(‘100002’,‘大学英语’);