列表

详情


SQL119. 修改表

描述

现有一张用户信息表user_info,其中包含多年来在平台注册过的用户信息。

用户信息表user_info:
Filed Type Null Key Default
Extra Comment
id int(11) NO PRI (NULL) auto_increment 自增ID
uid int(11)
NO
UNI (NULL)

用户ID
nick_name varchar(64) YES

(NULL)

昵称
achievement int(11) YES

0
成就值
level int(11) YES
(NULL)

用户等级
job varchar(32)
YES

(NULL)

职业方向
register_time datetime YES

CURRENT_TIMESTAMP

注册时间

请在用户信息表,字段level的后面增加一列最多可保存15个汉字的字段school;并将表中job列名改为profession,同时varchar字段长度变为10;achievement的默认值设置为0。


输出结果示例:
Filed Type Null Key Default
Extra Comment
id int(11) NO PRI
auto_increment 自增ID
uid int(11)
NO
UNI

用户ID
nick_name varchar(64) YES



昵称
achievement int(11) YES

0

level int(11) YES


用户等级
school varchar(15)





profession varchar(10)
YES




register_time datetime YES

CURRENT_TIMESTAMP

注册时间

备注:建表时限制的字符集为utf8,MySQL版本为8.*
后台会通过SHOW FULL FIELDS FROM user_info 来对比输出结果。

示例1

输入:

drop table if exists user_info;
CREATE TABLE IF NOT EXISTS user_info (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int UNIQUE NOT NULL COMMENT '用户ID',
`nick_name` varchar(64) COMMENT '昵称',
achievement int COMMENT '成就值',
level int COMMENT '用户等级',
job varchar(10) COMMENT '职业方向',
register_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'
)CHARACTER SET utf8 COLLATE utf8_general_ci;

输出:

id|int|None|NO|PRI|None|auto_increment|select,insert,update,references|自增ID
uid|int|None|NO|UNI|None||select,insert,update,references|用户ID
nick_name|varchar(64)|utf8_general_ci|YES||None||select,insert,update,references|昵称
achievement|int|None|YES||0||select,insert,update,references|
level|int|None|YES||None||select,insert,update,references|用户等级
school|varchar(15)|utf8_general_ci|YES||None||select,insert,update,references|
profession|varchar(10)|utf8_general_ci|YES||None||select,insert,update,references|
register_time|datetime|None|YES||CURRENT_TIMESTAMP|DEFAULT_GENERATED|select,insert,update,references|注册时间

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Mysql 解法, 执行用时: 35ms, 内存消耗: 6244KB, 提交时间: 2021-12-08

ALTER TABLE user_info ADD school varchar(15) after level;
ALTER TABLE user_info CHANGE job profession varchar(10);
ALTER TABLE user_info modify achievement int(11) DEFAULT 0;

Mysql 解法, 执行用时: 35ms, 内存消耗: 6288KB, 提交时间: 2022-01-22

alter table user_info add school varchar(15) after level;
alter table user_info change job profession varchar(10);
alter table user_info modify achievement int default 0;

Mysql 解法, 执行用时: 35ms, 内存消耗: 6336KB, 提交时间: 2022-01-24

# 请在用户信息表,字段level的后面增加一列最多可保存15个汉字的字段school;
# 并将表中job列名改为profession,同时varchar字段长度变为10;
# achievement的默认值设置为0。



alter table user_info add school varchar(15) after level;
alter table user_info change job profession varchar(10);
alter table user_info modify achievement int(11) default 0;

Mysql 解法, 执行用时: 35ms, 内存消耗: 6404KB, 提交时间: 2022-01-03

alter table user_info add column school varchar(15) after level;
alter table user_info change job profession varchar(10);
alter table user_info modify achievement int(11) default 0;

Mysql 解法, 执行用时: 35ms, 内存消耗: 6472KB, 提交时间: 2022-01-25

alter table user_info add school varchar(15) after level ,
                      change job profession varchar(10), 
                     
                      modify achievement  int (11) default 0;