为了账号安全,请及时绑定邮箱和手机立即绑定

数据分析之SQL系统表

标签:
大数据

这里主要是整理些常用系统表的知识点,有时候面试数据分析的时候会问到的。先给大家出一道面试题目:
已知道一个用户表的名字是 brands,如何查找出表中的所有列名字呢?

看完下面的内容,你肯定会明白的

一:Sysobjects表

Sysobjects 主要存放着数据库中的所有对象,如表,列,索引等等。字段xtype代表对象类型,比如u代表用户表,p代表存储过程,tr代表触发器等。name字段表示对象名称。

如: select * from sysobjects where xtype='u'
二:Syscolumns表

当前数据库的所有字段都保留在里面。

select col.name,obj.name 
from syscolumns col join sysobjects obj
 on col.id=obj.id where obj.xtype='u'

这时候,我们再来回顾下刚刚的问题,因为表示用户表,所以xtype='u' ,对象名字就是'brands',所以结合Sysobjects表、
Syscolumns表
,容易查找出来。

select obj.name,col.name from syscolumns  col join  sysobjects 
 obj on col.id=obj.id where obj.type='u'and obj.name='brands'

3.systypes
保存当前数据库中的所有数据类型,包含系统提供的数据类型和用户定义的数据类型。比如查看所有的用户表

select obj.name from systypes stype  join sysobjects obj
on stype.id=obj.id where xtype='u'其中xtype分别对应:

C = CHECK 约束 
D = 默认值或 DEFAULT 约束 
F = FOREIGN KEY 约束 
FN = 标量函数 
IF = 内嵌表函数 
K = PRIMARY KEY 或 UNIQUE 约束 
L = 日志 
P = 存储过程 
R = 规则 
RF = 复制筛选存储过程 
S = 系统表 
TF = 表函数 
TR = 触发器 
U = 用户表 
V = 视图 
X = 扩展存储过程
五:Object_ID函数

如果查询数据库中是否存在指定名称的索引或者外键约束等,经常会用到object_id('name','type')方法。
比如要取出约束名为fk_xxx_xx的ID值

select object_id('fk_xxx_xx','F')

type如下列表:

AF = Aggregate function (CLR)C = CHECK constraintD = DEFAULT (constraint or stand-alone)F = FOREIGN KEY constraintFN = SQL scalar functionFS = Assembly (CLR) scalar-functionFT = Assembly (CLR) table-valued functionIF = SQL inline table-valued functionIT = Internal tableP = SQL Stored ProcedurePC = Assembly (CLR) stored-procedurePG = Plan guidePK = PRIMARY KEY constraintR = Rule (old-style, stand-alone)RF = Replication-filter-procedureS = System base tableSN = SynonymSQ = Service queueTA = Assembly (CLR) DML triggerTF = SQL table-valued-functionTR = SQL DML triggerU = Table (user-defined)UQ = UNIQUE constraintV = ViewX = Extended stored procedure

其实上面的就是这样的

#select ID from sysobjects where name='fk_xxx_xx' and type='F'



作者:凡人求索
链接:https://www.jianshu.com/p/fbcc1a78aa11


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消