sql server递归子节点、父节点sql查询表结构的实例
一、查询当前部门下的所有子部门
WITHdept AS(SELECT* FROMdbo.deptTab--部门表 WHEREpid=@id UNIONALL SELECTd.* FROMdbo.deptTabd INNERJOINdeptONd.pid=dept.id ) SELECT* FROMdept
二、查询当前部门所有上级部门
WITHtab AS(SELECTDepId, ParentId, DepName, [Enable], 0AS[Level] FROMdeptTabWITH(NOLOCK)--表名 WHERE[Enable]=1 ANDdepId=@depId UNIONALL SELECTb.DepId, b.ParentId, b.DepName, b.[Enable], a.[Level]+1 FROMtaba, deptTabbWITH(NOLOCK) WHEREa.ParentId=b.depId ANDb.[enable]=1 ) SELECT* FROMtabWITH(NOLOCK) WHERE[enable]=1 ORDERBY[level]DESC
三、查询当前表的说明描述
SELECTtbs.name表名, ds.value描述 FROMsys.extended_propertiesds LEFTJOINsysobjectstbsONds.major_id=tbs.id WHEREds.minor_id=0 ANDtbs.name='userTab';--表名
四、查询当前表的表结构(字段名、属性、默认值、说明等)
SELECTCASEWHENcol.colorder=1THENobj.name ELSE'' ENDAS表名, col.colorderAS序号, col.nameAS列名, ISNULL(ep.[value],'')AS列说明, t.nameAS数据类型, col.lengthAS长度, ISNULL(COLUMNPROPERTY(col.id,col.name,'Scale'),0)AS小数位数, CASEWHENCOLUMNPROPERTY(col.id,col.name,'IsIdentity')=1THEN'√' ELSE'' ENDAS标识, CASEWHENEXISTS(SELECT1 FROMdbo.sysindexessi INNERJOINdbo.sysindexkeyssikONsi.id=sik.id ANDsi.indid=sik.indid INNERJOINdbo.syscolumnsscONsc.id=sik.id ANDsc.colid=sik.colid INNERJOINdbo.sysobjectssoONso.name=si.name ANDso.xtype='PK' WHEREsc.id=col.id ANDsc.colid=col.colid)THEN'√' ELSE'' ENDAS主键, CASEWHENcol.isnullable=1THEN'√' ELSE'' ENDAS允许空, ISNULL(comm.text,'')AS默认值 FROMdbo.syscolumnscol LEFTJOINdbo.systypestONcol.xtype=t.xusertype INNERJOINdbo.sysobjectsobjONcol.id=obj.id ANDobj.xtype='U' ANDobj.status>=0 LEFTJOINdbo.syscommentscommONcol.cdefault=comm.id LEFTJOINsys.extended_propertiesepONcol.id=ep.major_id ANDcol.colid=ep.minor_id ANDep.name='MS_Description' LEFTJOINsys.extended_propertiesepTwoONobj.id=epTwo.major_id ANDepTwo.minor_id=0 ANDepTwo.name='MS_Description' WHEREobj.name='userTab'--表名(点此修改) ORDERBYcol.colorder;
以上所述是小编给大家介绍的sqlserver递归子节点、父节点sql查询表结构的实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!