Press "Enter" to skip to content

MySQL – SQL – 增加字段/修改字段/修改类型/修改默认值

 1.应用场景

有时[比如在Linux服务器下]需要使用SQL语句直接对数据表进行新建/修改表结构, 填充/更新数据等. 或借助数据库管理工具执行SQL,但是这种方法,比较适合做微小的操作~

好处:
使用SQL去操作,可以避免繁琐, 遗漏, 快捷方便, 一步到位.

2.学习/操作


前言
1. 本文中有部分SQL没有采用大写,但是推荐关键字使用大写字.
2. 在应用到生产环境之前,一定要在本地/测试环境做测试,确认无误才可以放到生产环境执行.


1. 添加字段

语法:

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

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

ALTER TABLE player ADD (age int(11));

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

ALTER TABLE player RENAME COLUMN age to player_age

语法:// 验证通过

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. 修改字段的数据类型
将player_age的数据类型设置为float(3,1)

ALTER TABLE player MODIFY (player_age float(3,1));
or
ALTER TABLE 表名 ALTER COLUMN UnitPrice DECIMAL(18, 4) NOT NULL;

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

ALTER TABLE player DROP COLUMN player_age;

5. 修改字段默认值

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

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

6. 增加 / 删除字段备注
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后面
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; 

7. 复制表 使用关键字 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实现或者脚本来实现;
执行结果如下:

8. win10下,查看保存sql脚本的地方:
可以看到之前保存的SQL查询 C:\Users\xinfning\Documents\Navicat\MySQL\Servers C:\Users\william_ning\Documents\Navicat\MySQL\Servers\xxxxx\database_name Navicat

硬盘

9. 模板参考 // Sublime中编辑
9.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 '备注';

9.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;

9.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;

后续补充 …


3.问题/补充

TBD

4.参考

TBD

后续补充

One Comment

  1. Alexandr
    Alexandr 2021年9月13日

    He Makes Money Online WITHOUT Traffic?

    Most people believe that you need traffic to profit online…
    And for the most part, they’re right!
    Fact is.. 99.99% of methods require you to have traffic.
    And that in itself is the problem..
    Because frankly, getting traffic is a pain in the rear!
    Don’t you agree?
    That’s why I was excited when a good friend told me that he was profiting, but with ZERO traffic.
    I didn’t believe him at first…
    But after he showed me the proof, it’s certainly the real deal!
    I’m curious what your thoughts are.
    Click here to take a look >> https://bit.ly/3mOAfVp
    Please view it before it’s taken down.

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注