精华内容
下载资源
问答
  • 修改表结构不包括
    千次阅读
    2021-11-27 16:08:10

    一、扩展部分(修改表结构)

    1.1 定义

    修改表结构是对已经创建好的表进行结构上的修改,在mysql中,主要采用alter table进行修改

    二、案例

    CREATE table student (
    `id` int PRIMARY key auto_increment,
    `name` VARCHAR(20) not null
    );
    SELECT * from student;
    INSERT INTO student values (null,'张三');
    INSERT INTO student values (null,'李四');
    INSERT INTO student values (null,'王五');
    

    三、SQL

    3.1 修改表名

    语法:
    	alter table 旧表名 rename [TO] 新表名;
    例如:
    	alter table student rename people;
    	ALTER table people rename student;
    

    3.2 修改数据类型

    语法:
    	alter table 表名 modify 列名数据类型 约束条件;
    例如:
    	alter table student modify name char(3) not null;
    	alter table student modify name varchar(20) ;
    	
    tips:
    	当我们修改数据类型的时候,如果表里有数据,那么必须里面的数据符合你要修改的数据类型
    

    3.3 修改列名

    语法:
    	alter table 表名 change 旧列名 新列名 数据类型;
    例如:
    	alter table student change name s_name varchar(20) not null;
    

    3.4 删除列

    语法:
    	alter table 表名 drop 列名;
    例如:
    	alter table student drop s_name;
    tips:
    	删除列的话,那么列里的数据会跟着一起删除,无法还原。
    

    3.5 添加列

    语法:
    	alter table 表名 add 新列名 数据类型 约束条件 [first | after 已存在的列名];
    例如:
    	alter table student add name varchar(20) not null DEFAULT '未命名';
    	alter table student add birthday date after id;
    tips:
    	after添加的话,带表的是添加到哪个位置之后
    	如果已经有数据,添加列的值会是默认值,没有设置默认值会是null
    

    3.6 修改列的排列位置

    语法:
    	alter table 表名 modify 列名1 数据类型 约束条件 first | after 列名2;
    例如:
    	alter table student modify birthday date after name;
    	
    
    更多相关内容
  • mysql实例之使用alter table命令修改表结构 mysql alter table语句可以修改表的基本结构,例如添加字段、删除字段、添加主键、添加索引、修改字段数据类型、对表重命名等等操作,本文章通过两个简单的实例向大家介绍...
  • mysql alter table语句可以修改表的基本结构,例如添加字段、删除字段、添加主键、添加索引、修改字段数据类型、对表重命名等等操作,本文章通过两个简单的实例向大家介绍mysql alter table的使用方法。  实例一:...
  • 主要介绍了MySQL修改表结构操作命令总结,包含如删除列、添加列、修改列、添加主键、删除主键、添加唯一索引、添加普通索引等内容,需要的朋友可以参考下
  • MySQL数据库如何修改表结构

    千次阅读 2021-01-18 22:46:08
    MySQL数据库修改表结构的方法:1、使用add添加字段,使用drop删除字段;2、使用alter修改字段名;3、修改列类型;4、修改表名;5、修改表选项;6、修改列属性。【相关图文教程:mysql数据库图文教程】MySQL数据库...

    MySQL数据库修改表结构的方法:1、使用add添加字段,使用drop删除字段;2、使用alter修改字段名;3、修改列类型;4、修改表名;5、修改表选项;6、修改列属性。

    2020082114510558396.jpg

    【相关图文教程:mysql数据库图文教程】

    MySQL数据库修改表结构的方法:

    1、添加与删除字段

    (1)、添加

    Alter table 表名 add【column】字段名 列类型 列属性 【first|after 字段名】

    1597992466884935.png

    (2)、删除

    Alter table 表名 drop【column】字段名;

    1597992472389988.png

    2.修改字段名

    语句:alter table 表名 change 原字段名 新字段名 列类型 列属性;

    说明:就算是仅修改字段名,那么字段的原始类型,原属性也要重新书写,不然就变为删除。

    1597992478105367.png

    3.修改列类型

    语句:alter table 表名 modify 字段名 列类型 列属性;

    1597992484965669.png

    4.修改表名

    语句:alter table 表名 rename to 新表名;

    1597992503642603.png

    5.修改表选项

    语句:alter table 表名 表选项;

    说明:虽然MYSQL提供了修改表选项的命令,但是如果一个表中已经有数据,那么就不要执行修改字符集的命令。

    1597992509894283.png

    6.修改列属性

    列属性包含not null、default、unique、primary key、auto_increment

    当一个表创建以后,对于列属性的操作,我们可以使用alter table 表名 modify 来操作。在操作的时候如果书写了列属性就

    是添加列属性,如果没有书写就是删除列属性。

    特殊的列属性:Primary key和unique。

    增加列属性

    普通属性的增加:

    语句:alter table 表名 modify 字段名 列类型 列属性;

    1597992539282351.png

    说明:

    A、auto_increment在添加时需要注意字段必须是整数,而且是unique或者primary key。

    B、Unique与default不能一起连用。

    主键属性的添加:

    语句:alter table 表名 add primary key(字段名);

    1597992545672910.png相关学习推荐:mysql视频教程

    展开全文
  • 如何在线修改表结构

    千次阅读 2020-06-03 18:01:06
    在线的修改表结构一定要慎重 随意的添加和删除字段,都会造成严重的事故。并且在修改表之前,必须要对数据表做备份,如果每天都做增量备份的话,备份一次数据也花了太长的时间。 常规的备份是先对业务停机,然后再...

    在线的修改表结构一定要慎重

    随意的添加和删除字段,都会造成严重的事故。并且在修改表之前,必须要对数据表做备份,如果每天都做增量备份的话,备份一次数据也花不了太长的时间。
    常规的备份是先对业务停机,然后再维护数据库和系统代码,这种彻底停掉业务的方式是安全的, 稳妥的,通常会在后半夜去做,比如说淘宝在凌晨2点去做维护系统,12306每晚也会做对系统的维护,到第二天早上才能购票。

    要是不影响正常业务的表结构变更还是可以在线去做的,比如说数据太多,int类型的主键不太够用了需要换成bigint类型的主键,再或者原来某个字段是有唯一性约束的,现在我想去掉唯一性的约束,这种修改不会影响到线上正在执行的业务,所以修改起来问题不是特别大,但是在实际操作上,必须要认真的对待,否则也会对系统造成非常不好的影响。

    ALTER TABLE修改表结构的弊病

    在系统没有上线时候,alter table语句是可以的,包括我们在navicat图形界面上去做表结构的修改,最终也会用alter table语句的,但是这个ddl数据还是挺多的

    • 由于修改表结构是表级锁,因此在修改表结构时,影响写入操作
      如果要给1000万数据的表做修改,这个时间有点长,并且期间是不能对这个表做任何修改和读取的,对线上的业务影响非常大,数据越多影响越长
    • 如果表结构修改失败,必须还原表结构,所以耗时更长。
      举个例子给表某个字段设置not null,修改到中途发现表有的数据这个字段是null值,这时候还要还原回来,这个期间也是锁表的
    • 大数据表记录多,修改表结构锁表时间很久
      可以想象下给淘宝表添加一个字段得多慢

    使用PerconaTookit工具

    是Percona公司维护的这个MySQL工具包,这家公司太优秀了,比如对MySQL做的深入优化再次发行后叫Percona Server数据库,这个数据库的性能是MySQL中性能最好的,甚至说当初阿里巴巴开发出自家的电商数据库OceanBase也是借鉴了PerconaServer很多的技术。不管怎么说,Percona的产品几乎都是免费试用的,这一点非常好。

    话说回来,这个PerconaToolkit里包含了一个pt-online-schema-change的工具,可以在线完成修改表结构

    在线修改表结构的原理

    pt-online-schema-change工具怎么能够实现不锁表实现在线修改表结构的呢?

    在这里插入图片描述
    我现在想修改订单表的结构,这个Percona去重新拷贝订单表的结构,创建一个新的数据表,然后在新的数据表里做结构上的修改, 在这之后Percona会在原来的订单表上创建触发器,只要原来的数据表有添加、修改、删除,就会同步到新的订单表,Percona程序也没有闲着,它还会把原来订单表的数据拷贝到新的订单表里,这样双管齐下之后,数据都同步过来之后,原来订单表也没有数据之后,Percona程序就会删除原来的订单表,然后把新的订单表的名字改成原来订单表的名字,这样就完成了在线修改表结构,并且全程都没有锁表呀

    安装PerconaTookit依赖包

    因为PerconaToolKit的工具包和MySQL8.0有冲突,所以不要安装在同虚拟机实例上,建议在一个没有安装过任何实例的虚拟机实例上安装PerconaTooKit

    1. 安装三方依赖包
    yum install -y perl-DBI
    yum install -y perl-DBD-mysql
    yum install -y perl-IO-Socket-SSL
    yum install -y perl-Digest-MDS
    yum install -y perl-TermReadKey
    
    1. 接下来安装PerconaTookit工具

    将两个文件的rpm包上传到虚拟机实例,然后执行rpm -ivh *.rpm ,就安装完成了

    pt-online-schema-change使用参数

    pt-online-schema-change OPTIONS DSN
    

    上面命令中,OPTIONS是可选参数 ,DSN是逻辑库逻辑表
    在这里插入图片描述

    举个栗子

    把客户收获地址中的name字段改为VARCHAR(20)
    这个操作不会对业务系统产生影响,所以是允许在线修改的,我们不想锁表就使用该工具,怎么做?

    pt-online-schema-change --host=192.168.99.202 --port=3306 --user=root --password=abc123456 --alter "Modify name VARCHAR(20) NOT NULL COMMENT '收货人'" D=net,t=t_customer_address --print --execute
    

    太长了,真个缩略图
    在这里插入图片描述

    接下来检查数据库的认证方式,如果是Mysql8.0的方式,需要在navicat上执行下面两行命令,把数据库的认证方式从mysql8.0改成老版本的认证方式,这样PerconaTookit就可以连接上了(不支持Mysql8.0的认证方式)

    ALTER USER 'root'@'%' INDENIFIED BY 'password' PASSWORD EXPIRE NEVER;
    ALTER USER 'root'@'%' INDENIFIED WITH mysql_native_password by 'abc123456';	
    

    下图是一个执行成功的截图
    在这里插入图片描述

    展开全文
  • Mysql之修改表结构

    千次阅读 2022-01-31 12:36:34
    mysql 修改表结构,字段等信息 一、查看表信息 1:查看建表语句 show create table test_a; 2:查看表字段信息 DESC test_a; 二、建表语句 CREATE TABLE `test_a` ( `id` char(32) NOT NULL COMMENT '主键ID', `...

    mysql 修改表结构,字段等信息

    一、查看表信息

    1:查看建表语句
    show create table test_a;
    2:查看表字段信息
    DESC test_a;
    

    二、建表语句

    CREATE TABLE `test_a` (
    `id` char(32) NOT NULL COMMENT '主键ID',
    `work_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增列',
    `creator_id` char(32) DEFAULT NULL COMMENT '创建人',
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `modifier_id` char(32) DEFAULT NULL COMMENT '修改人',
    `modify_time` datetime DEFAULT NULL COMMENT '修改时间',
    `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1 启动 0 停用',
    `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标记:0、未删除 1、已删除',
    `handle_mission` tinyint(1) unsigned zerofill DEFAULT NULL COMMENT '手动完成,0,正常上刊任务;1,手动完成任务',
    `signed_customer` varchar(64) DEFAULT NULL COMMENT '签约客户',
    # 主键索引
    PRIMARY KEY (`id`) USING BTREE,
    # 唯一索引
    UNIQUE KEY `index_id` (`id`) USING BTREE,
    # 索引
    KEY `index_signed_customer` (`signed_customer`) USING BTREE,
    ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4
    

    **unsigned:**无符号。常用于一些数据不能为负数的场合。增大数据类型的可用范围,我们在查看数值类型的可用范围时,通常都会有一个无符号范围,这个无符号范围就是在数值类型中添加了unsigned。假如:一个数值类型的可用范围为-1010,那么他的无符号范围就是020,你可以理解为数值类型加上unsigned,可以使数值类型的正数范围翻倍。
    zerofill: 作用是填充0。在字段中数据类型规定的范围中,若是插入的数据不满足范围,则会使用空格作为填充,使其符合要求,而zerofill则会将空格改为0。
    ENGINE=InnoDB 使用 InnoDB 引擎
    AUTO_INCREMENT=100 从100开始自动递增
    DEFAULT CHARSET=utf8mb4 默认的编码格式 utf8mb4
    USING BTREE: 索引方法使用BTREE.
    索引方法包含BTREE、HASH
    1.HASH(用于对等比较,如"=“和” <=>") //<=> 安全的比对 ,用与对null值比较,语义类似is null()
    2.BTREE(用于非对等比较,比如范围查询)>,>=,<,<=、BETWEEN、Like

    三、 修改表信息

    1.修改表名 
    alter table test_a rename to test_b;
    
    2.修改表注释 
    alter table test_a comment 'test_a字段注释';
    

    四、修改表字段信息

    1.修改字段类型
    alter table test_a modify column user_name text;
    
    2.修改字段类型和注释
    alter table test_a modify column user_name varchar(20) COMMENT '用户名字';
    
    3.设置字段允许为空
    alter table test_a modify column user_name varchar(255) default null COMMENT '用户名字';
    
    4.修改为自增主键
    alter table test_a modify column a_id int(5) auto_increment ;
    
    5.修改字段名字(要重新指定该字段的类型)
    alter table test_a change user_name user_name2 varchar(255) not null comment '其他的备注信息';
    

    五、给表增加字段

    1.增加一个字段,设好数据类型,且不为空,添加注释
    alter table test_a add user_name varchar(255) not null comment '用户名字';
    
    2.给字段增加主键
    alter table test_a add primary key (a_id);
    
    3.增加一个字段(a_id)并设置为主键 
    alter table test_a add a_id int(5) not null , add primary key (a_id);
    
    4.增加字段并设置为自增主键
    alter table test_a add a_id int(5) not null auto_increment , add primary key (a_id);
    

    六、删除表字段

    1.删除字段
    alter table test_a drop user_name;
    

    七、其他

    1.在某个字段(a_id)后增加字段
    alter table test_a add column user_age int(4) not null default 0 AFTER a_id;
    
    2.调整字段顺序 #(注意gateway_id出现了2次)
    alter table test_a change user_age user_age int not null AFTER a_id ;
    
    展开全文
  • 数据库表结构相关修改

    千次阅读 2022-04-26 09:31:06
    文章主要内容为表结构的变化,包括表名修改、字段的新增、删除和修改
  • 利用PerconaTookit工具在线修改表结构

    千次阅读 2022-08-25 09:20:07
    (比如INT不够用换成BIGINT,或者某个字段有唯一性约束,现在去掉唯一性约束,但是也多多少少也会影响性能 )—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查...常规的做法是业务停机,维护表结构
  • Oracle修改表结构字段名和字段长度

    千次阅读 2021-05-07 07:58:35
    添加字段的语法:alter table tablename add (column datatype ...修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);删除字段的语法:alter table table...
  • 1 使用图形方式创建表 2 使用命令方式创建表 3 修改表结构 4 删除表 5 表的索引
  • alter table语句修改表结构

    千次阅读 2018-12-12 14:11:56
    修改列类型 alter table 表名 modify 列名 列类型 [first|after 列名] 增加列 alter table 表名 add 列名 列类型 [first|after 列名] 删除列 alter table 表名 drop 列名 列改名 alter table 表名 change 旧列名 ...
  • 修改表结构(ALTER)

    万次阅读 2018-10-14 23:47:10
    修改表结构操作,有下面几种。 1、修改列名  2、修改表的名字 3、修改列的类型 4、增加某列 5、删除某列 相似的语法:alter table TableName xxx(操作) 一、修改列名 ①、语法:  ALTER TABLE TABLENAME ...
  • 数据(结构)定义语言DDL(Data Definition Language),是用于创建和修改数据库表结构的语言。 常用的语句:create ,alter,drop,rename 1.数据库表 数据库基本存储单位(table) 表的最简单形式是由行和列组成,...
  • 数据库基础-修改表结构(命令)

    千次阅读 2020-03-13 17:31:19
    1.修改表结构语法 alter table 表名 { alter column 列名{,...} /*修改列的属性*/ |add /*添加列*/ { <列的定义> } [,...] <表约束> |drop /*删除列*/ { [constraint]约束名 /*...
  • 表结构修改

    2020-02-03 12:53:40
    表结构修改 当一张数据表已经正常建立完成了,后来发现,某些表少列,某些表列设计合理… 所以提供有对象的修改操作,但是从开发来讲,提倡数据表的修改操作。 在实际开发之中,为了方便数据库的使用,往往...
  • MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表 查看数据库表结构 可以使用 describe 语句来查看数据表结构,代码如下: describe users; 在控制台中输入上述语句后的执行...
  • oracle修改表结构(alter table)

    万次阅读 2017-12-07 09:56:29
    --创建测试 create table test( id int; );-- 一个关键字,括号包含,逗号隔开,重命名列一次只能一列--添加多列 alter table test add (c1 int, c2 int); -- 正确 alter table test add column (c1 int, c2...
  • 2修改表结构必锁表,但是解锁也很简单有专门的关键词regon来解锁表,但MySQL一样。 原因: MySQL(5.6以后,支持在线DDL,支持操作与查询的并发)其实你更改表结构一定会锁表,但是还是会有概率锁表的。 首先...
  • 展开全部ALTERTABLEALTERCOLUMN[字段636f70793231313335323631343130323136353331333365633835名]字段类型NOTNULLSQL语句1、基本介绍:sql 语句是对数据库进行操作的一种语言。结构化查询语言(Structured Query ...
  • 数据库表结构修改与操作

    千次阅读 2017-10-21 21:19:04
    本章内容主要介绍数据库表结构修改与操作。 数据库的修改 以Oracle数据库为例 1.查看表结构# 在 command window(命令窗口)下输入:desc 表名; 2.修改表名#  rename 原表名 to 新表名 3.修改列名# alter ...
  • 该功能用于比较不同用户所拥有的对象(包括table、sequence、function、procedure、view等),并生成同步差异的sql脚本,用户通过执行该脚本,可保持两个用户的对象结构的同步,当然你也可以选择一个对象或
  • 如何查看结构修改表名

    千次阅读 2020-07-31 22:32:38
    DESCRIBE可以查看的字段信息,包括:字段名、字段数据类型、是否为主键、是否有默认值等。 DESCRIBE比如本校长新建了一个名叫Products的结构如下: 现在来看看“现场”,用DESCRIBE查表的结构是这样的。 其中...
  • sql语句修改表结构

    千次阅读 2012-03-30 20:13:00
    修改表结构包括:增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。所有这些动作都是用 ALTER TABLE 命令执行的。1、增加字段ALTER TABLE products ADD description ...
  • 查看数据表的详细结构 SHOW 2.3 修改表 1.添加字段 语法格式 ALTER FIRST将新添加的字段设置为表的第一个字段 AFTER放在指定字段后边 没有值就最后边 实例 ALTER 2.修改字段 语法格式 ALTER TABLE tb_name CHANGE ...
  • 在企业管理器中修改表结构,提示“超时时间已到。在操作完成之前超时时间已过或服务器未响应”  通过修改“表设计器和数据库设计器”来解决这个问题。 工具->选项->设计器->表设计器和数据库设计器,将默认30秒,...
  • MySQL 修改表字符集

    千次阅读 2021-01-18 21:57:20
    MySQL 修改表字符集如果在应用开始阶段没有正确的设置字符集,运行一段时间后发现能满足要求,想要调整字符集但又想丢弃原有的数据,怎么办呢?现我们修改 test数据库下的 t1表,把 t1表原有latin1字符集的数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 901,822
精华内容 360,728
热门标签
关键字:

修改表结构不包括