关于自定义代码生成器(续)---SQL2008查询数据库字段主键,外键,唯一键等相关属性
来源:互联网 发布:squid与nginx 编辑:程序博客网 时间:2024/05/17 16:15
2. 查询字段名,表名,架构名,序号,是否主键,是否外键,是否唯一键,是否为空,是否自动增长,默认值,字段类型,大小,长度,小数位数,相关属性
select a.*,isnull(b.rtable,'0') as RefTable,isnull(b.rname,'0') as RefName from (SELECT d.name as TableName,--如果表名相同就返回空 a.colorder as ID, --字段序号 a.name as Name, --字段名 (case when COLUMNPROPERTY( a.id,a.name, 'IsIdentity' )=1 then 1 else 0 end) as DbIdentity,--自动增长 (case when (SELECT count(*) FROM sysobjects--查询主键 WHERE (name in (SELECT name FROM sysindexes WHERE (id = a.id) AND (indid in (SELECT indid FROM sysindexkeys WHERE (id = a.id) AND (colid in (SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name)) ))))) AND (xtype = 'PK' ))>0 then 1 else 0 end) as PK,--查询主键END (case when(select count(*) from (select OBJECT_NAME(f.fkeyid) as fname, col.name, f.constid as tempfrom syscolumns col,sysforeignkeys f where f.fkeyid=col.idand f.fkey=col.colid) ft where ft.fname = d.name and ft.name=a.name)>0 then 1 else 0 end) as FK, --查询外键(case when(select count(COLUMN_NAME) from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME in (SELECT name FROM sys.key_constraints where object_name(parent_object_id)=d.name AND type='UQ') and COLUMN_NAME=a.name)>0 then 1 else 0 end) as UQ,--查询唯一键b.name as DbType,--字段类型 a.length as DbLength,--占用字节数(select TOP 1 TABLE_SCHEMA from information_schema.COLUMNS WHERE TABLE_NAME=d.name) as TableSchema,--架构COLUMNPROPERTY(a.id,a.name,'PRECISION' ) as DbPrecision, -- 长度isnull(COLUMNPROPERTY(a.id,a.name,'Scale' ),0) as DbScale, -- 小数位数(case when a.isnullable=1 then 1 else 0 end) as DbNull, --允许空isnull(e.text,'' ) as DefaultValue --默认值FROM syscolumns a left join systypes bon a.xtype=b.xusertypeinner join sysobjects d on a.id=d.id and d.name<> 'dtproperties' left join syscomments e on a.cdefault=e.id left join sys.extended_properties gon a.id=g.major_id AND a.colid = g.minor_id where d.name like'TestData' and SCHEMA_NAME(d.uid)='TestSchema' --所要查询的表和所在的架构)aleft join ( select a.*,b.fname from (select OBJECT_NAME(rkeyid) rtable,col.name rname,OBJECT_NAME(fkeyid) ftable from sysforeignkeys f inner join syscolumns col on f.rkeyid=col.id and f.rkey=col.colid and OBJECT_NAME(fkeyid)='表名') a inner join (select OBJECT_NAME(rkeyid) rtable,col.name fname,OBJECT_NAME(fkeyid) ftable from sysforeignkeys f inner join syscolumns col on f.fkeyid=col.id and f.fkey=col.colid and OBJECT_NAME(fkeyid)='表名') b on a.rtable=b.rtable)bon a.tablename = b.ftable and a.name = b.fnameorder by replace(a.Name,'_','')
2. 查询表相关主外键属性:主表,主表字段,外表,外表字段
select * from (select a.*,b.fname from (select OBJECT_NAME(rkeyid) rtable,col.name rname,OBJECT_NAME(fkeyid) ftable from sysforeignkeys f inner join syscolumns col on f.rkeyid=col.id and f.rkey=col.colid) a right join (select OBJECT_NAME(rkeyid) rtable,col.name fname,OBJECT_NAME(fkeyid) ftable from sysforeignkeys f inner join syscolumns col on f.fkeyid=col.id and f.fkey=col.colid) b on a.rtable=b.rtable and a.ftable=b.ftable) a order by ftable
- 关于自定义代码生成器(续)---SQL2008查询数据库字段主键,外键,唯一键等相关属性
- 查询数据库字段主键,外键,唯一键等相关属性
- oracle查询表 索引、唯一约束、字段等相关信息
- 数据库主键生成器java代码
- 全局唯一主键生成器
- 关于自定义代码生成器
- SQL2008数据库实现表主键字段自增
- 获取通过sql查询数据库的表,字段,主键,自增,字段类型等信息。
- 数据库主键、唯一键、范式
- 主键、唯一键、外键
- 关于mysql数据库text等相关字段长度信息
- MySQL数据库使某个不是主键的字段唯一
- oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息
- ORACLE数据库查询表的基本信息,主键,外键等
- Hibernate自定义主键生成器
- 关于主键生成器
- 数据库约束 主键-唯一性-Check-外键
- 给数据库非主键增加唯一键
- 解决P2P传输瓶颈
- 缓慢变化维的几种常见解决方法
- 存储过程
- web_find和web_reg_find的区别
- javascript函数特点
- 关于自定义代码生成器(续)---SQL2008查询数据库字段主键,外键,唯一键等相关属性
- AndEngine Most important concepts
- 存储过程&函数返回结果集
- Spring中注解事务@Transactional说明
- JS 去掉字符串前后/左/右 空格
- Openssl 库的静态链接
- Java十大低级错误
- 多主键查询重复记录
- synchronized关键字