《MySQL数据库原理、设计与应用》课后习题及答案 黑马程序员编著
答案有文档形式,但是csdn必须要下载,,需要的人就去那里下载吧。《MySQL数据库原理、设计与应用》课后习题及答案黑马程序员编著
第1章
一、 填空题
2.数据库发展的3个阶段中,数据独立性最高的是_数据库系统_阶段。
3.概念模型中的3种基本联系分别是一对一_、一对多和多对多。
4.MySQL配置文件的文件名是_my.ini 或 my.cnf_。
5.在MySQL配置文件中,_datadir_用于指定数据库文件的保存目录。
二、 判断题
三、 选择题
A. 数据库系统 B. 数据库 C. 数据 D. 数据库管理系统
2.数据的独立性包括( A、B )。
A. 物理独立性 B. 逻辑独立性 C. 用户独立性 D. 程序独立性
A. CREATE语句 B. ALTER语句 C. DROP语句 D. SELECT语句
A. admin B. test C.root D. user
四、 简答题
答:数据模型是数据库系统的核心和基础,它是对现实世界数据特征的抽象,用来描述数据,可以理解成一种数据结构。在数据库的发展过程中,出现了3种基本数据模型,分别是层次模型(Hierarchical Model)、网状模型(Network Model)和关系模型(Relational Model)。
答:一个数据库服务器可以管理多个数据库,通常情况下开发人员会针对每个应用创建一个数据库,为保存应用中实体的数据,会在数据库中创建多个表(用于存储和描述数据的逻辑结构),每个表都记录着实体的相关信息。
第2章
一、 填空题
1.添加___IF NOT EXISTS___可在创建的数据库已存在时防止程序报错。
2.MySQL提供的___SHOW CREATE DATABASE 数据库名称;___可查看指定数据库的创建信息。
3.___#和–___可在MySQL中添加注释内容,且在服务器运行时会被忽略。
4.语句__RENAME TABLE__可同时修改多个数据表名。
5.查询数据时,通配符___*__可表示数据表中的所有字段。
二、 判断题
2.仅修改数据表中的字段名称时,通常使用ALTER TABLE…MODIFY实现。( 错)
3.修改数据时若未带WHERE条件,则表中对应字段都会被改为统一的值。( 对 )
4.数据库目录中的db.opt用于保存该数据库下的所有数据表信息。( 错 )
三、 选择题
A.SHOW TABLES B.DESC 数据表名
C.SHOW TABLE STATUS D.SHOW CREATE TABLE 数据表名
2.若数据库中存在以下数据表,语句“SHOW TABLES LIKE ‘sh_’”的结果为( C )。
A.fish B.mydb C.she D. unshift
A.DELETE B. DROP C.ALTER TABLE D. 以上答案全部正确
5.语句ALTER TABLE…MODIFY添加( B)可将字段调整为数据表的第1个字段。
A.FIRST 字段名 B. FIRST C.AFTER 字段名 D. AFTER
四、 实训题
1.按下列表结构,利用SQL语句在mydb数据库中创建topic表。
字段名 | 数据类型 | 备注 |
---|---|---|
id | INT | 专题编号 |
title | VARCHAR(255) | 专题名称 |
intro | VARCHAR(255) | 专题介绍 |
start_time | INT | 专题开始时间 |
end_time | INT | 专题结束时间 |
创建数据表的SQL语句
CREATE TABLE topic(
id INT COMMENT '专题编号',
title VARCHAR(255) COMMENT '专题名称',
intro VARCHAR(255) COMMENT '专题介绍',
start_time INT(11) COMMENT '专题开始时间',
end_time INT(11) COMMENT '专题结束时间'
)DEFAULT CHARSET=utf8;
2.为mydb.goods表新增total(库存量)和add_time(发布时间)字段。
ALTER TABLE goods ADD (total INT,addtime INT);
第3章
一、 填空题
1.MySQL数据类型中存储整数数值并且占用字节数最小的是___TINYINT___。
2.数据表中字段的唯一性约束是通过__UNIQUE____关键字定义的。
3.设置数据表的字段值自动增加使用__AUTO_INCREMENT____属性。
4.在创建表时不允许某列为空,则可以使用__NOT NULL或PRIMARY KEY__约束。
二、 判断题
5.ENUM类型的数据只能从枚举列表中取,并且只能取一个。(对 )
三、 选择题
A. FLOAT B. DOUBLE C. MEDIUMINT D. VARCHAR
2.下列选项中,适合存储文章内容或评论的数据类型是( C)。
A. CHAR B. VARCHAR C.TEXT D. VARBINARY
A. DECIMAL(6, 2) B. DATE C. YEAR D. TIMESTAMP
4.下面关于DECIMAL(6, 2)的说法中,正确的是(B )。
5.下列关于主键的说法中,正确的是(D )。
A. 主键允许为NULL值
C. 主键必须来自于另一个表中的值
四、 简答题
1. 请简述ENUM和SET数据类型的区别。
答:
(1)ENUM只能选一个值保存,SET可以选多个值保存。
(2)SET可以什么值都不选,ENUM必须选择一个值。
(3)ENUM的列表最多可以有65535个值,SET类型的列表最多可以有64个值。
2. 请简述CHAR、VARCHAR和TEXT数据类型的区别。
(1)CHAR是定长存储方式,适合保存长度固定的字符穿。
(2)VARCHAR是变长存储方式,适合保存长度不定的字符串。
(3)TEXT不能设置长度,速度比CHAR和VARCHAR慢,适合保存不经常查询的文本。
(4)TEXT类型不能设置默认值。
五、 实训题
1. 请设计一张学生表,选择合理的数据类型保存学号、姓名、性别、出生日期、入学日期、家庭住址信息。
CREATE TABLE mydb.student (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
name VARCHAR(20) NOT NULL COMMENT '姓名',
gender ENUM('男', '女') NOT NULL COMMENT '性别',
birth_date DATE NOT NULL COMMENT '出生日期',
start_date DATE NOT NULL COMMENT '入学日期',
address VARCHAR(255) NOT NULL DEFAULT '' COMMENT '家庭住址'
) DEFAULT CHARSET=utf8;
2. 请设计一张留言表,用于保存网站留言板中游客发表的留言。
CREATE TABLE mydb.commet (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '留言id',
name VARCHAR(20) NOT NULL COMMENT '姓名',
CONTENT TEXT NOT NULL COMMENT '留言内容',
ip VARCHAR(15) NOT NULL DEFAULT '' COMMENT 'IP地址',
add_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '发表时间'
) DEFAULT CHARSET=utf8;
第4章
一、 填空题
-
在E-R图中的联系可以与___一个或多个___个实体有关。
二、 判断题
三、 选择题
A. 实体、属性、关键字 B. 属性、实体、联系
C. 属性、数据类型、实体 D. 约束、属性、实体
C. 逻辑数据库设计 D. 物理数据库设计
A. 数据库实施 B. 概念数据库设计
C. 逻辑数据库设计 D. 物理数据库设计
- 数据冗余可能会引起的问题有( B、C、D)。
A. 读取异常 B. 更新异常 C. 插入异常 D. 删除异常
- 下列关于数据库范式说法正确的是(B、C )。
C. 3NF要求非主键字段不能相互依赖
四、 简答题
1. 请简述数据库设计规范化的必要性。
答:数据库设计对数据的存储性能、数据的操作都有很大的关系。为了避免不规范的数据库出现数据冗余,造成插入、删除、更新操作异常等情况,就要进行数据库设计规范化。
2. 请分析数据库范式1NF、2NF、3NF的区别。
答:
(1)1NF:数据库表的每一列都是不可分割的基本数据项。
(2)2NF:在满足1NF基础上,遵从唯一性,非主键字段需完全依赖主键
(3)3NF:在满足2NF基础上,非主键字段不能相互依赖。
五、 实训题
CREATE TABLE sh_user_level (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '等级id',
name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '等级名称',
config VARCHAR(255) NOT NULL DEFAULT '' COMMENT '满足条件'
) DEFAULT CHARSET=utf8;
# 订阅
CREATE TABLE sh_user_subscribe (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '订阅id',
email VARCHAR(60) COMMENT '邮箱地址',
status INT COMMENT '是否确认,0未确认,1已确认',
code VARCHAR(10) COMMENT '邮箱确认的验证码',
add_time INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '开始订阅时间'
) DEFAULT CHARSET=utf8;
# 收藏
CREATE TABLE sh_user_favorite (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '收藏id',
user_id INT UNSIGNED NOT NULL COMMENT '用户id',
goods_id INT UNSIGNED NOT NULL COMMENT '商品id',
add_time INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '收藏时间'
) DEFAULT CHARSET=utf8;
第5章
一、 填空题
二、 判断题
三、 选择题
A.INSERT INTO 表 VALUE(值列表);
B.INSERT 表 SET 字段1=值1[,字段2=值2]…;
C.INSERT INTO 表1(字段列表) SELECT (字段列表) FROM 表2;
D.INSERT INTO 表1(字段列表) VALUES SELECT (字段列表) FROM 表2;
A.WHERE id=3 || price=1999 B.WHERE id=3 && price=1999
C.WHERE (id,price)<>(3,1999) D.以上选项都不正确
A.RAND() B.POW() C.CEIL() D.IN()
A.-(负号) B.-(减运算符)
A.SELECT语句中ORDER BY不能与回溯统计同时使用。
B.利用ANY_VALUE()可使分组统计后默认只保留每组中的第一条记录。
四、 简答题
1. 请简述DELETE与TRUNCATE的区别。
答:
①实现方式不同:TRUNCATE本质上先执行删除(DROP)数据表的操作,然后再根据有效的表结构文件(.frm)重新创建数据表的方式来实现数据清空操作。而DELETE语句则是逐条的删除数据表中保存的记录。
②执行效率不同:在针对大型数据表(如千万级的数据记录)时,TRUNCATE清空数据的实现方式,决定了它比DELETE语句删除数据的方式执行效率更高。
③对AUTO_INCREMENT的字段影响不同,TRUNCATE清空数据后,再次向表中添加数据,自动增长字段会从默认的初始值重新开始,而使用DELETE语句删除表中的记录时,则不影响自动增长值。
④删除数据的范围不同:TRUNCATE语句只能用于清空表中的所有记录,而DELETE语句可通过WHERE指定删除满足条件的部分记录。
⑤返回值含义不同:TRUNCATE操作的返回值一般是无意义的,而DELETE语句则会返回符合条件被删除的记录数。
⑥所属SQL语言的不同组成部分:DELETE语句属于DML数据操作语句,而TRUNCATE通常被认为是DDL数据定义语句。
2. 请简述WHERE与HAVING之间的区别。
答:
①WHERE操作是从数据表中获取数据,用于将数据从磁盘存储到内存中,而HAVING是对已存放到内存中的数据进行操作。
②HAVING位于GROUP BY子句后,而WHERE位于GROUP BY 子句之前。
③HAVING关键字后可以跟聚合函数,而WHERE则不可以。通常情况下,HAVING关键字与GROUP BY一起使用,对分组后的结果进行过滤。
五、 实训题
1. 依据sh_goods的结构与数据,在mydb数据库中创建一张tm_goods表,并将价格在20到50之间的商品价格减5元,库存量再新增300件。
# 第1步:依据sh_goods创建相同的表结构
mysql> CREATE TABLE mydb.mt_goods LIKE shop.sh_goods;
Query OK, 0 rows affected (0.07 sec)
# 第2步:依据sh_goods表中的数据,为tm_goods添加数据
mysql> INSERT INTO mydb.mt_goods SELECT * FROM shop.sh_goods;
Query OK, 10 rows affected (0.01 sec)
Records: 10 Duplicates: 0 Warnings: 0
# 第3步:将价格在20到50之间的商品价格减5元,库存量再新增300件
mysql> UPDATE mydb.tm_goods SET price=price-5, stock=stock+300
-> WHERE price BETWEEN 20 AND 50;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
2. 在sh_goods表中查询评分小于4的商品的不同分类id。
mysql> SELECT DISTINCT category_id FROM sh_goods
-> WHERE score < 4;
+-------------+
| category_id |
+-------------+
| 3 |
| 12 |
| 9 |
+-------------+
3 rows in set (0.00 sec)
第6章
一、 填空题
二、 判断题
三、 选择题
- 下列不属于WHERE子查询的是(D )。
A.标量子查询 B.列子查询 C.行子查询 D.表子查询
A.ON UPDATE RESTRICT B.ON UPDATE CASCADE
C.ON UPDATE SET NULL D.以上答案都不正确
- 下列选项中数据FROM子查询的是( B )。
A.EXISTS子查询 B.表子查询 C.行子查询 D.以上答案都不正确
B.默认情况下,主表记录修改的同时修改从表的记录
C.从表外键字段插入的值必须选取主表中相关联字段已经存在的数据
四、 实训题
1. 结合本章出现的所有数据表,获取含有基本信息属性的商品id和name。
mysql> SELECT DISTINCT g.id,g.name FROM sh_goods g
-> LEFT JOIN sh_goods_attr_value ga ON g.id= ga.goods_id
-> LEFT JOIN sh_goods_attr a ON ga.attr_id= a.id
-> WHERE ga.attr_id IN(SELECT id FROM sh_goods_attr
-> WHERE parent_id = (SELECT id FROM sh_goods_attr WHERE name="基本信息"));
+----+---------+
| id | name |
+----+---------+
| 5 | 智能手机 |
+----+---------+
1 row in set (0.00 sec)
2. 结合本章出现的所有数据表,查询属性不小于两个的商品信息(编号和名称)。
mysql> SELECT id, name FROM sh_goods WHERE id IN
-> (SELECT goods_id FROM sh_goods_attr_value GROUP BY goods_id
-> HAVING COUNT(id) >= 2);
+----+----------+
| id | name |
+----+----------+
| 5 | 智能手机 |
+----+----------+
1 row in set (0.00 sec)
第7章
一、 填空题
二、 判断题
-
GRANT创建用户时使用IF NOT EXISTS可避免用户存在而出错。( 错 )
三、 选择题
- 下列选项中可以重置用户密码的是( A )。
A.ALTER USER B.RENAME USER C.CREATE USER D. DROP UESR
- 以下不属于ALL PRIVILEGES的权限是( A )。
A.PROXY B.SELECT C.CREATE USER D. DROP
A.tables_priv B.columns_priv C.db D. user
A.‘’@‘’ B.‘ab c’@‘%’ C.mark–manager@% D. test@localhost
- 下列关于用户与权限的说法错误的是( D )。
C.REVOKE ALL回收的权限不包括GRANT OPTION
D.以上说法都不正确
四、 实训题
1. 请为用户名“xiaoming”密码“123abc”的用户授予查看shop数据库的权限。
# 第1步:创建用户
CREATE USER 'xiaoming'@'%' IDENTIFIED BY '123abc';
# 第2步:为用户授权
GRANT SELECT ON shop.* TO 'xiaoming'@'%';
2. 请创建“manager”用户并授予创建用户和删除用户的管理权限。
# 第1步:创建用户
CREATE USER 'manager'@'%' IDENTIFIED BY 'root';
# 第2步:为用户授权
GRANT CREATE USER ON *.* TO 'manager'@'%';
第8章
一、 填空题
二、 判断题
-
删除视图时,也会删除所对应基本表中的数据。(错 )
-
DROP语句一次只能删除一个视图。(错)
三、 选择题
- 创建视图应当所具备的权限包括(A )。
A. CREATE VIEW B. USE VIEW
C. SHOW VIEW D. CREATE TABLE
- 下列选项中,用于查看视图的字段信息的语句是( A)。
A. DESCRIBE B. CREATE C. SHOW D. SELECT
- 下列选项中,可以对视图中数据的操作包括( BCD)。
A. 定义视图 B. 修改数据 C. 查看数据 D. 删除数据
- 下列关于视图优点的描述中,正确的是(ABCD )。
C. 简化查询语句
- 下列关于视图创建的说法中,正确的是(D )。
A. 可以建立在单表上
B. 可以建立在两张表基础上
C. 可以建立在两张或以上的表基础上
D. 以上都有可能
四、 简答题
1. 请简述视图和基本表的区别。
答:视图是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表。通过视图不仅可以看到存放在基本表中的数据,还可以像操作基本表一样,对数据进行查询、添加、修改和删除。
2. 请简述修改视图的两种方式,并写出其基本语法。
# ① 替换已有的视图
CREATE OR REPLACE VIEW 视图名 AS SELECT语句;
# ② 修改视图
ALTER VIEW 视图名 AS SELECT语句;
五、 实训题
1. 在shop数据库中创建view_goods视图,以spu为单位统计商品库存量。
CREATE OR REPLACE view_goods AS
SELECT spu_id, COUNT(stock) FROM sh_goods GROUP BY spu_id;
2. 在mydb数据库中创建student数据表,表中有id、name(学生姓名)、math(数学成绩)、chinese(语文成绩)和english(英语成绩) 字段。然后创建视图view_score,视图中包含math、chinese、english和total(总分数)字段。
USE mydb;
CREATE TABLE student (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '学生id',
name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '学生姓名',
math DECIMAL(4, 1) NOT NULL DEFAULT 0 COMMENT '数学成绩',
chinese DECIMAL(4, 1) NOT NULL DEFAULT 0 COMMENT '语文成绩',
english DECIMAL(4, 1) NOT NULL DEFAULT 0 COMMENT '英语成绩'
) DEFAULT CHARSET=utf8;
CREATE VIEW view_score AS
SELECT math, chinese, english, math+chinese+english total FROM student;
第9章
一、 填空题
二、 判断题
-
只有多条SQL语句才能组成事务。( 错)
三、 选择题
- MySQL默认隔离级别为( C)。
A. READ UNCOMMITTED B. READ COMMITTED
C. REPEATABLE READ D. SERIALIZABLE
- 下列事务隔离级别中,可以避免脏读的有( BCD)。
A. READ UNCOMMITTED B. READ COMMITTED
C. REPEATABLE READ D. SERIALIZABLE
A.START TRANSACTION B. CREATE TABLE
C. ALTER TABLE D. SELECT
- 下列关于MYSQL中事务的说法,错误的是( D)。
A. 事务就是针对数据库的一组操作
D. 提交事务的语句为SUBMIT
四、 简答题
1. 请简述什么是事务。
答:在MySQL中,事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成,且每个SQL语句是相互依赖的。只要在程序执行过程中有一条SQL语句执行失败或发生错误,则其他语句都不会执行。也就是说,事务的执行要么成功,要么就返回到事务开始前的状态,这就保证了同一事务操作的同步性和数据的完整性。
2. 请简述什么是事务的ACID特性。
答:
①原子性是指一个事务必须被视为一个不可分割的最小工作单元。
②一致性是指在事务处理时,无论执行成功还是失败,都要保证数据库系统处于一致的状态,保证数据库系统从不返回到一个未处理的事务中。
③隔离性是指当一个事务在执行时,不会受到其他事务的影响。
④持久性是指事务一旦提交,其对数据库的修改就是永久性的。
五、 实训题
START TRANSACTION;
# 查询id为1的商品的库存
SELECT stock FROM sh_goods WHERE id = 1;
# 根据结果回滚或提交
COMMIT;
2. 请利用事务在用户下订单前,检测当前用户是否已被激活,若未激活,则需激活此用户后,才能再次下订单。
START TRANSACTION;
# 查询id为1的用户是否激活
SELECT is_active FROM sh_user WHERE id = 1;
# 根据结果回滚或提交
COMMIT;
第10章
一、 填空题
二、 判断题
-
ITERATE语句可以在BEGIN…END中实现语句跳转。( 错 )
三、 选择题
- 以下不能在MySQL中实现循环操作的语句是(A )。
A.CASE B.LOOP C.REPEAT D.WHILE
A.INSERT B.UPDATE C.DELETE D.SELECT
A.* B._ C.: D.?
A.INSERT() B.FIND_IN_SET() C.INSTR() D.SUBSTRING()
A.NOW() B.SYSDATE()
C.CURRENT_TIMESTAMP() D.以上答案全正确
四、 简答题
1. 请简述存储过程和函数的区别。
答:
(1)语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTION。
(2)存储过程在创建时没有返回值,而函数在定义时必须设置返回值。
(3)存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。
(4)存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT语句中直接使用。
2. 请简述触发器的基本语法以及其作用。
答:
概念:触发器可以看作是一种特殊类型的存储过程,在预先定义好的事件(如INSERT、DELETE等操作)发生时,才会被MySQL自动调用。
作用:
① 触发器可以通过数据库中的相关表实现级联无痕更改操作。
② 保证数据安全,进行安全校验
五、 实训题
1. 请在shop数据库中创建一个存储过程,以订单编号为参数,输出该订单的商品信息。
mysql> DELIMITER $$
mysql> CREATE PROCEDURE shop.order_proc(IN order_id INT )
-> BEGIN
-> SELECT g.id,g.name FROM sh_goods g
-> LEFT JOIN sh_order_goods og ON g.id = og.goods_id
-> WHERE og.order_id = order_id;
-> END
-> $$
Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER ;
2. 请在shop.sh_order_goods表上创建一个触发器,当添加订单-商品信息时,修改sh_goods表中对应商品的库存量。
mysql> DELIMITER $$
mysql> CREATE TRIGGER shop.insert_tri BEFORE INSERT ON sh_order_goods FOR EACH ROW
-> BEGIN
-> DECLARE old_num INT DEFAULT 0;
-> SELECT stock INTO old_num FROM sh_goods WHERE id = new.goods_id;
-> IF old_num <= new.goods_num THEN
-> SET new.goods_num := old_num;
-> UPDATE sh_goods SET stock=0 WHERE id = new.goods_id;
-> ELSE
-> UPDATE sh_goods SET stock=old_num-new.goods_num WHERE id = new.goods_id;
-> END IF;
-> END;
-> $$
Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER ;
第11章
一、 填空题
二、 判断题
三、 选择题
- 下面关于索引的说法正确的是( C)。
B.数据更新频繁的字段适合创建索引
D.以上说法全部正确
A.InnoDB B.MyISAM C.MEMORY D.CSV
C.子分区算法可以是LIST、RANGE、HASH和KEY中的任意一种
D.以上说法都不正确
A.query_cache_limit B.query_cache_type
C.query_cache_size D.query_cache_min_res_unit
四、 简答题
1. 请说出MyISAM与InnoDB存储引擎至少5点区别。
答:
①InnoDB存储引擎支持外键,而MyISAM存储引擎不支持。
②InnoDB存储引擎支持行级锁和表级锁,而MyISAM存储引擎仅支持表级锁。
③InnoDB存储引擎支持事务,而MyISAM存储引擎不支持。
④InnoDB存储引擎支持多版本并发控制,而MyISAM存储引擎不支持
⑤InnoDB存储引擎的数据索引文件都保存一个表空间中(后缀为idb),而MyISAM存储引擎中的数据和索引文件分别存储到后缀为myd和myi的文件中。
⑥InnoDB存储引擎是索引组织表,而MyISAM存储引擎是堆表。
2. 请简述profile机制的意义以及使用场景。
答:
profile机制可用于分析SQL性能消耗的分布情况,当使用EXPLAIN无法积极查询缓慢的SQL语句时,可以使用profile机制对SQL进行更加细致的分析,获取SQL语句执行的更加详细的时间,找出SQL所花的时间大部分消耗在哪个部分,确认 SQL的性能瓶颈,从而指定相关的解决办法。
五、 实训题
1. 为shop. sh_order_goods数据表在order_id和goods_id字段上创建一个唯一性的复合索引。
mysql> ALTER TABLE shop.sh_order_goods
-> ADD UNIQUE INDEX order_goods(order_id,goods_id);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
2. 创建一个与shop.sh_user表相同结构的数据表mydb.p_user,使用HASH算法将数据分到5个区中存储。
mysql> CREATE TABLE mydb.p_user LIKE shop.sh_user;
Query OK, 0 rows affected (0.06 sec)mysql> ALTER TABLE mydb.p_user PARTITION BY HASH(id)PARTITIONS 5;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
第12章
一、 填空题
-
在CentOS7.5中启动MySQL服务的命令是____systemctl start mysqld.service___。
-
MySQL允许客户端最大同时连接数的配置是___max_connections___。
二、 判断题
三、 选择题
A.download B.get C.wget D. load
A.| B.< C.> D. –
A.PURGE BINARY LOGS
B.SHOW BINARY STATUS
C.SHOW MASTER STATUS
D. SHOW MASTER LOGS
A.binary_cache_size B.binlog_cache_size
C.max_binlog_size D. binlog_max_size
- 在遇到(ABC )情况下,二进制日志文件会递增。
A.MySQL服务重新启动
C.执行FLUSH LOG语句
D.执行FLUSH PRIVILEGES语句
四、 简答题
1. 请简述常规日志和二进制日志的区别。
答:
常规日志用于记录MySQL服务运行信息和SQL语句,二进制日志用于记录MySQL数据库的变化。二进制日志可以用于多服务器复制、数据恢复,常规日志则不能。
2. 请简述备份MySQL数据库有几种方案,优缺点是什么。
方案1:直接备份data目录。优点:操作简单。缺点:不支持热备,可移植性差。
方案2:使用mysqldump。优点:使用方便。缺点:备份速度慢,不灵活。
方案3:使用二进制日志。优点:备份更灵活,支持增量备份。缺点:对存储引擎等有要求。
五、 实训题
1. 请动手实现,利用二进制日志备份和恢复数据。
# 在my.cnf的[mysqld]中开启二进制日志
log-bin=binlog
server-id=1
# 使用二进制日志恢复数据
./mysqlbinlog /var/lib/mysql/binlog.000001 | mysql -uroot -p123456
2. 请动手实现,将sh_goods表中的数据导出成XML格式。
mysql -X -uroot -p123456 -e "USE shop; SELECT * FROM sh_goods;" > goods.xml
原文地址:https://blog.csdn.net/weixin_56280430/article/details/125617542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_24598.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!