精华内容
下载资源
问答
  • Mysql修改字段名、修改字段类型

    万次阅读 多人点赞 2018-02-23 15:45:02
    mysql修改字段类型: --能修改字段类型、类型长度、默认值、注释 --对某字段进行修改 ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 新类型长度 新默认值 新注释; -- COLUMN可以省略 alter table table1 ...

    1 修改字段类型、字段名、字段注释、类型长度、字段默认值

    mysql修改字段类型:	 
    --能修改字段类型、类型长度、默认值、注释
    --对某字段进行修改
    ALTER  TABLE 表名 MODIFY [COLUMN] 字段名 新数据类型 新类型长度  新默认值  新注释;
     -- COLUMN关键字可以省略不写
    
    alter  table table1 modify  column column1  decimal(10,1) DEFAULT NULL COMMENT '注释'; -- 正常,能修改字段类型、类型长度、默认值、注释
    
    alter  table table1 modify column1  decimal(10,2) DEFAULT NULL COMMENT '注释'; 
    -- 正常,能修改字段类型、类型长度、默认值、注释
    
    mysql修改字段名:
    ALTER  TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型;	 
    alter  table table1 change column1 column1 varchar(100) DEFAULT 1.2 COMMENT '注释'; -- 正常,此时字段名称没有改变,能修改字段类型、类型长度、默认值、注释
    alter  table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释
    alter  table table1 change column2 column1 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释
    alter  table table1 change column1 column2; -- 报错 
    
    mysql> alter table white_user change column name nick_name  varchar(50) null comment '昵称'; -- 正确
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    

    2 修改表名

    ALTER TABLE 旧表名 RENAME TO 新表名 ;
    
    mysql> show tables ;
    +-------------------+
    | Tables_in_db_test |
    +-------------------+
    | white_user   |
    +-------------------+
    1 row in set (0.00 sec)
    
    
    
    mysql> alter table white_user rename to white_user_new ;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show tables ;
    +-------------------+
    | Tables_in_db_test |
    +-------------------+
    | white_user_new    |
    +-------------------+
    1 row in set (0.00 sec)

    3 修改表的注释

    ALTER TABLE 表名 COMMENT '新注释'
    
    mysql> alter table  white_user_new comment '新表-白名单表' ;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> show create table white_user_new ;
     CREATE TABLE `white_user_new` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `name` varchar(50) NOT NULL COMMENT '姓名',
      `created_time` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='新表-白名单表' 
    
    
    

    4

    在指定位置插入新字段

    ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 是否可为空 COMMENT '注释' AFTER 指定某字段 ;
    --COLUMN关键字可以省略不写
    
    mysql> alter table white_user_new add column erp varchar(50) not null comment 'erp账号' after name ;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    --在name字段后面添加erp字段
    
    mysql> show create table white_user_new ;
    CREATE TABLE `white_user_new` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `name` varchar(50) NOT NULL COMMENT '姓名',
      `erp` varchar(50) NOT NULL COMMENT 'erp账号', 
      `created_time` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='新表-白名单表'      
    
    
    
    
    mysql> alter table white_user_new add position varchar(50) not null comment '岗位' after name ;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    --在name字段后面添加position字段。
    
    mysql> show create table white_user_new ;                                      
    CREATE TABLE `white_user_new` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `name` varchar(50) NOT NULL COMMENT '姓名',
      `position` varchar(50) NOT NULL COMMENT '岗位',
      `erp` varchar(50) NOT NULL COMMENT 'erp账号',
      `created_time` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='新表-白名单表'      
    
    
    
    mysql> alter table white_user_new add  mobile varchar(50) not null comment '手机号码' before position ;
    --报错,在position字段前添加mobile字段,不能使用before关键字
    

     

    5 删除字段

    ALTER TABLE 表名 DROP [COLUMN] 字段名 ;
    --COLUMN关键字可以省略不写
    
    mysql> alter table white_user_new drop column position ;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table white_user_new drop erp ;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> show create table white_user_new ;                                      
    CREATE TABLE `white_user_new` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `name` varchar(50) NOT NULL COMMENT '姓名',
      `created_time` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='新表-白名单表'      
    
    
    
    

     

    更多企业内的技术应用和使用技巧,请移步至我的公众号【程序员实用技能】

    图片

    展开全文
  • hive 修改字段类型和增加字段

    万次阅读 2018-12-04 15:34:13
    Hive 表修改字段类型 Alter table 表名 change column 原字段名称 现字段名称 数据类型   新增字段 alter table 表名 add columns(字段名 数据类型)    

    Hive 表修改字段类型

    Alter table 表名  change column 原字段名称  现字段名称  数据类型

     

    新增字段表

    alter table 表名 add columns(字段名 数据类型)

     

     

    展开全文
  • 因为前期设计impala外部的时候考虑不足,某些字段设置成int类型,但是随着业务增长数值已经超过了int的最大值,不能满足业务需求,所以要对某些int类型的字段进行修改字段类型为string。但是parquert存储上,做...

    一、需求场景

    众所周知impala和hive是共用一天元数据。因为前期设计impala外部表的时候考虑不足,某些字段设置成int类型,但是随着业务增长数值已经超过了int的最大值,不能满足业务需求,所以要对某些int类型的字段进行修改字段类型为string。但是parquert在存储上,做了加密,二级制存储压缩,因为Impala对Parquet文件中列的顺序很敏感,所以在表的列定义与Parquet文件的列定义顺序不一致时,会导致Impala查询返回的结果与预期不一致。可以参考Impala的JIRA,https://issues.apache.org/jira/browse/IMPALA-779

    场景:

    impala修改表字段语法为:

    ALTER TABLE name CHANGE column_name new_name new_type

    #问题复现

    ALTER TABLE test.page_mv CHANGE ware_goods_id ware_goods_id STRING;


    在impala中我修改page_mv表(parquet表)的ware_goods_id字段从int改成string类型后select查询报错

    ERROR: File '/user/hive/warehouse/page_mv/p_point_day=2019-10-21/p_point_type=1/fd4c71a99_data.0.parq' has an incompatible Parquet schema for column 'page_mv.ware_goods_id'. Column type: STRING, Parquet schema:
    optional int32 ware_goods_id [i:69 d:1 r:0]

    于是乎我改回int类型,查询恢复正常。

    ALTER TABLE test.page_mv CHANGE ware_goods_id ware_goods_id STRING;


    但是我确实需要把ware_goods_id字段类型从int改成string!!!于是我再次尝试

    ALTER TABLE test.page_mv CHANGE ware_goods_id ware_goods_id STRING;


    然后新建一张page_mv_tmp表定义里面ware_goods_id字段是string类型,

    CREATE EXTERNAL TABLE test.page_mv_tmp (                                                  
      data_key STRING COMMENT '数据键md5',                                                                                                                                 
      ware_goods_id STRING COMMENT '入库商品',                                                                                                                          
    )                                                                                                         
    PARTITIONED BY (                                                                                          
      p_point_day STRING COMMENT '日期',                                                                      
      p_point_type INT COMMENT '埋点类型'                                                                     
    )                                                                                                         
    STORED AS PARQUET                                                                                         
    LOCATION 'hdfs://nameservice1/user/hive/warehouse/test/page_mv';
    --这里可以选择指定原来的hdfs路径,也可以选择重新指定一个新的hdfs路径。因为这张是外部表只是对hdfs路径进行映射而已。

    这方面如果想了解可以参考外部表和内部表区别
    hive1.1.0建立外部表关联HDFS文件

    然后执行

    insert overwrite table test.page_mv_tmp partition(p_point_day,p_point_type)  select * from page_mv

    报错说字段类型不匹配!
     

    Expression 'page_mv.ware_goods_id' (type: INT) is not compatible with column 'ware_goods_id' (type: STRING)

    这下看来直接alter parquet表是不可能成功的

    二、解决过程

    在insert overwrite进刚才新建的page_mv_tmp时对这个ware_goods_id字段进行强转,这里用到的是impala的动态分区原理

    insert overwrite table test.page_mv_tmp partition(p_point_day,p_point_type)
    select data_key,CAST(ware_goods_id AS string),p_point_day,p_point_type from test.page_mv;

    通过这样处理把原来page_mv的数据重新导入到page_mv_tmp表中了,而且是动态分区导入到指定日期分区里面,相当于数据自己对号入座了。

    全部导入完成后对page_mv_tmp修改表名即可完成对ware_goods_id字段的类型转换(从int转到string类型)

    ALTER TABLE test.page_mv_tmp RENAME TO test.page_mv;

    总结:其实上述整个过程并不是真正的对parquet进行修改字段类型,只是新建了一张修改好字段类型的新表,然后把原来表的数据以动态分区的方式导入到新表中,再重命名为原来的表名完成的。因为parquet是parquert在存储上,做了加密,二级制存储压缩,不可以修改的,包括去hive中执行也是不行的!

    展开全文
  • Mysql修改表中字段名称、字段类型

    千次阅读 2019-08-16 19:11:14
    修改字段名称: ...修改字段类型: ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 新类型长度 新默认值 新注释; 其中column可省略 删除字段 alter table desktop drop column software_category_id ...

     

    修改字段名称:

    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;

     

    修改字段类型:

    ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 新类型长度 新默认值 新注释;  其中column可省略

     

    删除字段

    alter table desktop drop column software_category_id 

    展开全文
  • 1. 修改字段名或字段类型 hive,能增加列,不可以删除列,但可以改列名; 对于分区,要使用cascade才会对所有分区生效,否则,历史分区不会生效。 --修改字段名 alter table tablename change value1 value1_...
  • 文章目录修改思路开始操作创建模拟**插入数据添加字段将新增的字段数据补齐删除字段查看元数据查看的主键修改元数据举一反三查看信息 计划总是赶不上变化,实际...是否可以phoenix中修改字段类型和添加字...
  • Oracle修改表字段类型

    千次阅读 2017-09-05 19:41:33
    1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20)); 2、假设字段有数据,则改为nvarchar2(20)可以直接执行: alter table tb modify (name nvarchar2...
  • 1、(t_tbl)增加字段 – 添加一个名为 col_name_add 的字符字段 alter table t_tbl add column col_name_add varchar(20); 2、修改字段名 – 将 col_name_old 的字段名改为 col_name_new 的字段名 alter ...
  • 由于oracle等数据库表里有数据时无法改变字段类型,于是使用下列方法,总体思路是:备份原数据,删除数据,修改字段类型,将备份的数据导入原,删除备份,结束。 1、备份数据 create table ST_DATA_...
  • hive修改字段及字段类型

    万次阅读 2020-01-15 16:19:53
    hive修改字段类型语句:alter table 表名 change column 原字段名 新字段名 字段类型; alter table user_chain change column u_register u_registe date;(u_register原类型为string类型) 这样修改会报一个错误...
  • mysql 修改字段类型

    千次阅读 2018-02-01 11:23:06
    mysql 修改字段长度 alter table news modify column title varchar(130); alter table 表名 modify column 字段名 类型;...如:news 表里的title 字段 原来长度是 100...mysql 修改字段类型 alter table news mo
  • 参考: ... 1.修改表名称 ALTER TABLE 旧表名 RENAME TO 新表名  eg: ALTER TABLE or_sql_table RENAME TO new_table; 2.添加字段 ALTER TABLE 表名 ADD C
  • Oracle修改字段类型,把varchar2类型变成date类型 已经有数据 原来是这样的 create table export ( name varchar2(10), datetimes varchar2(50) ) 原来datetimes 时间的格式为 20090608121418 现在为方便按时时间...
  • hive 表修改字段类型

    万次阅读 2017-05-27 15:40:13
    hive> alter table tcdc_recmd_hotelsales_predict change column sales_predict at decimal(30,11);
  • Oracle更改字段类型

    2018-08-09 16:14:51
    当一个列名(字段)下有数据的时候无法直接更改列名的类型,这时可以用以下方法: 1、修改字段名name为name_tmp alter table tb rename column name to name_tmp; 2、增加一个和原字段名同名的字段name ...
  • 数据库表修改字段类型为clob会报错invalid alteration of datatype。不允许修改。可以先建个clob类型的新字段,然后把要改字段类型数据备份到新的字段中,然后删除掉旧的字段,再把新的字段列名改成旧的字段就完成了...
  • es更改字段类型

    万次阅读 2019-05-20 16:16:58
    es不能直接更改字段类型的,(如有错误,欢迎指正);所以,我一般是新建一张,字段类型换乘想要修改的字段类型,把原的数据传输到新。然后删除原,进行重建。是由点麻烦啊。。。。。 用kibana举个例子; ...
  • 1、创建语句举例 create table user (id number(6,0), name varchar2(20) ); 查看已建表 desc user; 2、向已有中添加列 alter table user add telphone number(11,0)...3、更改字段数据类型 alter table user
  • 现想将TX_Separateout 中的Comcode字段由原来的number类型修改为varchar2(20) –修改一个字段类型 alter table TX_Separateout modify comcode number; 当所修改字段下内容不为空时无法修改: 解决办法: –...
  • Sqlite如何修改表结构字段类型

    千次阅读 2014-08-22 22:43:33
    ALTER TABLE 语句的一部分功能,我们可以用 ALTER TABLE 语句来更改一个的名字,也可向中增加一个字段(列),但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型、限定符等等。...
  • 如果是里边已经有大量数据,不好清空数据再修改字段或者字段类型,可以用如下方法,亲测有效 ALTER TABLE 表名 RENAME COLUMN 字段名TO 字段名_N; ALTER TABLE 表名 ADD (字段名 字段类型); COMMENT ON COLUMN ...
  • 修改Sybase字段类型

    2020-09-11 16:55:09
    修改表AP_SYS_USERMSG中字段SESSIOINID类型为varchar alter table AP_SYS_USERMSG modify SESSIONID VARCHAR
  • ALTER TABLE tableName(表名) CHANGE COLUMN 原字段名字 新字段名字 字段类型 COMMENT '名称- 新的字段备注' 操作样例: ALTER TABLE kylin.kylin_premium_quit_actual CHANGE COLUMN sub_point_id sub_point_id ...
  • 对于Hive 的分区外部的已有分区,对表新增或者修改字段后,相关分区不生效。 原因是:元数据虽然修改成功,但是分区也会对应列的元数据,这个地方不会随的元数据修改修改. 处理办法: 有两种 第一...
  • oralce大表修改字段类型方法

    千次阅读 2013-10-26 23:51:07
    test_t字段A之前的number类型修改为varchar2 修改方式: 1 创建temp_data varchar2(100) ,(字段名称,类型根据情况自定)。 2 把表字段A赋值到temp_data中,并行update。 3 把字段A清空,并行update。 4 modify...
  • 如何批量修改数据库字段类型 select contact *** 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新...
  • 1、修改字段类型 格式:alter table 表名 modify column 字段名 类型; 实例: 将users的registerTime字段改为datetime类型; alter table users modify column registerTime datetime; 2、修改字段长度 格式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 747,574
精华内容 299,029
关键字:

在哪修改表的字段类型