SQL系列学习(三) 获取Oracle、SqlServer、Access中表名、字段和主键

摘要:
1、 Oracle 1.获取当前Oracle数据库中所有选定的表_ namefrom_Tables2。查询字段名称、类型、精度、长度以及是否为空selectCOLUMN in a table _ name、DATA_ type、DATA_ precision、DATA_ SCALE、NULLABLE from user_ tab_ columnswhere table_ name='YourTableName'3

一、oracle

1、获取当前oracle数据库中的所有表

select table_name from user_tables

2、查询某个表中的字段名称、类型、精度、长度、是否为空  

select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE    
from user_tab_columns    
where table_name ='YourTableName'  

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

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'  

4、查询某个表中的外键字段名称、所引用表名、所应用字段名  

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

1、读取库中的所有表名

select name from sysobjects where xtype='u' 

2、字段 

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   

3、主键(参考SqlServer系统存储过程sp_pkeys)  

SQL系列学习(三) 获取Oracle、SqlServer、Access中表名、字段和主键第1张SQL系列学习(三) 获取Oracle、SqlServer、Access中表名、字段和主键第2张
SELECT     
表名=case 
when a.colorder=1 then d.name else '' end,     
字段名=a.name,     
标识=case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '' else '' end,     
主键=case when exists(SELECT 1 FROM sysobjects where xtype= 'PK' and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid ))) then '' else '' end,     
类型=b.name,     
占用字节数=a.length,     
长度=COLUMNPROPERTY(a.id,a.name, 'PRECISION'),     
小数位数=isnull(COLUMNPROPERTY(a.id,a.name, 'Scale'),0),     
允许空=case when a.isnullable=1 then ''else '' end,     
默认值=isnull(e.text, ''),     
字段说明=isnull(g.[value], '') 
FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on 
a.id=d.id 
and d.xtype= 'U' 
and d.name <> 'dtproperties' 
--and d.name = '要查询的表名'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id 
and a.colid=g.minor_id 
and g.name='MS_Description' 
order by a.id,a.colorder 
View Code

4、外键  

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

三、Access

1、所有表清单

conn.Open();     
dt= conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

2、表结构

conn.Open();

dtColumnsInfo = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, strTableName,null });

免责声明:文章转载自《SQL系列学习(三) 获取Oracle、SqlServer、Access中表名、字段和主键》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用WIFI准备工作及配置内核——韦东山(转载)c# winform comboBox的常用一些属性和用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle11g dataguard部署指南

一、Oracle11DB+DG配置 1. 单机环境介绍(PRIMARY DATABASE)主库primary public ip 192.168.0.252instanceoracledb_name oraclestorage mode /orasjrz/crds3db/oradata /orasjrz/crds3db/oraarch 2. 单机环境介绍(...

Vba+access+Excel编程

学习目的是建立简易的管理系统 当前学习路线:excel的宏的简单了解→access数据库的了解→两者的结合 excel的宏的简单了解: 关于宏的使用,大部分文章都提到说Vba很难写,但是可以通过一段现成的代码,修改关键部分来为自己所用,现成代码的获得方式就是录制宏,在其自动生成的代码上添加循环等修改,达到自己想要的效果。 关于宏的录制与代码的修改运行如下:...

浅谈 SQL 注入(注入篇)

一、SQL注入简介 1.1 什么是SQL注入 在用户可控制的参数上过滤不严或没有任何限制,使得用户将传入的参数(如URL,表单,http header)与SQL语句合并构成一条 SQL语句传递给web服务器,最终传递给数据库执行增删改查等操作,并基于此获取数据库数据或提权进行破坏。 1.2 SQL注入产生的原因 SQL Injection: 程序员在编写代...

SQL SERVER 2019新功能

1、错误代码行 BEGIN TRY    SELECT 1/0END TRYBEGIN CATCH    THROW END CATCH2、二进制截断列名值 create table #ls(a varchar(1))insert into #ls values('abc') 符串或二进制数据将在表“tempdb.dbo.#ls_00000000005B”...

MySQL 通配符学习小结

MySQL 通配符 SQL的模式匹配同意你使用“_”匹配不论什么单个字符,而“%”匹配随意数目字符(包含零个字符)。在 MySQL中,SQL的模式缺省是忽略大写和小写的。以下显示一些样例。 注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比較操作符。 为了找出以“b”开头的名字: mysql>...

[转]oracle在删除表表空间用户时,如何释放磁盘空间

一、drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。 通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句 flashback table...