首页 > 数据库 >Oracle修改表列名与顺序的解决方案 (sql 修改列名)

Oracle修改表列名与顺序的解决方案 (sql 修改列名)

时间:2023-07-03 16:37:21浏览次数:39  
标签:49214 NAME STU -- 列名 SQL 修改 sql ----------


Oracle 10g 修改表列名与顺序的解决方案- 下面介绍通过修改数值字典的方法修改表的列名:
 
 假设在 SCOTT帐号下有HB_TEST 表:
--------------------------------------------------------------------

--目的:调换STU_ID和STU_NAME的顺序;并把STU_ID 改为S_ID;
SQL>SELECT * FROM HB_TEST;

/**
    STU_ID STU_NAME   CRO_NAME        GRADE
---------- ---------- ---------- ----------
         1 张三       语文               68
         2 李四       语文               88
         3 王五       语文               72
         4 小张       语文               65
         1 张三       数学               90
         2 李四       数学               62
         3 王五       数学               94
         4 小张       数学               75
         1 张三       物理               50
         2 李四       物理               60
         3 王五       物理               70
         4 小张       物理               80
*/

--第一步:

SQL>select OBJECT_name,object_id from all_objects
    2 where object_name='HB_TEST';

/**

OBJECT_NAME                     OBJECT_ID
------------------------------ ----------
HB_TEST                             49214

*/

--第二步:切换到sys帐号下

SQL>conn / as sysdba;

--第三步:

SQL>select obj#,col#,name from col$ where obj#=49214;

/**
      OBJ#       COL# NAME
---------- ---------- ----------
     49214          1 STU_ID
     49214          2 STU_NAME
     49214          3 CRO_NAME
     49214          4 GRADE   
*/

--第四步: 下面可以通过修改这个系统表来使成为事实修改列名与顺序,注意,COL#就是列的顺序。

SQL>UPDATE COL$ SET COL#=2,name='S_ID'
   2 WHERE OBJ#=49214 and name='STU_ID';

/**
     OBJ#       COL# NAME
--------- ---------- ---------
    49214          2 S_ID
    49214          2 STU_NAME
    49214          3 CRO_NAME
    49214          4 GRADE
*/

--再更新STU_NAME 的col# 的值;

SQL>UPDATE COL$ SET COL#=1,name='STU_NAME'
    2 WHERE OBJ#=49214 and name='STU_NAME';
 
--第五步:再次查询

SQL>select obj#,col#,name from col$ where obj#=49214;

/**
      OBJ#       COL# NAME
--------- ---------- --------
    49214          2 S_ID
    49214          1 STU_NAME
    49214          3 CRO_NAME
    49214          4 GRADE
*/  
   
--第六步:提交修改

SQL>commit;

--第七步: 重启服务

SQL>SHUTDOWN IMMEDIATE; --关闭
SQL>STARTUP;     --开启

--第八步:登录SCOTT账号,查询

SQL>SELECT * FROM HB_TEST;

/**

STU_NAME         S_ID CRO_NAME        GRADE
---------- ---------- ---------- ----------
张三                1 语文               68
李四                2 语文               88
王五                3 语文               72
小张                4 语文               65
张三                1 数学               90
李四                2 数学               62
王五                3 数学               94
小张                4 数学               75
张三                1 物理               50
李四                2 物理               60
王五                3 物理               70
小张                4 物理               80

*/

--第九步:查看表结构

SQL>desc HB_TEST;

/**
名称
--------------
STU_NAME
S_ID
CRO_NAME
GRADE
*/


--------------------------------------------------------------------
还有一种方法:

  如果创建表好了后,想修改表的定义可以使用alter table 命令,但是如果要修改列名或调整列的顺序时,alter table 命令将无能为力。当然可以使用原始措施,通过(create table 临时表 as select * from 源表 ),之后把原来的表删除,再重修,之后使用  (insert into 新表 select 列1,列2 from 临时表 ) 就能够处理完成了,但是这样做需要有足够大的空间。

标签:49214,NAME,STU,--,列名,SQL,修改,sql,----------
From: https://blog.51cto.com/u_16174476/6612635

相关文章

  • Transact-SQL (T-SQL)
     http://en.wikipedia.org/wiki/Transact-SQLTransact-SQLFromWikipedia,thefreeencyclopediaJumpto:navigation,searchTransact-SQL(T-SQL)isMicrosoft'sandSybase'sproprietaryextensiontoSQL.SQL,oftenexpanded......
  • MYSQL数据库转DM达梦数据库函数替换及注意事项
    1、调整IF函数为 case 函数MYSQL: IF(condition, value_if_true, value_if_false) if(a.class_sort_code='0301',(selectgroup_concat(sku_attr_id)sku_Attrfroma_sku_attr_relaWHEREmodel_id=a.model_idorderbysku_attr_id),'')sku_attrD......
  • pgsql 搭建
    1.yum安装yuminstall-yhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmyuminstall-ypostgresql12-server2.启动pgsql/usr/pgsql-12/bin/postgresql-12-setupinitdbsystemctlenablepostgresql-12system......
  • java8发送邮件失败, 修改jdk镜像中的java.security文件
    背景原本部署环境中的java:8镜像在检查问题删除,用dockerpullopenjdk:8重新拉取并改名java:8,在重新部署后,发送邮件报错:javax.net.ssl.SSLHandshakeException:Noappropriateprotocol(protocolisdisabledorciphersuitesareinappropriate)!!!原因根本原因是j......
  • mysql 配置主从复制
    推荐编译安装,但是太麻烦了,所以直接docker安装。参考https://blog.csdn.net/abcde123_123/article/details/106244181https://www.cnblogs.com/songwenjie/p/9371422.html拉取镜像推荐使用mysql5.7dockerpullmysql:5.7.39启动两个服务https://zhuanlan.zhihu.com/......
  • MySQL数据迁移
    前言在进行迁移时,源mysql的配置和目标mysql的配置应尽量保持一致迁移所有数据库迁移前,源端有以下数据库:迁移前,目标端有以下数据库目标端是刚安装好的mysql,默认就有上图中的4个库,源端比目标端多了一个dan库在源端备份所有数据库[root@target_pcdatabasefile]# mysql......
  • Mysql基础篇(四)之事务
    一.事务简介事务是一组操作的集合,它是一个不可分隔的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。就比如:张三给李四转账1000块钱,张三银行账户的钱减少了1000,而李四银行账户的钱要增加1000。这一组操作就必须在一......
  • SQL
    增insertintotable(字段名1,字段2)values(值1,值2);改update表名set字段1=值1,字段2=值2【where条件】;删deletefrom表名[where条件];查select字段from表名where条件列表groupby分组字段列表having分组后的条件列表orderby排序字段列表limit分页参数去除重复记录select......
  • 完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力
    摘要:DynamoDB是一款托管式的NoSQL数据库服务,支持多种数据模型,广泛应用于电商、社交媒体、游戏、IoT等场景。本文分享自华为云社区《完全兼容DynamoDB协议!GaussDB(forCassandra)为NoSQL注入新活力》,作者:GaussDB数据库。DynamoDB是一款托管式的NoSQL数据库服务,支持多种数据模型......
  • Flask SQLALCHEMY Model 模型
    FlaskSQLALCHEMYModel模型classPerson(db.Model): __tablename__='person' id=db.Column(db.Integer,primary_key=True) name=db.Column(db.string(16),unique=True) def__repr__(self):return'<User{}>'.format(self......