sys.columns视图

sys.columns是SQL Server从2005版本起引入的新的系统级视图。相关链接如下:

Mapping SQL Server 2000 System Tables to SQL Server 2005 System Views
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2005/ms187997(v=sql.90)
sys.columns vs syscolumns
http://luke.breuer.com/time/item/syscolumns_vs_syscolumns/624.aspx
使用sys.columns,避免了直接访问系统表,这将使某些权限受限的用户直接受益。

INFORMATION_SCHEMA.columns 视图

而 INFORMATION_SCHEMA.columns 和 sys.columns 相比,INFORMATION_SCHEMA.columns更推荐。

因为INFORMATION_SCHEMA.columns是符合ISO标准的,而sys.columns这种东西是微软自家搞出来的私有的东西。

其实INFORMATION_SCHEMA.columns 和 sys.columns二者本质上来说都是view。二者本质一样的前提下,我们推荐符合ISO标准的,这样的话这种experience也能和其它database的experience保持一致。

关于INFORMATION_SCHEMA,相关链接如下:

Information Schema Views (Transact-SQL)
https://docs.microsoft.com/zh-cn/sql/relational-databases/system-information-schema-views/system-information-schema-views-transact-sql?view=sql-server-2017

因此,举个例子,假如我们要判断某个表是否存在某个字段,如果不存在则添加该字段并且绑定一个默认值,那么我的推荐写法如下:

-- Alter table LabelSkin: Add column Width 

 if not exists
(
select column_name from INFORMATION_SCHEMA.columns where table_name = 'LabelSkin' and column_name = 'Width'
)
ALTER TABLE dbo.LabelSkin
ADD Width numeric(18, 0) NOT NULL
CONSTRAINT DF_LabelSkin_Width DEFAULT 0;

sys.columns(全部列):包含sys.all_columns (用户定义列)、sys.system_columns (系统定义列)

-sys.columns 为包含列的对象(如视图或表)的每一列返回一行。
——sys.all_columns 显示属于用户定义对象和系统对象的所有列的联合。
——sys.system_columns 具有列的系统对象的每列都对应一行。

type对象类型列表

SQL Server:INFORMATION_SCHEMA.columns 与sys.columns 与 syscolumns对比的更多相关文章

  1. sql server查询可编程对象定义的方式对比以及整合

    本文目录列表: 1.sql server查看可编程对象定义的方式对比 2.整合实现所有可编程对象定义的查看功能的存储dbo.usp_helptext2 3.dbo.helptext2的选择性测试 4. ...

  2. SQL Server 2016里的sys.dm_exec_input_buffer

    在你的DBA职业里,你们谁有用过DBCC INPUTBUFFER命令,来获得已经提交到SQL Server特定会话的最后SQL语句?请举手!大家都用过! 我们都知道DBCC命令有点尴尬,因为你不能在T ...

  3. SQL server 2008里面通过sys.dm_exec_procedure_stats得到存储过程的执行信息--转

    --转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/05/13/sql-server-2008-sys-dm-exec-procedure-stats. ...

  4. SQL Server中count(*), count(col), count(1)的对比

    让我们先看一下BOL里面对count(*)以及count(col)的说明: COUNT(*) 返回组中的项数.包括 NULL 值和重复项. COUNT(ALL expression) 对组中的每一行都 ...

  5. SQL Server注入

    1.利用错误消息提取信息 1.1 枚举当前表与列 --' 抛出错误:选择列表中的列 'users.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 发现表名为 'users',存 ...

  6. 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...

  7. 非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry 大牛

    非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry 大牛 Glenn Berry 大牛会对这个脚本持续更新 -- SQL Server 2012 Diagnost ...

  8. SQL Server 诊断查询-(1)

    Query #1 is Version Info. SQL and OS Version information for current instance SELECT @@SERVERNAME AS ...

  9. SQL Server索引进阶:第五级,包含列

    原文地址: Stairway to SQL Server Indexes: Level 5, Included Columns 本文是SQL Server索引进阶系列(Stairway to SQL ...

随机推荐

  1. .Net Core vs .Net Framework 如何为一个应用程序选择一个运行时(翻译)

    .Net Core是下一件大事吗?我已经使用了一段时间了,我倾向认为它是.事实上,我们推测,在2018年,对这项技术熟练的开发人员将会有巨大的需求.但是它和.Net Framework的区别是什么?你 ...

  2. MySQL5.7+版本一些问题

    今天有一个需求.我要用本地的Java调用远程服务器的MySQL,因为我的MySQL版本为5.7.2,即比较新的版本.网上找的很多都比较旧,故贴此贴. 无密码: 初次安装MySQL可能没有设置密码,网上 ...

  3. 常用的7个SQl优化技巧

    作为程序员经常和数据库打交道的时候还是非常频繁的,掌握住一些Sql的优化技巧还是非常有必要的.下面列出一些常用的SQl优化技巧,感兴趣的朋友可以了解一下. 1.注意通配符中Like的使用 以下写法会造 ...

  4. Sql动态查询拼接字符串的优化

    Sql动态查询拼接字符串的优化 最原始的 直接写:string sql="select * from TestTables where 1=1";... 这样的代码效率很低的,这样 ...

  5. [日常] Go语言圣经-Goroutines和线程

    Goroutines和线程: 1.动态栈: 1)线程都有一个固定大小的内存块(一般会是2MB)来做栈 2)一个goroutine会以一个很小的栈开始其生命周期,一般只需要2KB,不是固定的:栈的大小会 ...

  6. eclipse中Cannot change version of project facet Dynamic Web Module to 3.0的问题解决

    在做web配置的时候,希望将web Module(Web模块)更换为3.0,发生如下错误: cannot change version of project facet Dynamic Web Mod ...

  7. oracle中数据类型number(m,n)

    oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数.m的范围是1-38,即最大38位. 1> .NUMBER类型细讲:Oracle   numbe ...

  8. 撩课-Web大前端每天5道面试题-Day32

    1.module.export.import是什么,有什么作用? module.export.import是ES6用来统一前端模块化方案的设计思路和实现方案. export.import的出现统一了前 ...

  9. POJ2478(SummerTrainingDay04-E 欧拉函数)

    Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16927   Accepted: 6764 D ...

  10. HDU4662(SummerTrainingDay03-B)

    MU Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...