学习
实践
活动
工具
TVP
写文章

SQL自动化上线之alter语句

在这个基础上,根据目前收集的变更需求,除了drop,truncate本身不支持以外,就只有create和alter操作了。alter操作本身是带有一些敏感性的,主要还是取决于数据量和结构。

25320

MySQL 实战笔记 第04期:alter table 语句进度评估

有没有一种途径能让我们随时能了解 alter table 语句的执行状况呢? 答案是肯定的,今天我们就来一起学习下 MySQL alter table 语句进度评估。 1 官方文档 首先我们来看下官方文档对 alter table 语句的解释。 alter table 语句有七个不同的阶段事件,每个事件在其不同的阶段执行,具体如下: stage/innodb/alter table (read PK and internal sort):当 ALTER stage/innodb/alter table (insert):对 ALTER TABLE 操作添加的每个索引重复此阶段。 table 语句已经完成,则 events_stages_current 会返回一个空集,这种情况下可以查询 events_stages_history 表以了解操作是否已经完成。

19520
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    执行ALTER TABLE语句时如何避免长时间阻塞并发查询

    最近看到这样的案例: 1、应用需要为现有的表添加列 2、应用执行ALTER TABLE ADD COLUMN语句 3、其他每个查询都需要被阻塞几分钟甚至更长时间 为什么出现这种情况?如果避免? # ALTER TABLE test ADD COLUMN whatever int4; ALTER TABLE TIME: 12.662 ms 可以看到该语句执行的非常快,在看下alter table (SESSION 2) =# ALTER TABLE test ADD COLUMN whatever2 int4; 会话2执行alter 语句时由于需要等待会话1释放锁被阻塞,但是他已经获取这个表上的 首先设置事务超时时间,然后执行alter table语句: =$ printf "SET statement_timeout = 50;\nALTER TABLE test add column whatever2 INT4;\n" SET statement_timeout = 50; ALTER TABLE test add column whatever2 INT4; 超时时间保证alter table语句执行不超过

    1.2K10

    SQL命令 ALTER TABLE

    描述 ALTER TABLE语句修改表定义;它可以添加元素、删除元素或修改现有元素。在每个ALTER TABLE语句中只能执行一种类型的操作。 如果尝试通过ALTER TABLE TABLE NAME ADD COLUMN语句将字段添加到表中: 如果该名称的列已经存在,则该语句将失败,并显示SQLCODE-306错误。 如果语句对列指定了NOT NULL约束,并且该列没有默认值,则如果表中已存在数据,则该语句将失败。这是因为,在完成DDL语句之后,不满足所有预先存在的行的NOT NULL约束。 如果语句对列指定了NOT NULL约束,并且该列有默认值,则该语句将更新表中的所有现有行,并将该列的默认值分配给该字段。这包括CURRENT_TIMESTAMP等默认值。 添加整数计数器 如果通过ALTER TABLE TABLE NAME ADD COLUMN语句将整数计数器字段添加到表中: 如果表没有标识字段,则可以向该表添加标识字段。

    18020

    SQL命令 ALTER USER

    SQL命令 ALTER USER 修改用户密码。 大纲 ALTER USER user-name IDENTIFY BY password ALTER USER user-name IDENTIFIED BY password 参数 参数 描述 user-name 描述 ALTER USER命令允许更改用户的密码。可以随时更改自己的密码。要更改其他用户的密码,必须拥有%Admin_Secure:USE系统权限。 如果新密码与现有密码相同,则ALTER USER不会发出错误代码。 它设置SQLCODE = 0(成功完成)。 在嵌入式SQL中使用ALTER USER之前,必须以具有适当权限的用户身份登录。否则将导致SQLCODE-99错误(特权冲突)。

    56020

    SQL命令 ALTER VIEW

    描述 ALTER VIEW命令用于修改视图。 视图基于由SELECT语句或由两个或多个SELECT语句组成的UNION组成的查询的结果集。 它们必须在数量和顺序上与SELECT语句中指定的表列相对应。 还可以在SELECT语句中指定这些视图列名作为列名别名。 如果两者都不指定,则使用表列名作为视图列名。 权限 ALTER VIEW命令是一个特权操作。 用户必须具有%ALTER_VIEW管理权限才能执行ALTER VIEW。 用户必须在指定的视图上拥有%ALTER权限。 如果用户是视图的Owner(创建者),则自动授予该用户该视图的%ALTER权限。 否则,用户必须被授予视图%ALTER权限。 可以使用GRANT命令分配%ALTER_VIEW和%ALTER权限,如果拥有适当的授予权限。 可以通过调用%CHECKPRIV命令来确定当前用户是否具有%ALTER权限。

    31730

    ALTER 简单操作(mysql)

    ALTER 语句 ALTER 语句用于在已有的表中添加、修改或删除。 删除列: ALTER TABLE 表名字 DROP 列名称 例如:删除test111表中的age列 ALTER TABLE test1111 DROP age 添加列:添加到test1111 表列,名为age,约束为not null 注释是comment,可加可不加,约束not null也是,看个人需求 ALTER TABLE 表名字 ADD 列名 INT NOT NULL COMMENT ‘注释说明’ ALTER TABLE test1111 ADD age INT NOT NULL COMMENT ‘这里是注释’ 重命名列名:使用 change 把test22表中的age重命名为age2 ,记住后面要有类型 ALTER TABLE test22 CHANGE age age2 VARCHAR(10) 重命名表名: 使用 rename 把test22 表重命名为age231表 ALTER

    18310

    ALTER SYSTEM CANCEL SQL : 在 Oracle Database 18c 的会话中取消 SQL 语句

    原文地址:https://oracle-base.com/articles/18c/alter-system-cancel-sql-18c 原文作者:Tim Hall Oracle Database 18C 引入了 ALTER SYSTEM CANCEL SQL 命令,用于取消会话中的 SQL 语句,提供了杀死恶意会话的替代方法。 目录 语法 指定要取消的会话 语法 ALTER SYSTEM CANCEL SQL 命令的基本语法如下所示: ALTER SYSTEM CANCEL SQL 'SID, SERIAL[, @INST_ID 参考如下: -- 当前实例的会话中的当前 SQL ALTER SYSTEM CANCEL SQL '738, 64419'; -- INST_ID = 1 的实例会话中的当前 SQL ALTER SYSTEM 指定要取消的会话 在后台会话中取消 SQL 语句可能具有很大的破坏性,因此在查询会话和 SQL 时要非常小心。

    14930

    数据定义: CREATE、DROP、ALTER

    请注意,SELECT 语句中的列被添加到表的右边,而不是重叠在上面。 309 310 你可以在单个的 ALTER TABLE 语句中发出多个 ADD、ALTER、DROP 和 CHANGE 子句。 这是 MySQL 对 ANSI SQL92 的扩展,ANSI SQL92 只允许在每个 ALTER TABLE 语句中一个子句。 在 3.22 或以后的版本中,CREATE INDEX 被映射到一个 ALTER TABLE 语句来创建索引。查看章节 6.5.4 ALTER TABLE 句法。 在 3.22 或以后的版本中,DROP INDEX 被映射到一个 ALTER TABLE 语句来移除索引。查看章节 6.5.4 ALTER TABLE 句法。

    39920

    MySQL之alter ignore 语法

    MySQL之alter ignore 语法 今天上班的时候,业务方问了我这样一个问题:我有一个表,需要添加一个唯一的字段,但是目前这个字段存在一些重复值,有没有好的解决办法。 除了这两种方法,在低版本的mysql中还有一种方法,是使用alter ignore table的方法了,这个语法使用的比较少,我这里进行了一个实验进行测试: mysql--dba_admin@127.0.0.1 =1; +---------------------+ | @@old_alter_table=1 | +---------------------+ | 0 | + 也就是alter table test的方法,发现有冲突的记录,然后我们该用alter ignore的方法,错误依旧保留,经过查询是少了一个参数,old_alter_table,要想成功实现去除重复记录并且添加唯一索引 再说明一点,alter ignore table的本质是创建一张新表,然后新表的结构上age字段是唯一的,再通过insert ignore的语法进行插入,碰到重复的记录,则直接删除。

    2.4K10

    ClickHouse Alter Table 执行流程

    StorageReplicatedMergeTree::alter 判断是不是 `MODIFY SETTING`, 如果是 `MODIFY SETTING`, 那么只会本地执行,不会 `Replicated It's local operation. /// Also we don't upgrade alter lock to table structure lock. 如果是, 那么不能执行 ALTER TABLE 操作。 if (is_readonly) throw Exception("Can't ALTER readonly table", ErrorCodes::TABLE_IS_READ_ONLY); ` TABLE 这里, 是用 replication_alter_partitions_sync 来控制 是否同步执行 ALTER, 而不是 mutations_sync.

    1.1K30

    BI-SQL丨Drop & Alter

    [1240] Drop & Alter Drop,撤销操作;Alter,更新操作。 在PowerBI中,如果我们针对某些数据清洗操作进行修改的话,只需要打开高级编辑器查看M语言,对特定的语句进行修改删除就可以了。 但是在数据库仓库中,我们往往需要借助Drop和Alter或者其他语句才能对数据仓库进行修改。 为什么在数据仓库中我们不能像在PowerQuery中进行同样的操作呢? 其实这个和二者的定位有关。 因此,为了数据库稳定性而言,我们如果需要对数据仓库进行逻辑的修改以及调整,则必须有一套规范化的操作流程以及专业化的逻辑修改语句。 ,因为我们做BI前端使用这类操作的情况其实并不多见,我们更多就是单纯的使用查询聚合语句

    8420

    加快alter table的操作速度

    01 加快alter table的操作速度 MySQL中的alter table操作对于大表来讲,是一个比较严重的问题,MySQL执行大部分alter table的操作步骤是: 用新的结构创建一张表 一般针对这种大表的更新,常见的操作技巧无外乎两种情况,一种是在一台测试机器上执行alter table操作,然后和线上的的主库进行切换,另外一种是通过创建一张新表,然后通过重命名和删表操作来交换两张表。 当然,还有一小部分alter table的操作是不需要重建表的,例如下面的操作,我们已知需要给col_name字段添加一个默认值5,SQL如下: alter table test modify column 再来看另外一种方法: alter table test alter column col_name set default 5; 这个操作将会直接修改.frm文件而不涉及表数据,因此这个操作是相当快的 还有一种是用alter语法快速创建MyISAM索引的操作,我们知道MyISAM采用的是表锁,在使用alter table语法导入数据的时候有一种有效的方法,如下: alter table test

    87610

    Hbase(3)——desc、alter、时间戳

    36110

    alter table 增加、删除、修改字段类型

    经常需要手动增加、删除、修改mysql表的字段类型,可以参考下面的例子: 增加多个字段: ALTER TABLE `test11` ADD COLUMN ( `ucid` bigint( DEFAULT 0 COMMENT '分单人id', `allot_store_id` int(11) NOT NULL DEFAULT 0 COMMENT '分单门店' ) 删除多个字段: ALTER TABLE `test11` DROP `clue_type`,DROP `work_type`,DROP `ucid`; 修改字段: ALTER TABLE `test11` modify COLUMN `ucid` bigint(20) NOT NULL DEFAULT 0 COMMENT '线索ucid'; ALTER TABLE `test11` modify COLUMN `clue_type ` int(1) NOT NULL DEFAULT '1' COMMENT '线索类型1招生 2招商'; ALTER TABLE `test11` modify COLUMN `work_type`

    26630

    postgresql的ALTER经常使用操作

    postgresql版本号:psql (9.3.4) 1、添加一列ALTER TABLE table_name ADD column_name datatype; 2、删除一列 ALTER TABLE table_name DROP column_name; 3、更改列的数据类型 ALTER TABLE table_name ALTER column_name TYPE datatype; 4、表的重命名 ALTER TABLE table_name RENAME TO ; 6、字段的not null设置 ALTER TABLE table_name ALTER column_name {SET|DROP} NOT NULL; 7、给列加入default ALTER TABLE table_name ALTER column_name SET DEFAULT expression; 发布者:全栈程序员栈长,转载请注明出处

    11610

    MySQL 修改数据表 ALTER

    修改列定义 ALTER table 表名 MODIFY 字段名 列定义 位置[FIRST | AFTER 字段名]; 修改列名称 ALTER table 表名 CHANGE 原字段名 新字段名 列定义 位置; 数据表更名 ALTER table 表名 RENAME [ TO | AS ] 新名称; RENAME table 表名 TO 新名称; 添加单列 ALTER TABLE 表名 ADD [COLUMN ] 字段名 列定义 位置; 添加约束 ALTER TABLE 表名 ADD PRIMARY KEY (字段); ALTER TABLE 表名 ADD UNIQUE (字段); ALTER TABLE 表名 ADD FOREIGN KEY (字段) REFERENCES 父表(字段); ALTER TABLE ALTER 字段 SET DEFAULT 值; 删除约束 ALTER TABLE 表名 ALTER 字段 DROP DEFAULT; ALTER TABLE 表名 DROP PRIMARY KEY; 删除唯一约束 SHOW INDEXES FROM 表名; ALTER TABLE 表名 DROP 索引

    73060

    mysql操作命令梳理(2)-alter(update、insert)

    在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身,也能改变表的注释和表的类型 下面就针对alter修改命令的使用做一梳理: 在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类型 下面就针对alter修改命令的使用做一梳理: 1)删除列 alter table 表名 DROP 列名;               //或者  alter table 表名 drop column 列名 INDEX语句来实现。 DROP INDEX可以在ALTER TABLE内部作为一条语句处理 DROP index 索引名 ON 表名字 列名;       //删除普通索引 ALTER TABLE 表名 DROP INDEX

    33960

    第13.1.1章 语法解释ALTER DATABASE

    ALTER {DATABASE | SCHEMA} [db_name] alter_specification ... ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORY NAME alter_specification: [DEFAULT] 你必须先具备该数据库的ALTER特权,才能完成对数据库的ALTER操作。 ALTER DATABASE有一个同义词的语法ALTER SCHEMA。 当从上下文中可以推断默认数据库时,使用ALTER DATABASE可以省略数据库名。 原文:https://dev.mysql.com/doc/refman/5.7/en/alter-database.html

    22410

    MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型

    alter table field_changes add code char(50); desc field_changes; 给表删除字段。 alter table field_changes drop code; desc field_changes; 修改字段类型,扩充字段长度。 alter table field_changes modify name char(50); desc field_changes; 修改字段名,字段类型。 alter table field_changes change name name1 int; desc field_changes;

    21930

    扫码关注腾讯云开发者

    领取腾讯云代金券