内容正文:
举一反三考点练
《数据库原理与应用技术-MySQL》数据表操作-讲义
4.掌握查看表结构的命令:SHOW COLUMNS、DESCRIBE;
5.掌握修改表结构的命令:ALTER TABLE;
6.掌握重命名表的命令:RENAME TABLE;
7.掌握复制表的命令:CREATE TABLE …LIKE;
8.掌握删除表的命令:DROP TABLE;
知识点一 查看、修改表结构
1.查看表结构
用于查询表的字段定义、数据类型、约束条件等信息,常用命令有DESCRIBE(简写DESC)和SHOW COLUMNS,两者功能完全等价。
(1)DESCRIBE|或DESC
基本语法:
DESCRIBE 表名; -- 或 DESC 表名;
作用:返回表的字段信息,包括 6 列:
Field:字段名;
Type:数据类型;
Null:是否允许为NULL;
Key:是否为键;
Default:默认值;
Extra:额外信息。
(2)SHOW COLUMNS
基本语法:
SHOW COLUMNS FROM 表名; -- 或 SHOW COLUMNS IN 表名;
作用:与DESCRIBE完全一致,返回表的字段详细信息。
2. 修改表结构
用于对已存在的表进行结构调整,如添加 / 删除字段、修改字段类型、调整约束等,核心语法为:
ALTER TABLE 表名 操作类型 [参数];
常用操作类型及语法如下:
操作类型
语法示例
说明
添加列(ADD)
ALTER TABLE 表名 ADD 列名 数据类型 [约束];
在表末尾添加新列;若需指定位置,加FIRST(首列)或AFTER 已有列名(某列后)。
修改列类型(MODIFY)
ALTER TABLE 表名 MODIFY 列名 新数据类型 [新约束];
仅修改字段的数据类型或约束(列名不变)。
修改列名 + 类型(CHANGE)
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新约束];
同时修改列名和数据类型(旧列名必须存在)。
删除列(DROP)
ALTER TABLE 表名 DROP 列名;
删除指定列(列中数据将丢失,需谨慎)。
添加主键(ADD PRIMARY KEY)
ALTER TABLE 表名 ADD PRIMARY KEY (列名);
为表添加主键(需确保列值非空且唯一)。
删除主键(DROP PRIMARY KEY)
ALTER TABLE 表名 DROP PRIMARY KEY;
删除表的主键(若主键是自增列,需先取消自增)。
添加外键(ADD FOREIGN KEY)
ALTER TABLE 子表名 ADD FOREIGN KEY (子表列) REFERENCES 主表名(主表列);
为子表添加外键(关联主表主键,需确保类型一致)。
删除外键(DROP FOREIGN KEY)
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
删除外键(需指定外键约束名,可通过SHOW CREATE TABLE查看)。
修改表名(RENAME TO)
ALTER TABLE 旧表名 RENAME TO 新表名;
重命名表。
1.已知school数据库中有student表,写出两种查看该表结构的 SQL 命令。
【答案】
DESCRIBE school.student;(或DESC school.student;)
SHOW COLUMNS FROM student IN school;
1.(填空题)使用DESCRIBE命令查看course表结构的简写命令是______。
【答案】DESC course;
【解析】DESC是DESCRIBE的简写,语法更简洁,功能完全相同。
2.(判断题)ALTER TABLE student ADD age INT AFTER name;表示在student表的name列后添加age列(INT类型)。( )
【答案】√
【解析】ADD命令中,AFTER 已有列名用于指定新列的位置,此处表示age列添加在name列之后;若需添加在首列,可使用FIRST。
3.(单项选择题)下列命令中,用于删除teacher表中tel列的是( )
A. ALTER TABLE teacher REMOVE tel; B. ALTER TABLE teacher DELETE COLUMN tel;
C. ALTER TABLE teacher DELETE tel; D. ALTER TABLE teacher DROP tel;
【答案】D
4.(读程序填空题)以下语句用于将product表的price列(原类型INT)修改为DECIMAL(8,2)类型,请补全:
ALTER TABLE product ______ price ______;
【答案】MODIFY;DECIMAL(8,2)
【解析】MODIFY用于修改列的类型或约束(列名不变),语法为ALTER TABLE 表名 MODIFY 列名 新类型,此处将price从INT改为DECIMAL(8,2)。。
1.(单项选择题)执行SHOW COLUMNS FROM student;后,输出结果中Key列显示PRI表示该字段是( )
A. 外键 B. 主键 C. 唯一键 D. 索引键
【答案】B
【解析】Key列中,PRI表示主键(Primary Key),UNI表示唯一键(Unique),MUL表示非唯一索引。
2.(判断题)ALTER TABLE命令一次只能执行一种修改操作。( )
【答案】×
【解析】ALTER TABLE支持一次执行多个操作,用逗号分隔。
3.(填空题)将user表的uname,类型VARCHAR(10)改名为username且类型改为VARCHAR(20),应使用命令:ALTER TABLE user ______ uname username ______;
【答案】CHANGE;VARCHAR(20)
【解析】CHANGE用于同时修改列名和类型,语法为CHANGE 旧列名 新列名 新类型,此处将uname改为username,类型从VARCHAR(10)改为VARCHAR(20)。
4.(SQL 语句题)已知order表结构如下:
字段名
类型
约束
oid
INT
主键
pid
INT
非空
quantity
INT
默认值 1
请写出以下操作的 SQL 命令:
(1)为order表添加total_price列(DECIMAL(10,2)类型,非空),添加在quantity列之后;
(2)将pid列的类型修改为BIGINT;
(3)删除quantity列。
【答案】
(1)ALTER TABLE order ADD total_price DECIMAL(10,2) NOT NULL AFTER quantity;
(2)ALTER TABLE order MODIFY pid BIGINT;
(3)ALTER TABLE order DROP quantity;
【解析】
(1)使用ADD添加列,AFTER quantity指定位置,NOT NULL为约束;
(2)MODIFY修改列类型(列名不变);
(3)DROP删除列,order是关键字,需用反引号包裹。
1.查看表结构:(1)DESCRIBE|或DESC
2. 修改表结构:ALTER TABLE 表名 操作类型 [参数];
知识点二 表的重命名、复制与删除
1. 重命名表(RENAME TABLE)
用于修改已有表的名称,语法简洁且支持批量操作。
基本语法:
RENAME TABLE 旧表名1 TO 新表名1 [, 旧表名2 TO 新表名2, ...];
注意:
可同时重命名多个表,用逗号分隔。
旧表必须存在,新表名必须不存在。
若表不在当前数据库,需指定数据库名。
2. 复制表结构(CREATE TABLE ... LIKE)
基本语法:
CREATE TABLE 新表名 LIKE 源表名;
注意:
复制:源表的字段定义、数据类型、主键、唯一键、外键、存储引擎、字符集等结构信息。
不复制:表中的数据、自增列的当前值(新表自增列从 1 开始)、触发器(需单独复制)。
新表名必须不存在,否则报错。
3. 删除表(DROP TABLE)
用于删除指定表及其所有数据(操作不可逆,需谨慎)。
基本语法:
DROP TABLE [IF EXISTS] 表名1 [, 表名2, ...];
说明:
IF EXISTS:可选参数,表不存在时不报错。
可同时删除多个表,用逗号分隔。
删除表会同时删除表的结构、数据、索引、约束等所有相关信息,且无法恢复)。
已知school数据库中有stu_old表,需完成以下操作:
(1)将stu_old表重命名为student;
(2)复制student表的结构到student_backup表,不复制数据;
(3)删除stu_old表。
请写出对应的 SQL 命令。
【答案】
(1)RENAME TABLE school.stu_old TO school.student;
(2)CREATE TABLE school.student_backup LIKE school.student;
(3)DROP TABLE IF EXISTS school.stu_old;
1.(判断题)RENAME TABLE t1 TO t2, t2 TO t3;可以将t1重命名为t2,同时将t2重命名为t3。( )
【答案】×
【解析】重命名多个表时,新表名不能与已存在的表名冲突。此命令中,第一步将t1改为t2后,t2已存在,第二步无法将t2改为t3。
2.(填空题)复制course表的结构到course_copy表,且确保course_copy不存在时才创建,命令是:CREATE TABLE ______ course_copy LIKE course;
【答案】IF NOT EXISTS
【解析】IF NOT EXISTS用于判断新表是否存在,避免因course_copy已存在而报错。
3.(单项选择题)下列关于CREATE TABLE new_t LIKE old_t;的说法,正确的是( )
A. 复制old_t的结构和数据
B. 仅复制old_t的数据,不复制结构
C. 仅复制old_t的结构,不复制数据
D. 既不复制结构也不复制数据
【答案】C
【解析】CREATE TABLE ... LIKE是复制表结构的专用命令,不包含任何数据;复制数据需额外使用INSERT INTO new_t SELECT * FROM old_t;。
4.(读程序填空题)以下命令用于同时删除temp1和temp2表,且确保表不存在时不报错,请补全: ______ TABLE IF EXISTS temp1, temp2;
【答案】DROP
1.(单项选择题)下列命令中,用于将user表重命名为user_info的是( )
A. ALTER TABLE user RNAME user_info;
B. RENAME user TO user_info;
C. RENAME TABLE user TO user_info;
D. CHANGE TABLE user TO user_info;
【答案】C
2.(判断题)DROP TABLE命令删除表后,表中的数据可以通过 MySQL 的日志恢复。( )
【答案】×
【解析】DROP TABLE是不可逆操作,会彻底删除表的结构和数据,MySQL 默认日志不保存删除的表数据,需依赖手动备份恢复。
3.(填空题)将product表和order表分别重命名为product_old和order_old,命令是:RENAME TABLE product TO product_old, ______ ______ ______;
【答案】order TO order_old
4.(SQL 语句题)已知teacher表存在,写出以下操作的命令:
(1)复制teacher表的结构到teacher_temp表;
(2)将teacher_temp表重命名为teacher_backup;
(3)删除teacher_temp表(若存在)。
【答案】
(1)CREATE TABLE teacher_temp LIKE teacher;
(2)RENAME TABLE teacher_temp TO teacher_backup;
(3)DROP TABLE IF EXISTS teacher_temp;
1. 重命名表(RENAME TABLE)
RENAME TABLE 旧表名1 TO 新表名1 [, 旧表名2 TO 新表名2, ...];
2. 复制表结构(CREATE TABLE ... LIKE)
CREATE TABLE 新表名 LIKE 源表名;
3. 删除表(DROP TABLE)
DROP TABLE [IF EXISTS] 表名1 [, 表名2, ...];
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$