十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
col 是用来定义列的宽度
成都创新互联网站建设公司,提供成都做网站、网站设计,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
set 用来进行设置
比如查询一个T_CUST表,里面有字段CUST_NAME varchar2(64),EMAIL varchar2(64)。
数据30条。
如果在sqlplus 里面直接用select cust_name , email from t_cust
oracle默认是10条数据一页,30条数据那么会出现多个表头。并且cust_name 可能会占用太宽的位置。
可以用以下方式,让显示的效果跟好。
set pagesize 100 linesize 1000 -- 设置每页显示100条记录 每行长度为1000
col cust_name for a8
select cust_name , email from t_cust
你可以对比一下显示的结果
分为两步来实现,首先插入数据,假设表T,有字段col1,col2,col3,需要向前200行的col2插入行数+1的值,并将col2变为第一列,
插入数据有两种方法:
1》直接update即:UPDATE T SET T.COL2 = ROWNUM + 1 WHERE ROWNUM =200;
2》写一个存储过程
CREATE OR REPLACE PROCEDURE INS IS
BEGIN
FOR I IN 1 .. 200 LOOP
INSERT INTO T (COL2) VALUES (I);
END LOOP;
COMMIT;
END;
编译并运行该过程,插入列即完成。
下面将COL2列调整为第一列:
方法一:借用临时表,建temp表与t表的表结构、数据完全一致,重建t表,调整字段顺序,再将temp表的数据导回来,即
CREATE TABLE TEMP AS SELECT * FROM T;
CREATE TABLE T(
COL2 TYPE,
COL1 TYPE,
COL3 TYPE
);
INSERT INTO T
SELECT COL2,COL1,COL3 FROM TEMP;
COMMIT;
DROP TABLE TEMP;
此方法需要足够的空间、回滚段和时间消耗
方法2:利用数据库表对象更新字段的序列号
在当前表用户下使用下面命令查询T对象的编号:
select OBJECT_name,object_id from all_objects where object_name='T';(注意一定要大写)
SQL /
OBJECT_NAME OBJECT_ID
------------------------------ ----------
T 50555
切换到sys帐号下
select obj#,col#,name from col$ where obj#=50555;
OBJ# COL# NAME
---------- ---------- ----------------------------
50555 1 COL1
50555 2 COL2
50555 3 COL3
Elapsed: 00:00:00.03
下面可以通过修改这个系统表来实现修改列名与顺序,注意,COL#就是列的顺序。
UPDATE COL$ SET COL#=2 WHERE OBJ#=50555 and name='COL1';
UPDATE COL$ SET COL#=1 WHERE OBJ#=50555 and name='COL2';
再次查询
select obj#,col#,name from col$ where obj#=50555;
OBJ# COL# NAME
---------- ---------- ------------------------------
50555 1 COL2
50555 2 COL1
50555 2 COL3
提交修改commit ;
重启服务
SQL SHUTDOWN IMMEDIATE
SQLSTARTUP
重新登录表用户下,查询SELECT * FROM T;
COL2 COL1 COL3
至此列顺序调整成功
是指sqlplus的查询输出格式?
这个没多大用product\12.2.0\dbhome_1\sqlplus\admin 里面有个glogin.sql能改全局设定 但没啥意义