Oracle中修改表列名,用SQL语句的方式

2023-05-16

下面介绍两种 在Oracle中修改表的列名的方式。

一、(在sqlplus工具下)使用如下命令:

       alter table <table_name>  rename column <column_old_name> to <columne_new_name>;

 

注释:

1、博友一说:9i 以下版本应该没有这条命令,9i以上不知道。
2、博友二说:可以用如下办法达到修改表列名的目的:在表上添加一个新列,该新列的列名就是你想取的那个列名,之后用你想修改它列名的那个列下的数据插入到该新列中,最好删除你想修改它列名的那个列。
3、博友三说:8i以下版本只能用重新建一个新表的办法:
先修改表名: alter table <table_name> rename a to b;               //这里 <table_name> 为a

再以原来表名创建一个新表:create table a (..,new_col_name,..) as select ..,old_col_name,..) from b;

顺便说下,如果 alter table a rename  to b;     写成了alter table a rename a to b;     ,则会提示如下:

ERROR 位于第 1 行:
ORA-14155: PARTITION 或 SUBPARTITION 关键字丢失


由此看出,
如果表a不是分区表,那么就不能写成alter table a rename a to b;这个样子。
如果表a是分区表,   那么就可以写成alter table a rename a to b;这个样子,但是得加上关键字PARTITION 或 SUBPARTITION,即
alter table a rename  PARTITION  c to b;
,其中c是分区表a上一个分区的名字。




 

二、使用存储过程sp_rename修改列名及表名

sql 修改列名及表名 sp_rename

sql 修改列名及表名

因需求变更要改表的列名,平常都是跑到Enterprise manager中选取服务器->数据库->表,然后修改表,这样太麻烦了,查了一下,可以用script搞定, 
代码如下: 
EXEC sp_rename '表名.[原列名]', '新列名', 'column' 

****************************************************************************************************** 
Transact-SQL 参考 


sp_rename 
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。 


语法 
sp_rename [ @objname = ] 'object_name' ,  [ @newname = ] 'new_name'  [ , [ @objtype = ] 'object_type' ]

注释:

被方括号围起来的内容,表示在写sp_rename命令时可以省略,即这里诸如@objname =的参数名可以不用写。

参数 
[@objname =] 'object_name' 

用户对象(表、视图、列、存储过程、触发器、默认值、数据库、对象或规则)或数据类型的当前名称。

如果要重命名的对象是表中的一列,那么 object_name 必须为 table.column 形式。如果要重命名的是索引,那么 object_name 必须为 table.index 形式。

参数object_name 为 nvarchar(776) 类型,无默认值。 



[@newname =] 'new_name' 

是指定对象的新名称。new_name 必须是名称的一部分,并且要遵循标识符的规则。

参数newname 是 sysname 类型,无默认值。 



[@objtype =] 'object_type' 

是要重命名的对象的类型。

参数object_type 为 varchar(13) 类型,其默认值为 NULL,可取下列值。 

值 描述 
COLUMN         要重命名的列。 


DATABASE      用户定义的数据库。要重命名数据库时需用此选项。 


INDEX              用户定义的索引。 


OBJECT          在 sysobjects(表)中跟踪的类型的项目。

                         例如,OBJECT 可用来重命名约束(CHECK、FOREIGN KEY、PRIMARY/UNIQUE KEY)、用户表、视图、存储过程、触发器和规则等对象。 
USERDATATYPE              即通过执行 sp_addtype 而添加的用户定义数据类型。 


返回代码值 
0(成功)或非零数字(失败) 


注释 
只能更改当前数据库中的对象名称或数据类型名称。大多数系统数据类型和系统对象的名称不能更改。 

重命名视图时,sysobjects 表中有关该视图的信息将得到更新。重命名存储过程时,sysobjects 表中有关该过程的信息将得到更新。 

每当重命名 PRIMARY KEY 或 UNIQUE 约束时,sp_rename 都会自动为相关联的索引重命名。如果重命名的索引与 PRIMARY KEY 约束相关联,那么 sp_rename 也会自动重命名主键。 



重要  重命名存储过程和视图后,请清空过程高速缓存以确保所有相关的存储过程和视图都重新编译。 


