<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>评论：调整新添加的列在表中的位置,调整数据库表中列的位置</title>
	<atom:link href="http://www.dbainfo.net/sybase-ase-table-newcolumn-place.htm/feed" rel="self" type="application/rss+xml" />
	<link>https://www.dbainfo.net/sybase-ase-table-newcolumn-place.htm</link>
	<description>提供Sybase ASE及Sybase SQL Anywhere数据库修复服务，电话：13811580958(微信)，QQ：289965371！We have many years of experience in recovering data from damanged Sybase devices. Contact us by Phone: +86 13811580958 Wechat: 13811580958 Email: 289965371@qq.com</description>
	<lastBuildDate>Fri, 04 Dec 2020 03:15:19 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>由：dbainfo</title>
		<link>https://www.dbainfo.net/sybase-ase-table-newcolumn-place.htm#comment-357</link>
		<dc:creator>dbainfo</dc:creator>
		<pubDate>Fri, 25 Mar 2011 10:53:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbainfo.net/?p=222#comment-357</guid>
		<description>&lt;p&gt;&lt;font color=&quot;#295200&quot; style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;oracle中更改表中列的顺序&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&#160;&lt;/p&gt;
&lt;div&gt;在Oracle中创建表后，如果想修改表的定义可以使用alter table 命令，但是如果要修改列名或调整列的顺序时，alter table 命令将无能为力。当然可以使用原始办法，[ 通过create table 临时表 as select * from 源表 ],然后把原来的表删除，再重建，然后使用 [ insert into 新表 select 列1,列2 from 临时表 ] 就可以解决了，但是这样做需要有足够大的空间。&lt;/div&gt;
&lt;div&gt;下面介绍通过修改数据字典的方法修改表的列名：&lt;/div&gt;
&lt;div&gt;假设在 HR帐号下有EMP_COPY 表(ID,NAME,DID)，现决定要修改为EMP_COPY(ID,DEPARTID,ENAME)&lt;br /&gt;
	即修改列名与顺序。&lt;br /&gt;
	步骤：&lt;/div&gt;
&lt;div&gt;1. 在HR帐号下使用下面命令查询EMP_COPY对象的编号:&lt;/div&gt;
&lt;div&gt;SQL&gt; &lt;br /&gt;
	1&#160;&#160; select OBJECT_name,object_id from all_objects&lt;br /&gt;
	2* where object_name=&#039;EMP_COPY&#039;&lt;br /&gt;
	SQL&gt; /&lt;/div&gt;
&lt;div&gt;OBJECT_NAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; OBJECT_ID&lt;br /&gt;
	------------------------------ ----------&lt;br /&gt;
	EMP_COPY&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 50555&lt;/div&gt;
&lt;div&gt;2.切换到sys帐号下&lt;/div&gt;
&lt;div&gt;SQL&gt; conn sys/password as sysdba;&lt;br /&gt;
	Connected.&lt;br /&gt;
	SQL&gt; select obj#,col#,name from col$&lt;br /&gt;
	2 where obj#=50555;&lt;/div&gt;
&lt;div&gt;&#160;&#160;&#160;&#160;&#160; OBJ#&#160;&#160;&#160;&#160;&#160;&#160; COL# NAME&lt;br /&gt;
	---------- ---------- ----------------------------&lt;br /&gt;
	&#160;&#160;&#160;&#160; 50555&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 ID&lt;br /&gt;
	&#160;&#160;&#160;&#160; 50555&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2 NAME&lt;br /&gt;
	&#160;&#160;&#160;&#160; 50555&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 3 DID&lt;/div&gt;
&lt;div&gt;Elapsed: 00:00:00.03&lt;br /&gt;
	SQL&gt;&lt;/div&gt;
&lt;div&gt;3. 下面可以通过修改这个系统表来实现修改列名与顺序，注意,COL#就是列的顺序。&lt;/div&gt;
&lt;div&gt;UPDATE COL$ SET COL#=2,name=&#039;DEPARTID&#039;&lt;br /&gt;
	WHERE OBJ#=50555 and name=&#039;DID&#039;;&lt;/div&gt;
&lt;div&gt;UPDATE COL$ SET COL#=3,name=&#039;ENAME&#039;&lt;br /&gt;
	WHERE OBJ#=50555 and name=&#039;NAME&#039;&lt;/div&gt;
