FJLHP

导航

 
1、查询数据库所有  主外键表
Use  数据库名
go
select  OBJECT_NAME(a.[parent_object_id]) 外键表,
OBJECT_NAME(a.[referenced_object_id]) 主键表
from sys.foreign_keys  AS a
 
2、通过“字段名”查找对应 “表名称”
Use  数据库名
go
select   a.name  字段名 ,b.name  表名 from   syscolumns     a   inner   join   sysobjects   b   on   a.id=b.id
where   a.name   =  '字段名'
 
3、查询数据库所有类型的“表名”
 
select name 触发器 from sysobjects where xtype='TR' --所有触发器
select name  存储过程 from sysobjects where xtype='P' --所有存储过程
select name 视图  from sysobjects where xtype='V' --所有视图
select name 表名 from sysobjects where xtype='U' --所有表
select name 系统表名 from sysobjects where xtype='S' --所有表
 
5、查询“表”的所有字段名
 
SELECT name 字段名  FROM SysColumns WHERE id=Object_Id('表名')
 
6、查询数据库所有表(where指定表)所有字段相关属性
 
SELECT  OBJECT_NAME(a.id) 表名,  a.name 字段名,b.name  字段类型,
a.isnullable  是否为空,a.length 字段长度
FROM syscolumns a join  systypes  b on a.xusertype = b.xusertype
 
 
7、查询数据库的所有主外键相关属性
 
SELECT T1.name[约束名],T3.name[外键表],T5.name[主键表],T4.name[外键列名],T6.name[主键列名]
FROM SYS.FOREIGN_KEYS T1 JOIN SYS.FOREIGN_KEY_COLUMNS T2 ON T1.object_id=T2.constraint_object_id 
JOIN SYS.SYSOBJECTS T3 ON T1.parent_object_id=T3.id  
JOIN SYS.SYSCOLUMNS T4 ON T2.parent_object_id=T4.id AND T2.parent_column_id=T4.colid  
JOIN SYS.SYSOBJECTS T5 ON T1.referenced_object_id=T5.id  
JOIN SYS.SYSCOLUMNS T6 ON T2.referenced_object_id=T6.id AND T2.referenced_column_id=T6.colid 
 
8、查询所有关于索引属性列表
 
 SELECT OBJECT_NAME(sysobjects.parent_obj) 表名,--sysobjects.id objectId,
 
sysobjects.name 索引名, sysobjects.xtype AS 索引类型,
 
syscolumns.name AS 索引字段
 
FROM  sysobjects INNER JOIN sysconstraints
 
ON sysobjects.xtype in('F', 'PK', 'UQ', 'D','C')
 
AND sysobjects.id = sysconstraints.constid
 
LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id
 
9、外键语句创建、同时创建不了外键
alter table 外键表名 add constraint 约束名称 foreign key (外键字段) references 主键表名(约束列名)
 
 
alter table dbo.HIS_patient_out_cure add constraint FK_HIS_patient_out_cure_HIS_patient_account foreign key (s_ic_no) references dbo.HIS_patient_account(s_ic_no)
剔除跟外键无关的值
delete from HIS_patient_out_cure where HIS_patient_out_cure.s_ic_no not in(
select b.s_ic_no from HIS_patient_out_cure inner join HIS_patient_account b on HIS_patient_out_cure.s_ic_no=b.s_ic_no)
 
10、通过语句获取存储内容
sp_helptext 'dbo.sp_Nurse_care_level1' sp_helptext 存储名称
 
11、查询表结构详细信息
SELECT top 10000 obj.name AS 表名,
col.colorder AS 序号 ,
col.name AS 列名 ,
ISNULL(ep.[value], '') AS 列说明 ,
t.name AS 数据类型 ,
col.length AS 长度 ,
ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,
CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'
ELSE ''
END AS 标识 ,
CASE WHEN EXISTS (SELECT 1
FROM dbo.sysindexes si
INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
AND si.indid = sik.indid
INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
AND sc.colid = sik.colid
INNER JOIN dbo.sysobjects so ON so.name = si.name
AND so.xtype = 'PK'
WHERE sc.id = col.id
AND sc.colid = col.colid) THEN '√'
ELSE ''
END AS 主键,
CASE WHEN col.isnullable = 1 THEN '√'
ELSE ''
END AS 允许空 ,
ISNULL(comm.text, '') AS 默认值
FROM dbo.syscolumns col
LEFT JOIN dbo.systypes t ON col.xtype = t.xusertype
inner JOIN dbo.sysobjects obj ON col.id = obj.id
AND obj.xtype = 'U'
AND obj.status >= 0
LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.id
LEFT JOIN sys.extended_properties ep ON col.id = ep.major_id
AND col.colid = ep.minor_id
AND ep.name = 'MS_Description'
LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
AND epTwo.minor_id = 0
AND epTwo.name = 'MS_Description'
--表查询条件
where obj.name       in ('RF_MailContent','RF_MailDeletedBox','RF_MailInBox','RF_MailOutBox')
ORDER BY obj.name
 
12、每次随机获取数据,通过排序newid()方法
SELECT TOP 10 *
  FROM 表名 order by newid()
 


posted on 2020-06-10 09:25  FJLHP  阅读(194)  评论(0)    收藏  举报