由于存储过程和视图都不存储数据,所以这两种对象均可快速删除和重建。重命名文本对象时,要获得最佳结果,应删除并使用其新名称重新创建对象。 



权限 
sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员或对象所有者可以执行 sp_rename。

只有 sysadmin 和 dbcreator 固定服务器角色成员才能将"database"作为 object_type 来执行 sp_rename。 



示例 
A. 重命名表 
下例将表 customers 重命名为 custs。 

EXEC sp_rename 'customers', 'custs' 

B. 重命名列 
下例将表 customers 中的列 contact title 重命名为 title。 

EXEC sp_rename 'customers.[contact title]', 'title', 'COLUMN'             //列名中含有空格,则在执行sp_rename时要将列名用方括号[]围起来表示做一个整体


请参见 

ALTER TABLE 

CREATE DEFAULT 

CREATE PROCEDURE 

CREATE RULE 

CREATE TABLE 

CREATE TRIGGER 

CREATE VIEW 

数据类型 

SETUSER 

sp_addtype 

sp_depends 

sp_renamedb 

系统存储过程

 

参考:

本文所用的修改表列名的方式是一个集成操作,执行本文所说的方式的具体过程,其实质是在做《如何在数据字典中修改Oracle的表列名》里提到的那些内部修改操作。即本文的操作是表象,《如何在数据字典中修改Oracle的表列名》中所做的操作才是本质。

如何在数据字典中修改Oracle的表列名


sysobjects 表是什么?


下面两种方式将表 customers 中名叫123 的列重命名为 title:

1、alter table customers  rename column “123” to title ;



2、EXEC sp_rename 'customers.123', 'title', 'COLUMN'  

由此看出:

双引号引起的内容只能用于表示诸如表的表名和列名等数据库对象的一些标识符(即就是数据库对象名等),而不是表示一个字符串,所以双引号适用的范围是SQL语句中,SQL语句包括DDL(create、alter、drop)、DML、DQL、DCL中,即只能在SQL语句上使用。当然,在SQL语句上,表名或列名等也可以不加双引号的,类似于程序源码中的变量名那样。表名或列名等如果加了双引号后,双引号内的字符是区分大小写的,而表名或列名等存在数据字典中是大写的形式存的,所以如果你写的表名里含有小写字符,且又加了双引号,则该表名在在数据字典中是找不到的。

单引号引起的内容则表示是一个字符串,单引号适用的范围是如存储过程、函数等的参数中、字符串变量等,还有就是SQL语句中双引号适用的位置外的其他位置。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle中修改表列名,用SQL语句的方式 的相关文章

