《数据库原理与应用技术-MySQL》MySQL数据表管理(2)(举一反三考点练)-讲义

2025-10-10
| 11页
| 104人阅读
| 1人下载
精品

内容正文:

举一反三考点练 《数据库原理与应用技术-MySQL》MySQL数据表管理-讲义 1. 掌握修改数据表结构(ALTER TABLE) 2. 熟悉重命名与复制数据表 3. 掌握删除数据表(DROP TABLE) 知识点一 修改数据表结构(ALTER TABLE) 1.命令总览 (1)核心语句:ALTER TABLE 表名 操作子句; (2)常用操作子句:ADD / MODIFY / CHANGE / DROP / RENAME / ENGINE / CHARSET / COLLATE / AUTO_INCREMENT=N。 2.ADD——新增字段 (1)默认追加到末尾:ALTER TABLE student ADD test int(4); (2)指定位置:AFTER 列名 或 FIRST,如 ADD birthday DATE AFTER stusex; 3.MODIFY——改类型/位置/空值/默认值 (1)仅改定义不改名:ALTER TABLE student MODIFY stuname VARCHAR(30) NOT NULL; (2)可同时调整顺序:MODIFY stuname VARCHAR(30) AFTER stuid; 4.CHANGE——改名+改类型 必须写旧名、新名、新类型:ALTER TABLE student CHANGE stuname sname VARCHAR(40); 5.DROP——删除字段 直接移除:ALTER TABLE student DROP photo; 数据同时消失,谨慎操作。 6.RENAME——表重命名 (1)单表:ALTER TABLE student RENAME TO studentbak; (2)多表一次性迁移:RENAME TABLE student TO s1, score TO s2; 7.引擎/字符集/自增初值 (1)ALTER TABLE student ENGINE=MyISAM; (2)ALTER TABLE student CHARSET=utf8mb4 COLLATE=utf8mb4_bin; (3)ALTER TABLE student AUTO_INCREMENT=1001; 下条记录从 1001 开始。 8.综合示例 9.注意事项 (1)大表 MODIFY/CHANGE 会锁表,线上环境需用 pt-online-schema-change; (2)先备份再删除;新字段若 NOT NULL 必须提供 DEFAULT 值或与 ADD 同时指定。 (多项选择题)下列关于 ALTER TABLE 语句的说法正确的有( ) A. 可在同一条语句中连续使用多个 ADD 子句 B. MODIFY 既能改数据类型也能调整列顺序 C. CHANGE 必须同时给出旧列名和新列名 D. DROP 子句可以一次删除多列 【答案】ABC 【解析】MODIFY 不改列名但可调顺序;CHANGE 必须写两次列名;ADD 可多条;DROP 需多次写 DROP 才能删多列,一次只能一列。 【要点】ALTER 各子句语法特点。 1.(单项选择题)若只想把列 birth 的数据类型从 DATE 改为 DATETIME 而不改列名,应使用的子句是( ) A. CHANGE birth DATETIME B. MODIFY birth DATETIME C. ALTER birth DATETIME D. UPDATE birth SET TYPE=DATETIME 【答案】B 【解析】MODIFY 不改列名仅改定义;CHANGE 必须写新旧两个列名。 【要点】MODIFY vs CHANGE 区别。 2.(单项选择题)在 ALTER TABLE 语句中,把新列添加到表的最前面应使用的关键字是( ) A. AFTER B. FIRST C. BEFORE D. BEGIN 【答案】B 【解析】FIRST 表示列首;AFTER 需指定参考列。 【要点】列位置控制关键字。 3.(多项选择题)以下操作会导致整张表被锁定的有( ) A. 大表 MODIFY 修改数据类型 B. 添加新字段并指定 AFTER C. DROP 删除某列 D. RENAME 重命名表 【答案】AC 【解析】MODIFY 需重建表,锁表时间长;DROP 列也需重建;ADD、RENAME 仅元数据变更,时间短。 【要点】锁表风险识别。 1.(填空题)把表 tb_score 改名为 tb_grade,应执行语句 ______ 表名 tb_score TO tb_grade; 【答案】RENAME TABLE 【解析】RENAME TABLE old TO new 可瞬间完成重命名。 【要点】重命名语法。 2.(填空题)若要在 ALTER TABLE 语句中把自增主键的起始值改为 3000,应写的子句是 ______=3000; 【答案】AUTO_INCREMENT 【解析】ALTER TABLE … AUTO_INCREMENT=n 可重设自增起点。 【要点】自增起点设置。 3.(判断题)使用 MODIFY 子句时可以同时把列名一起改掉( ) 【答案】× 【解析】MODIFY 只能改类型、顺序、约束,不改列名;改名必须用 CHANGE。 【要点】MODIFY 与 CHANGE 功能边界。 · ADD 新列:ADD 列 类型 AFTER 列 · MODIFY:改类型/顺序/非空,不改名 · CHANGE:改名+改类型 · DROP:删列,DROP 列 · RENAME/ENGINE/CHARSET:RENAME TO 新表 或 ENGINE=InnoDB 等 · 大表操作先备份,线上用工具避免锁表 知识点二 重命名与复制数据表 1.RENAME TABLE(轻量级迁移) (1)语法:RENAME TABLE old TO new [, old2 TO new2] ...; (2)跨库重命名:RENAME TABLE db1.t1 TO db2.t1; 权限需对两库同时拥有。 (3)原子操作:会话级锁,瞬间完成,依赖文件系统移动。 2.CREATE TABLE ... LIKE(结构克隆) (1)仅复制定义、索引、默认值,不复制数据: CREATE TABLE studentnew LIKE student; (2)再插数据:INSERT INTO student VALUES(); 3.CREATE TABLE ... SELECT(结构+数据一次性) (1)CREATE TABLE studentcopy AS SELECT * FROM student; (2)可带 WHERE 条件、列运算、JOIN,但会丢失索引、外键、默认值,需要后续手动补充。 4.Navicat 图形化复制 (1)右键表 →“复制表”→ 选“仅结构”或“结构+数据”→ 输入新名称 → 完成; (2)自动补索引、主键、自增属性,省去手写 DDL。 5.典型场景 (1)快速建测试环境:LIKE 空结构,再导入少量数据; (2)灰度升级:RENAME 切换新旧表,实现零停机发布; (3)备份快照:CREATE TABLE...SELECT 当日数据,供回滚。 6.风险提醒 (1)LIKE 不会复制外键定义,需手动 ALTER 添加; (2)大表 SELECT 复制会产生大量 redo/undo,建议分批或夜间执行。 (多项选择题)关于 `RENAME TABLE` 语句,下列说法正确的有( ) A. 可以一次性重命名多张表 B. 支持跨数据库重命名 C. 执行期间会锁定表 D. 可以回滚操作 【答案】ABC 【解析】`RENAME TABLE` 是原子操作,可一次改多个表名,也支持跨库迁移,但不可回滚。 【要点】`RENAME TABLE` 的特性与限制。 1.(单项选择题)若只复制表结构及其索引,不复制数据,应使用的命令是( ) A. `CREATE TABLE t2 SELECT * FROM t1` B. `CREATE TABLE t2 LIKE t1` C. `RENAME TABLE t1 TO t2` D. `ALTER TABLE t1 ENGINE=InnoDB` 【答案】B 【解析】`LIKE` 仅复制定义、索引、默认值,不复制数据。 【要点】结构克隆语句。 2.(单项选择题)使用 `CREATE TABLE...AS SELECT` 复制表时,下列哪一项不会被自动复制( ) A. 数据行 B. 列运算结果 C. 索引 D. WHERE 条件过滤后的结果 【答案】C 【解析】`AS SELECT` 只生成新表并插入结果集,不会复制原表索引、外键等对象。 【要点】带数据复制的局限性。 3.(多项选择题)在 Navicat 中复制表时,可选的复制方式有( ) A. 仅结构 B. 结构+数据 C. 仅数据 D. 仅外键 【答案】AB 【解析】Navicat 提供“仅结构”与“结构+数据”两种快捷选项,不支持单独复制外键。 【要点】图形化复制表的可选项。 1.(填空题)若要将当前库中的表 `old` 立即改名为 `new`,应输入语句 ______。 【答案】`RENAME TABLE old TO new;` 【解析】`RENAME TABLE` 可瞬间完成重命名,属于 DDL 原子操作。 【要点】重命名基本语法。 2.(填空题)使用 `CREATE TABLE t_copy ______ t_original` 可复制原表结构及索引,但不复制数据。 【答案】`LIKE` 【解析】`LIKE` 子句仅复制定义与索引,不复制数据行。 【要点】`LIKE` 与 `AS SELECT` 的区别。 3.(判断题)`RENAME TABLE` 可以在一条语句中同时把表从一个数据库移到另一个数据库。( ) 【答案】√ 【解析】语法允许 `RENAME TABLE db1.t TO db2.t;`,只要对两库均有权限即可。 【要点】跨库重命名写法。 · RENAME TABLE old TO new 瞬间完成,可跨库 · CREATE TABLE t2 LIKE t1 仅复制结构索引 · CREATE TABLE t2 AS SELECT * FROM t1 带数据,无索引 · Navicat:右键→复制表→选“结构”或“结构+数据” · 注意外键、索引需补全,大表复制错峰执行 知识点三 删除数据表(DROP TABLE) 1.语法与选项 (1)DROP [TEMPORARY] TABLE [IF EXISTS] 表1 [,表2] ...; (2)IF EXISTS 避免“Unknown table”错误;TEMPORARY 只删当前会话临时表。 2.级联限制 (1)存在外键约束时,需先 SET FOREIGN_KEY_CHECKS=0; 或先删子表; (2)与视图、存储过程、触发器无自动级联,需手动清理依赖。 3.数据与文件回收 (1)InnoDB 开启 innodb_file_per_table=1 时,.ibd 文件同步删除,磁盘立即释放; (2)MyISAM 删除 .MYD、.MYI、.frm 文件; (3)未开启单表空间则仅标记空间空闲,需后续 OPTIMIZE 或重建库才能归还 OS。 4.权限要求 需要对该表的 DROP 权限,以及库级的 REFERENCES 权限(外键场景)。 5.Navicat 图形删除 (1)右键表 →“删除表”→ 弹出确认框 → 确定; (2)支持多选批量删除,自动禁用外键检查,操作完成有日志提示。 6.安全建议 (1)线上环境先 RENAME TABLE 改名观察 24h,确认无访问再 DROP; (2)定期全备 + 延迟从库,防止误删; (3)开启 sql_safe_updates & 回收 SUPER 权限,避免命令行手抖。 7.恢复方案 (1)利用全备+binlog 点位恢复; (2)延迟从库快速闪回; (3)第三方工具(如 binlog2sql)生成反向 SQL 补回数据。 (多项选择题)以下关于 DROP TABLE 语句的描述,正确的有( ) A. 会同时删除表结构与数据 B. 会级联删除相关联的视图 C. 执行后可通过 ROLLBACK 回滚 D. 带 IF EXISTS 可避免表不存在时报错 【答案】AD 【解析】DROP TABLE 立即物理删除表文件,不可回滚;视图、触发器不会自动级联删除;IF EXISTS 可抑制错误。 【要点】DROP 的不可回滚性与级联限制。 1.(单项选择题)在 Navicat 中删除数据表时,系统会( ) A. 直接删除,不提示 B. 弹出确认框,确认后删除 C. 自动生成备份再删除 D. 需要输入管理员密码 【答案】B 【解析】Navicat 默认弹出“确认删除”对话框,防止误操作。 【要点】图形化安全确认机制。 2.(单项选择题)若表存在外键约束,直接执行 DROP TABLE 将( ) A. 自动先删除子表 B. 报错并终止 C. 强制删除并删除子表数据 D. 自动设置外键检查为 0 后删除 【答案】B 【解析】存在外键依赖时,MySQL 拒绝删除,需先解除依赖或 SET FOREIGN_KEY_CHECKS=0。 【要点】外键保护机制。 3.(多项选择题)以下属于安全删除线上表的可行措施有( ) A. 先 RENAME 观察 24 小时 B. 全库备份后再 DROP C. 直接加 IF EXISTS 删除 D. 利用延迟从库快速闪回 【答案】ABD 【解析】IF EXISTS 仅抑制报错,不具备安全观察作用;其余均为推荐防护手段。 【要点】线上安全第一,备份+观察+闪回。 1.(填空题)在 MySQL 中,若要在删除表时避免“Unknown table”错误,应在 DROP TABLE 后加关键字__________。 【答案】IF EXISTS 【解析】IF EXISTS 可在表不存在时静默跳过,不中断脚本。 【要点】脚本健壮性保障。 2.(填空题)开启 innodb_file_per_table=1 后,当执行 DROP TABLE 时,对应的__________文件会被操作系统立即回收。 【答案】.ibd 【解析】单表空间模式下,每张 InnoDB 表独立 .ibd 文件,删除即释放。 【要点】文件级磁盘回收。 3.(判断题)使用 DROP TABLE 删除临时表时,必须加上 TEMPORARY 关键字,否则会报错( ) 【答案】× 【解析】TEMPORARY 可省略;不带关键字也能删除临时表,但加关键字更安全,避免误删永久表。 【要点】TEMPORARY 为可选修饰。 · 语法:DROP TABLE [IF EXISTS] 表1,表2; · 会同时删文件与数据,不可回滚 · 有外键先删子表或 SET FOREIGN_KEY_CHECKS=0 · Navicat:右键→删除表→确认 · 线上先 RENAME 观察,再 DROP;定期备份+延迟从库防误删 原创精品资源学科网独家享有版权,侵权必究!2 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

《数据库原理与应用技术-MySQL》MySQL数据表管理(2)(举一反三考点练)-讲义
1
《数据库原理与应用技术-MySQL》MySQL数据表管理(2)(举一反三考点练)-讲义
2
《数据库原理与应用技术-MySQL》MySQL数据表管理(2)(举一反三考点练)-讲义
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。