`
pfwang
  • 浏览: 105762 次
社区版块
存档分类
最新评论

关于Oracle与SqlServer中获取所有字段、主键、外键的sql语句

阅读更多

关于Oracle与SqlServer中获取所有字段、主键、外键的sql语句 标签: 主键  外键  sql 
最近在做的社会网络分析原型系统需要将多种不同数据库中的表的字段、主外键信息读出,实现这些功能费了不少功夫,记录下来以备用吧
Oracle:
查询某个表中的字段名称、类型、精度、长度、是否为空
select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE
from user_tab_columns
where table_name ='YourTableName'
查询某个表中的主键字段名
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'
查询某个表中的外键字段名称、所引用表名、所应用字段名
select distinct(col.column_name),r.table_name,r.column_name
from
user_constraints con,
user_cons_columns col,
(select t2.table_name,t2.column_name,t1.r_constraint_name
 from user_constraints t1,user_cons_columns t2
 where t1.r_constraint_name=t2.constraint_name
 and t1.table_name='YourTableName'
 ) r
where con.constraint_name=col.constraint_name
and con.r_constraint_name=r.r_constraint_name
and con.table_name='YourTableName'

SQLServer中的实现:
字段:
SELECT c.name,t.name,c.xprec,c.xscale,c.isnullable
FROM systypes t,syscolumns c
WHERE t.xtype=c.xtype
AND c.id = (SELECT id FROM sysobjects WHERE name='YourTableName')
ORDER BY c.colid

主键(参考SqlServer系统存储过程sp_pkeys):
select COLUMN_NAME = convert(sysname,c.name)              
from                                                      
sysindexes i, syscolumns c, sysobjects o                  
where o.id = object_id('[YourTableName]')                 
and o.id = c.id                                           
and o.id = i.id                                           
and (i.status & 0x800) = 0x800                            
and (c.name = index_col ('[YourTableName]', i.indid,  1) or    
     c.name = index_col ('[YourTableName]', i.indid,  2) or    
     c.name = index_col ('[YourTableName]', i.indid,  3) or    
     c.name = index_col ('[YourTableName]', i.indid,  4) or    
     c.name = index_col ('[YourTableName]', i.indid,  5) or    
     c.name = index_col ('[YourTableName]', i.indid,  6) or    
     c.name = index_col ('[YourTableName]', i.indid,  7) or    
     c.name = index_col ('[YourTableName]', i.indid,  8) or    
     c.name = index_col ('[YourTableName]', i.indid,  9) or    
     c.name = index_col ('[YourTableName]', i.indid, 10) or    
     c.name = index_col ('[YourTableName]', i.indid, 11) or    
     c.name = index_col ('[YourTableName]', i.indid, 12) or    
     c.name = index_col ('[YourTableName]', i.indid, 13) or    
     c.name = index_col ('[YourTableName]', i.indid, 14) or    
     c.name = index_col ('[YourTableName]', i.indid, 15) or    
     c.name = index_col ('[YourTableName]', i.indid, 16)      
     )

外键:
select t1.name,t2.rtableName,t2.name
from
(select col.name, f.constid as temp
 from syscolumns col,sysforeignkeys f
 where f.fkeyid=col.id
 and f.fkey=col.colid
 and f.constid in
 ( select distinct(id) 
   from sysobjects
   where OBJECT_NAME(parent_obj)='YourTableName'
   and xtype='F'
  )
 ) as t1 ,
(select OBJECT_NAME(f.rkeyid) as rtableName,col.name, f.constid as temp
 from syscolumns col,sysforeignkeys f
 where f.rkeyid=col.id
 and f.rkey=col.colid
 and f.constid in
 ( select distinct(id)
   from sysobjects
   where OBJECT_NAME(parent_obj)='YourTableName'
   and xtype='F'
 )
) as t2
where t1.temp=t2.temp

 

分享到:
评论

相关推荐

    SqlServer表结构转oracle表结构

    C#代码需要查询这些视图获取注释信息,并在Oracle中使用`COMMENT ON TABLE`和`COMMENT ON COLUMN`语句添加注释。 4. **界面操作**:描述中提到的界面操作可能是指一个图形化用户界面(GUI),允许用户选择要迁移的...

    主键与外键的创建

    或者在SQL Server、Oracle和MS Access中: ```sql ALTER TABLE Persons DROP CONSTRAINT pk_PersonID; ``` **外键(Foreign Key)**是表中一个或多个字段,它们的值来自另一个表的主键,用于建立和维护两个表之间...

    sql外键的建立文档

    创建这两张表的SQL语句如下: ```sql create table A ( a_num int primary key, a_name varchar(10) ); create table B ( b_num int primary key, b_name varchar(10), a_num int, foreign key (a_num) ...

    mysql和oracle和sql语句

    "sql2000数据库表的创建.txt"可能涉及SQL Server 2000中创建表的语法,包括定义字段、数据类型、主键、外键等。 总的来说,理解并熟练掌握MySQL、Oracle和SQL Server的SQL语句对于数据库管理员和开发者来说至关重要...

    Oracle转换SqlServer

    2. **调整数据类型映射**:如果Oracle中的某些数据类型与SqlServer不兼容,可以在此步骤中手动编辑数据类型映射。 #### 四、常见问题及解决方法 在实际操作过程中,可能会遇到以下问题及其解决方案: 1. **主键与...

    通用SQL教程oracle,mysql,sqlserver

    本教程涵盖了SQL在三大主流数据库系统——Oracle、MySQL和SQL Server中的应用,旨在帮助学习者掌握通用的SQL知识,从而能够高效地进行数据查询、更新、插入和删除等操作。 在Oracle数据库中,SQL被广泛应用于数据的...

    SQL Server转换为MySQL工具

    1. 数据库结构迁移:在转换过程中,工具会分析SQL Server的表结构,包括字段名、字段类型、主键、外键、索引等,并在MySQL中创建相应的表结构。理解这些元数据的重要性在于确保目标数据库能正确地存储源数据库的数据...

    《SQL语法范例大全SQLServer·Oracle通解》配套源码.rar

    《SQL语法范例大全SQLServer·Oracle通解》是一本专为数据库管理和开发人员设计的指南,涵盖了SQL Server和Oracle两大主流数据库系统的SQL语言使用。这本书的配套源码rar文件包含了一个名为"SQL和Oracle通解.CHM"的...

    OracleScott SQL Server版

    在 SQL Server 中,我们需要使用 CREATE TABLE 语句来创建这些字段,同时考虑日期类型(Oracle 的 DATE 在 SQL Server 中可能是 DATE 或 DATETIME),数值类型(如 DECIMAL 或 FLOAT)以及字符串类型(VARCHAR)。...

    Oracle转换SqlServer[归纳].pdf

    7. **编辑数据类型映射**:如果Oracle中的列数据类型与SQL Server不匹配,可以在第五步的“编辑映射”中进行调整。 8. **问题及解决策略**: - 导入后的表可能会丢失主键或外键,需要手动创建。 - Oracle中的BLOB...

    删除数据库的所有表、存储过程、主键、外键、索引等

    4. 外键:外键是表中的字段,引用另一个表的主键,用于建立两个表之间的关系。外键约束确保了数据的一致性和参照完整性。 5. 索引:索引是数据库为了加速查询而创建的一种数据结构。它使得数据检索更快,但会占用...

    SQLServer 2005移植到oracle前提

    1. 表的创建:根据SQL Server的表结构,用CREATE TABLE语句在Oracle中创建对应的表,包括字段名、数据类型、主键、外键等。 2. 序列的创建:如果SQL Server中使用了IDENTITY字段,你需要在Oracle中创建序列来替代,...

    sqlserver与oracle数据导入操作手册

    4. **存储过程**:存储过程包含了一系列的SQL语句,它们在数据库中预编译并存储,可以视为数据库中的可执行程序。迁移存储过程时要考虑语法差异和依赖关系。 5. **应用程序**:最后是应用程序的调整,确保它能与新...

    sql数据库数据导入到oracle

    - **创建Oracle表结构**:在Oracle端创建与SQL Server中对应表结构相同的表,确保字段类型、主键、外键等一致。 - **数据导入**:使用DataMoveTool或其他工具,将转换后的数据导入到Oracle表中,可能涉及批量插入...

    骂人 脏字 过滤mysql_oracle_sqlserver数据库.txt

    根据提供的文件信息,本文将详细解析“骂人脏字过滤mysql_oracle_sqlserver数据库”的相关知识点,主要包括数据库设计、敏感词库构建以及过滤机制等方面。 ### 数据库设计 #### 表结构定义 根据文件中的SQL语句,...

    SQLServer开发人员应聘经常问到的问题

    在IT行业中,SQL Server开发人员扮演着重要的角色,因此在招聘过程中,面试官经常会针对SQL Server的相关知识和技术进行深入提问。以下是一些常见的面试问题及其解答,旨在帮助应聘者更好地准备面试。 #### 1. SQL ...

    oracle sql调优原则

    - **SQL语句大小写**:Oracle默认会将小写字母转换为大写,因此建议直接使用大写来编写SQL语句。 - **使用表别名**:在连接多个表时使用表别名,并在每个列前加上别名前缀。这样可以减少解析时间,并减少由列名歧义...

    SQL语句汇总.pdf

    标题《SQL语句汇总.pdf》所代表的知识点覆盖了数据库操作的基础与高级内容,其详细描述了从创建数据库开始到创建表、管理表结构,以及数据的增删改查等SQL语句的运用。以下为详细知识点: 1. 数据库的创建与删除: ...

    SQL SERVER命令大全SQL-选择

    - 企业管理器用于综合管理,查询分析器用于执行Transact-SQL语句。 15. **许可模式**: - 面向大量用户,一般采用处理器许可证模式。 16. **SQL Server 2000企业版特性**: - 在Windows Server 2003企业版上...

    SQL Server综合性实验报告

    ### SQL Server综合性实验报告知识点解析 #### 一、实验背景及目标 本次实验是华北科技学院计算机学院开设的《网络数据库》课程中的一个重要组成部分。实验报告由2013级计算B132班的学生杨卫冲完成,指导教师为...

Global site tag (gtag.js) - Google Analytics