SqlServer 查询表、表说明、关联表、字段说明,语句汇总

----查询所有的表
SELECT * FROM SYSOBJECTS WHERE TYPE=‘U‘
 ----根据表名查询所有的字段名及其注释
SELECT A.NAME,B.VALUE
FROM SYSCOLUMNS A
LEFT  JOIN SYS.EXTENDED_PROPERTIES B ON A.ID=B.MAJOR_ID AND A.COLID=B.MINOR_ID
INNER JOIN SYSOBJECTS    C ON A.ID=C.ID AND UPPER(C.NAME)=‘tb_name‘
------根据表名查询该表所有的关联表
SELECT 主键列ID=b.rkey
    ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
    ,外键表ID=b.fkeyid
    ,外键表名称=object_name(b.fkeyid)
    ,外键列ID=b.fkey
    ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
    ,级联更新=ObjectProperty(a.id,‘CnstIsUpdateCascade‘)
    ,级联删除=ObjectProperty(a.id,‘CnstIsDeleteCascade‘)
FROM sysobjects a
    join sysforeignkeys b on a.id=b.constid
    join sysobjects c on a.parent_obj=c.id
where a.xtype=‘f‘ AND c.xtype=‘U‘
    and object_name(b.rkeyid)=‘tb_name‘     ----主表表名
    
 ----查询关联表的表说明、主键列名、外表表名称、外键列名
  SELECT
     表说明     =  isnull(d.value,object_name(b.fkeyid))
    ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
    ,外键表名称=object_name(b.fkeyid)
    ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
FROM sysobjects a
    join sysforeignkeys b on a.id=b.constid
    join sysobjects c on a.parent_obj=c.id
    left join sys.extended_properties d on d.minor_id = 0 and c.id = d.major_id
where a.xtype=‘f‘ AND c.xtype=‘U‘
    and object_name(b.rkeyid)=‘tb_name‘     ----主表表名

  

------最全的表信息查询
   SELECT
    表名       = case when a.colorder=1 then d.name else ‘‘ end,
     表说明     = case when a.colorder=1 then isnull(f.value,‘‘) else ‘‘ end,
     字段序号   = a.colorder,
     字段名     = 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 parent_obj=a.id 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.xusertype=b.xusertype
 inner join
    sysobjects d
on
    a.id=d.id  and d.xtype=‘U‘ and  d.name<>‘dtproperties‘
 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
left join 

sys.extended_properties f
 on
    d.id=f.major_id and f.minor_id=0
 where
    d.name=‘tb_name‘
 order by
    a.id,a.colorder

 

时间: 2024-11-09 06:04:09

SqlServer 查询表、表说明、关联表、字段说明,语句汇总的相关文章

【数据库】主键,外键,主表,从表,关联表,父表,子表

转自:https://www.2cto.com/database/201707/662425.html 一.前言 在数据库设计中,hibernate,iBatis等ORM框架的使用中经常听说主键,外键,主表,从表,关联表,父表,子表之类的术语,弄懂它们之前的区别与联系对于数据库设计和ORM框架的学习使用是非常有必要的. 二.概述 下面从数据库设计角度,ORM框架使用(以Hibernate为例),PowerDesigner软件以及实际业务角度进行一下介绍. (1) 数据库角度而言 主键:一般情况下

三张表关联 修改第三张表所关联前两张表的某个字段的值

---三张表关联 利用关联的字段 表一关联表二 表二关联表三 来修改表三对应字段下的某个值. update GY_FYJY set zfbl='50' where fyxh in (select fyxh from gy_ylsf where fygb ='26')

利用反射处理多个表结构相同的数据的查询和数据库表的关联

最近做一个项目,需要对人口数据进行查询,但是人口数据分布在不同的街道表中,首先进行了数据表结构的统一,每个数据表以街道名开头,然后其他的名字都一样 前期将各个表中的字段也进行了统一 抽象出一张字典表 将街道编号和街道的名字的首字母连接起来,因为查询的时候是利用街道编号来的,这样可以根据街道标号拼出相对于的街道表的名字,(每个人口相关的表不止一张,因此需要统一):在查询过程中,将查询到的结构返回一个LIST,(不同的表在dao中当然对于不同的类啊,返回来再判断是哪一类),然后利用反射Field[]

关联表映射 Association Table Mapping

把关联保存为一个表,存储关联表的外键 在对象中,使用集合作为域值,来处理多值域. 而在DB中,只能有单值域. 外键映射的核心,是在关联关系的单值端使用外键来维持联系. 而在多对多的关联关系中,已经不存在单值端了. 运行机制 使用一个链接表来保存关联关系. 仅有两个字段,即两个关联表的外键ID. 对于每一对相关联的对象,它会有一个数据行与之对应. 链接表没有对应的内存对象.所以也就没有ID.其主键是两个关联表的主键的组合. 从链接表中加载Data需要两次查询,例如为雇员加载机能的问题 1,查询Em

python开发mysql:表关系&amp;单表简单查询

一 一对多,多对一 1 1.1 建立多对一 ,一对多的关系需要注意 2 先建立被关联的表,被关联的字段必须保证时唯一的 3 在创建关联的表,关联的字段一定是可以重复的 4 5 1.2 示例: 6 出版社 多对一,多个老师可能在一家出版社 7 一夫多妻 一对多 8 create table dep(. 被关联的字段必须保证唯一 9 id int primary key auto_increment, 10 name varchar(20), 11 comment varchar(50) 12 );

sql中修改多表关联的字段

表1:USERID USERNAME USERREMARK 表2:ROLEID USERID ROLENAME 其中表1的USERID与表2的USERID为关联字段. 若现在只知道ROLEID,要修改USERNAME 则sql可写为:UPDATE 表1 set 表1.USERNAME='修改的内容' FROM 表2 WHERE 表1.USERID=表2.USERID AND 表2.ROLEID='角色ID';

mysql、sqlserver关联表批量修改

一.mysql关联表批量修改 UPDATE sp_sys_dictionaries_category a #根据对应id,把b.username的值赋给a.username LEFT JOIN sp_sys_dictionaries b ON b.cid = a.id SET a.username = b.username 二.sqlserver关联表批量修改 UPDATE a SET a.FLONGYARN = b.ORGID --根据对应id,把b.ORGID的值赋给a.FLONGYARN

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50

think PHP提取字符串中的数字,并到数据库中使用in查询所关联表的字段值

/* * 提取数字并去数据库取得相应的分类名 * $strs 需要处理的字符串 * $table 数据表名 * $condition 条件字段 * $field 获取的字段 */ public function extractNumberGetName($strs,$table,$condition,$field){ if(empty($strs)){ return ''; } $patterns = "/\d+/"; preg_match_all($patterns,$strs,$a