随机推荐

  • Unity Android 加载动态库

    前言 在接入360 Android SDK时遇到在有些机型的Android机器上报错 xff0c 具体错误提示为 xff1a Failure to initialize Your hardware does not support this
  • 德鲁克谈《自我管理》笔记摘要

    一 我的长处是什么 多数人都以为他们知道自己擅长什么 xff0c 其实不然 要发现自己的长处 xff0c 唯一的途径就是分析回馈法 写下自己预期的结果 9 12个月后 xff0c 将实际结果和预期比较 总结改善自己的预期和行动 我们要以持之
  • ubuntu下搭建cocos2dx编程环境-上

    这大半年一直在开发flash游戏 xff0c 用到的编程语言是actionscript和c 43 43 所以这次公司决定开发手游端的话 xff0c C 43 43 不是很生疏 xff0c 这是个好消息 坏消息是由于现在网页游戏还没有上线 x
  • ubuntu 系统上安装python3.6

    今天再ubuntu系统上安装python3 6 xff0c 之前版本是python 2 7版本 具体安装步骤如下 xff1a 1 sudo apt get update 2 sudo apt get install software pro
  • 用matlab实现图片的缩放

    i 61 imread 39 qiegray jpg 39 j 61 imresize i 0 5 imshow i figure imshow j
  • VR系统的组成与交互技术汇总

    今天给大家介绍一下VR系统的组成与当前一些VR交互技术 xff0c 希望大家对VR有更深的理解 一个典型的虚拟现实系统主要由计算机 输入输出设备 虚拟现实设计 浏览软件等组成 用户以计算机为核心 xff0c 通过输入输出设备与应用软件的虚拟
  • 百度云python客户端bypy的上传命令(upload)

    命令 xff1a bypy upload localfile cloudfile 说明 xff1a 1 xff09 localfile为本地文件路径 2 xff09 cloudfile为云端文件路径 3 xff09 由于百度的限制 xff0
  • 【Github】git bash无法复制粘贴

    参考教程https www cnblogs com slw0113 p 15602715 html 使用git bash时只能使用手工敲击所有命令 xff0c 非常不方便 1 在屏幕右键打开git bash命令窗口 2 在左上角右键 xff
  • python编码与反编码 decode('unicode-escape')

    反编码 我自己起的名字 xff0c 大概意思就是我得到一串字符 xff0c 是unicode码 xff0c 如 xff1a u53eb u6211 xff0c 进行反编码后得到其对应的汉字 f 61 39 u53eb u6211 39 pr
  • (11)jsp+servlet编程实战《猜数字游戏》

    使用JSP技术实现猜数字游戏 设计一个web app xff0c 每次产生一个30以内的数字 xff0c 给5次机会让客户猜测这个数字 xff1a 1 xff09 如果客户猜的数字比产生的数字值大 xff0c 则提示 可惜 xff0c 大了
  • Spark2.0 shell使用python3

    spark2 0 shell默认使用的是python2 xff0c 如果想用python3作为默认shell xff0c 那么只需要修改 spark home bin pyspark文件下的配置即可 span class token com
  • 五分钟教你搭建 Typecho个人博客

    五分钟教你搭建 Typecho 个人博客 简介 本教程将会教会你如何使用阿里云服务器添加一条A记录 xff0c 部署博客程序源码 xff0c 最后搭建一个属于自己的博客 xff0c 新手小白必备 xff01 关于 Typecho 仅仅 7
  • Typora 设置上传图片功能

    Typora 设置上传图片功能 准备工作 安装 Picgo安装 Typora配置好自己的图床 以上步骤可参考我以前的文章 如何使用 picgo 搭建个人图床 Typora 设置自动上传插入图片功能 xff0c 实现 61 61 截屏 xff
  • 为什么要用到二进制?

    进制及其转换 为什么要用到二进制 xff1f 数字电路非常广泛 xff0c 小到逻辑门电路 xff0c 大到超大规模集成电路 xff0c 手机 xff0c 电脑 xff0c 智能设备 数字信号即可以表示数字 xff0c 也可以表示非数值的信
  • Github student package 申请过程

    Github学生包优惠 验证教育邮箱 进入官网 填写资料 填写材料时 xff0c 务必如实填写 最好添加一个教育邮箱 xff0c 也就是将你的教育邮箱绑定giehub账号 xff0c 如第一张图所示 填写资料的中途可能要上传附件 xff0c
  • 解决 python2 下 pip 命令报错

    问题背景 没有 pip 模块 xff0c 那就下载一个 pip 包 当前最新版 setuptools 51 3 1 在 setuptools 51 3 1 路径下打开 cmd xff0c 使用 python setup py install
  • 字符串计数函数 python 读取列表字符串

    函数要有通用性 xff0c 可输入任意个字符串 xff0c 逐个检查 定义 字符串计数函数 xff0c 分别对数字 字母 空格逐个检查计数 xff0c 其余字符另外计数 def str count args str 61 for i in
  • 解决wordpress安装主题或插件需要FTP问题

    如果该方法不行 xff0c 可参考另外一篇博文 xff1a http blog csdn net qq 32846595 article details 54766833 很多人在使用WordPress安装主题或插件时都要求填写FTP账号和
  • PreferenceActivity中,Header是如何被加载的?

    转载请注明出处 xff1a http blog csdn net droyon article details 17798697 本文主要回答下面这个问题 xff1a Android中 xff0c Header是如何被PreferenceA
  • Oracle中修改表列名,用SQL语句的方式

    下面介绍两种 在Oracle中修改表的列名的方式 一 xff08 在sqlplus工具下 xff09 使用如下命令 xff1a alter table lt table name gt rename column lt column old