&lt;div&gt;4. 再次查询&lt;/div&gt;
&lt;div&gt;SQL&gt; select obj#,col#,name from col$&lt;br /&gt;
	2 where obj#=50555;&lt;/div&gt;
&lt;div&gt;&#160;&#160;&#160;&#160;&#160; OBJ#&#160;&#160;&#160;&#160;&#160;&#160; COL# NAME&lt;br /&gt;
	---------- ---------- ------------------------------&lt;br /&gt;
	&#160;&#160;&#160;&#160; 50555&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 ID&lt;br /&gt;
	&#160;&#160;&#160;&#160; 50555&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 3 ENAME&lt;br /&gt;
	&#160;&#160;&#160;&#160; 50555&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2 DEPARTID&lt;/div&gt;
&lt;div&gt;5. 提交修改&lt;/div&gt;
&lt;div&gt;SQL&gt;commit ;&lt;/div&gt;
&lt;div&gt;6. 重启服务&lt;/div&gt;
&lt;div&gt;SQL&gt; SHUTDOWN IMMEDIATE&lt;/div&gt;
&lt;div&gt;SQL&gt;STARTUP&lt;/div&gt;
&lt;div&gt;7. 登录HR,查询SELECT * FROM EMP_COPY;&lt;/div&gt;
&lt;p&gt;SQL&gt; desc emp_copy;&lt;br /&gt;
	Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;
	-----------------------&lt;br /&gt;
	ID&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;
	DEPARTID&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;
	ENAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/p&gt;</description>
		<content:encoded><![CDATA[<p><font color="#295200" style="font-size: 14pt;"><b>oracle中更改表中列的顺序</b></font></p>
<p>&nbsp;</p>
<div>在Oracle中创建表后，如果想修改表的定义可以使用alter table 命令，但是如果要修改列名或调整列的顺序时，alter table 命令将无能为力。当然可以使用原始办法，[ 通过create table 临时表 as select * from 源表 ],然后把原来的表删除，再重建，然后使用 [ insert into 新表 select 列1,列2 from 临时表 ] 就可以解决了，但是这样做需要有足够大的空间。</div>
<div>下面介绍通过修改数据字典的方法修改表的列名：</div>
<div>假设在 HR帐号下有EMP_COPY 表(ID,NAME,DID)，现决定要修改为EMP_COPY(ID,DEPARTID,ENAME)<br />
	即修改列名与顺序。<br />
	步骤：</div>
<div>1. 在HR帐号下使用下面命令查询EMP_COPY对象的编号:</div>
<div>SQL&gt; <br />
	1&nbsp;&nbsp; select OBJECT_name,object_id from all_objects<br />
	2* where object_name=&#39;EMP_COPY&#39;<br />
	SQL&gt; /</div>
<div>OBJECT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJECT_ID<br />
	&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;-<br />
	EMP_COPY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50555</div>
<div>2.切换到sys帐号下</div>
<div>SQL&gt; conn sys/password as sysdba;<br />
	Connected.<br />
	SQL&gt; select obj#,col#,name from col$<br />
	2 where obj#=50555;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJ#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COL# NAME<br />
	&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 50555&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 ID<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 50555&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 NAME<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 50555&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 DID</div>
<div>Elapsed: 00:00:00.03<br />
	SQL&gt;</div>
<div>3. 下面可以通过修改这个系统表来实现修改列名与顺序，注意,COL#就是列的顺序。</div>
<div>UPDATE COL$ SET COL#=2,name=&#39;DEPARTID&#39;<br />
	WHERE OBJ#=50555 and name=&#39;DID&#39;;</div>
<div>UPDATE COL$ SET COL#=3,name=&#39;ENAME&#39;<br />
	WHERE OBJ#=50555 and name=&#39;NAME&#39;</div>
<div>4. 再次查询</div>
<div>SQL&gt; select obj#,col#,name from col$<br />
	2 where obj#=50555;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJ#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COL# NAME<br />
	&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 50555&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 ID<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 50555&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 ENAME<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 50555&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 DEPARTID</div>
<div>5. 提交修改</div>
<div>SQL&gt;commit ;</div>
<div>6. 重启服务</div>
<div>SQL&gt; SHUTDOWN IMMEDIATE</div>
<div>SQL&gt;STARTUP</div>
<div>7. 登录HR,查询SELECT * FROM EMP_COPY;</div>
<p>SQL&gt; desc emp_copy;<br />
	Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
	&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
	ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
	DEPARTID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
	ENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
]]></content:encoded>
	</item>
</channel>
</rss>
