Oracle和SqlServer系统表操作差异对比

一、 Oracle知识点记录

1. 存放所有对象的视图 all_objects

2. 存放所有表的字段的视图 all_tab_columns

3. 在命令行下执行脚本时记录执行日志?

4. 出现“ORA-12704: 字符集不匹配”的错误,可以尝试在字符串前添加一个“N”解决

5. 出现“ORA-00932”的错误,可以尝试将Clob类型通过to_char函数转换为char类型解决

6. 判断字符串是否为空的方法:if str is null;而不是 if str=’’

二、 常用系统表对比

对象

SQLSERVER

ORACLE

查询所有表

select [name] from sysobjects where type='U' order by [name]

select OBJECT_NAME from obj where OBJECT_TYPE = 'TABLE' order by OBJECT_NAME

判断是否有自增长列

select COUNT(*) from syscolumns where id=object_id('Admin') and status=0x80

 

查找指定表的外键名称

SELECT s.name FROM sysobjects s WHERE s.parent_obj=object_id('{0}') AND (s.xtype='F' OR s.xtype='PK')

select constraint_name from user_constraints where table_name='{0}' and (constraint_type='P' or constraint_type='R')

判断指定的表是否有自增长列

select COUNT(*) from syscolumns where id=object_id('{0}') and status=0x80

select count(*) from dba_sequences where sequence_name like '{0}_%'

查询一个表的所有列名

select name from syscolumns where id=object_id(‘表名’)

select count(*) from syscolumns where id=object_id(‘表名’)

SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = ‘T_PROPERTY’ ORDER BY COLUMN_ID

SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = ‘T_PROPERTY’ ORDER BY COLUMN_ID

查询当前登录用户

 

select * from user_users

查询某个表中的主键字段名

SELECT name FROM SysColumns WHERE id=Object_Id('Area') and colid=(select top 1 colid from sysindexkeys where id=Object_Id('Area'))

select col.column_name
from user_constraints con,  user_cons_columns col
where con.constraint_name = col.constraint_name
and con.constraint_type=’P’
and col.table_name = ‘YourTableName’

对表的字段的增删改

 

-- 增加字段

alter table ADMIN add COLUMN4 varchar2(20);

--增加字段并设置默认值

alter table ADMIN add COLUMN5 timestamp default sysdate;

-- 修改字段为非空

alter table ADMIN modify COLUMN4 not null;

-- 修改数据类型

alter table ADMIN modify COLUMN4 number;

-- 既修改数据类型有修改字段非空

alter table ADMIN modify COLUMN4 number not null;

-- 增加默认值

alter table ADMIN modify COLUMN4 default 12;

编译/刷新视图(存储过程)

EXEC sp_refreshview @viewName;

--只能编译视图,不能起到刷新的效果,因为视图中的*被替换成了所有的字段了

ALTER VIEW vpage COMPILE;
ALTER PROCEDURE  gcps_execsql COMPILE;

三、 数据类型对照表

SqlServer

Oracle

 

ID

number

 

长名称

Varchar2(254)

 

布尔

Number

 

URL

Varchar2(254)

 

整数

Number

 

长整型

Number

 

数字

Number

 

枚举

Varchar2(254)

 

Number

 

万元

Number

 

Number

 

日期

timestamp

 

时间

timestamp

 

年月

Varchar2(10)

 

Email

Varchar2(254)

 

GUID

Varchar2(40)

 

HTML

clob

 

手机

Varchar2(20)

 

文件名

Varchar2(254)

 

身份证号

Varchar2(20)

 

层次码6

Varchar2(6)

 

层次码8

Varchar2(8)

 

短名称

Varchar2(20)

 

名称40

Varchar2(40)

 

文2000

Varchar2(2000)

 

备注

clob

posted on 2012-03-16 17:23  onlyfew  阅读(550)  评论(1编辑  收藏  举报

导航