MySQL

您所在的位置:网站首页 mysql怎么修改数据表字段 MySQL

MySQL

2024-07-09 21:10| 来源: 网络整理| 查看: 265

前言

1. 本文中有部分SQL没有采用大写,但是推荐关键字使用大写字~~

2. 在应用到生产环境之前,一定要在本地/测试环境做测试,确认无误才可以放到生产环境执行~~

新补充  // 20190903

1. 添加字段,比如我在数据表中添加一个 age 字段,类型为int(11)

ALTER TABLE player ADD COLUMN age int(11);

2. 修改字段名,将 age 字段改成player_age

ALTER TABLE player RENAME COLUMN age to player_age

3. 修改字段的数据类型,将player_age的数据类型设置为float(3,1)

ALTER TABLE player MODIFY (player_age float(3,1));

4. 删除字段, 删除刚才添加的player_age字段

ALTER TABLE player DROP COLUMN player_age;

-- 添加新字段【同时添加字段类型,注释,且是指定字段后面】 ALTER TABLE `users_max_score` ADD COLUMN game_type tinyint(1) COMMENT '游戏类型 0:bingo 1: solitaire' after `game_number`;

-----------------------------------------------------------------我是分割线----------------------------------------------------------------

1. 修改字段默认值

alter table 表名 drop constraint 约束名字   ------说明:删除表的字段的原有约束

alter table 表名 add constraint 约束名字 DEFAULT 默认值 for 字段名称 -------说明:添加一个表的字段的约束并指定默认值

2. 修改字段名

语法:// 验证通过

ALTER TABLE CHANGE

例子

ALTER TABLE `ue4_map` CHANGE  `levelpath` `filepath` VARCHAR(255); ALTER TABLE `ue4_blueprint` CHANGE `strObjectPath` `filepath` VARCHAR(255);

Note

ALTER TABLE 表名 RENAME COLUMN A TO B;   // 验证没成功

3. 修改字段类型

ALTER TABLE 表名 ALTER COLUMN UnitPrice DECIMAL(18, 4) NOT NULL

4. 增加字段

ALTER TABLE 表名 ADD 字段 类型 NOT NULL DEFAULT 0

For example 

use kumu;

ALTER TABLE `user`

ADD `sig_livestream_notification` enum('0','1') DEFAULT '1' COMMENT '1:接收SIG的直播通知' AFTER `livestream_notification`,

ADD `sig_timeline_like_notification` enum('0','1') DEFAULT '1' COMMENT '1:接收like 通知' AFTER `timeline_like_notification`,

ADD `sig_timeline_comment_notification` enum('0','1') DEFAULT '1' COMMENT '1:接收评论通知' AFTER `timeline_comment_notification`;

5. 增加 / 删除字段备注

Note

字段已经存在 ==> MODIFY,  不存在 ==> ADD

添加备注

/*oracle*/

comment on column 表名.列名 is '备注';

/*mysql*/

ALTER TABLE 表名 MODIFY 字段名 类型 COMMENT '备注';

删除备注

/*mysql*/

ALTER TABLE 表名 MODIFY  字段名 类型 COMMENT '';

下面用法:

Alter table `db_jddts_jsmj_1_tdw`.`lg2_hero_baseattr`   -- db_jddts_jsmj_1_tdw:数据库名   add column `num` int(11) NOT NULL Auto_increment first,  -- 添加字段,并且处于第一列   add column `versionTime` varchar(11) NOT NULL after `num`, -- 添加字段,处于num后面, 不支持before   change `heroid` `heroid` int(11) NULL,  -- 改变字段类型   drop primary key, -- 删除主键   add primary key (`num`) -- 添加主键

添加主键字段:

alter table `version` ADD  id int(11) not null auto_increment primary key COMMENT '主键' first;

6. 复制表 使用关键字 LIKE   // 20200119

已经有user_login表, 现在要[水平分表]创建100个相同的表, 使用如下即可, 或者通过存储过程[TBD]

CREATE TABLE user_login0 LIKE user_login; CREATE TABLE user_login1 LIKE user_login; CREATE TABLE user_login2 LIKE user_login; CREATE TABLE user_login3 LIKE user_login; CREATE TABLE user_login4 LIKE user_login; CREATE TABLE user_login5 LIKE user_login; CREATE TABLE user_login6 LIKE user_login; CREATE TABLE user_login7 LIKE user_login; CREATE TABLE user_login8 LIKE user_login; CREATE TABLE user_login9 LIKE user_login; CREATE TABLE user_login10 LIKE user_login;

....

CREATE TABLE user_login99 LIKE user_login;

-- 备注:

-- 借助上面的序号可以借助Excel实现或者脚本来实现;

执行结果如下:

7. Win10下,查看保存SQL脚本的地方:

可以看到之前保存的sql查询 C:\Users\xinfning\Documents\Navicat\MySQL\Servers   // 公司电脑

C:\Users\william_ning\Documents\Navicat\MySQL\Servers\xxxxx\database_name

Navicat

硬盘

8. 模板参考 --  Sublime 中编辑 -- 1.修改test_1表 添加 hascount与note字段 ALTER TABLE test_1 ADD hascount INTEGER NOT NULL Default 0 COMMENT '总编制'; ALTER TABLE test_1 ADD note TEXT COMMENT '备注'; -- 2.新增test_2表 DROP TABLE IF EXISTS `test_2`; CREATE TABLE `test_2`  (   `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',   `operate_time` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '操作时间',   `operator_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '操作者id',   `proname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '项目名',   `update_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '变更字段',   `update_before` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '变更前',   `update_after` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '变更后',   PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 146 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- 3.新增test_3表 DROP TABLE IF EXISTS `test_3`; CREATE TABLE `test_3`  (   `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id',   `group_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '组名',   `hascount` int(11) NULL DEFAULT NULL COMMENT '总编制',   `note` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '备注',   PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 9. 批量删除某前缀/含指定字符串的数据表

SELECT CONCAT('drop table ', group_concat(TABLE_NAME), ';') AS `batch_del_tables` FROM information_schema.`TABLES`

WHERE table_schema = 'database_name' AND TABLE_NAME LIKE '%some_table_xx%';

复制上面查询结果中batch_del_tables字段的值,如下:

drop table some_table_202212,some_table_202301,some_table_202302;

开始执行即可~

由于是删表操作,所以,请再三确认,谨慎操作!

后续补充

...



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3