重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 81|回复: 0
打印 上一主题 下一主题

SQLSERVER 中sys 模式与 INFORMATION_SCHEMA

[复制链接]
跳转到指定楼层
楼主
发表于 2026-3-25 15:59:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 郑全 于 2026-3-25 16:05 编辑

SQL Server 中 sys 架构 与 INFORMATION_SCHEMA 彻底讲清
这两个都是查数据库元数据(表、列、权限、对象)的系统视图,但出身、用途、兼容性、字段完全不同,我用最直白、最实用的方式给你讲透。



一句话核心区别
  • sys 架构:SQL Server 原生专用,信息最全、最准、DBA 必用
  • INFORMATION_SCHEMA:SQL 标准通用(跨数据库兼容),信息精简、字段少



1. 先搞懂:它们是什么?
① sys 架构(SQL Server 亲儿子)
  • 属于 SQL Server 自带系统架构
  • 存放所有服务器 + 数据库底层元数据
  • 视图名:sys.tables、sys.columns、sys.indexes、sys.sql_logins
  • 功能最强:能查权限、锁、执行计划、索引、架构、登录名
  • 只能在 SQL Server 用,不能直接迁移到 MySQL/Oracle

② INFORMATION_SCHEMA(SQL 标准通用)
  • 属于 ISO SQL 标准(所有数据库都支持这套视图)
  • 目的:写一套查询,能在 MySQL、PostgreSQL、Oracle 通用
  • 视图名:INFORMATION_SCHEMA.TABLES、COLUMNS
  • 缺点:信息少,没有索引、锁、权限、SQL Server 特有属性



2. 超级对比(一眼看懂)

特性
sys 架构
INFORMATION_SCHEMA
SQL Server 专有ISO 国际 SQL 标准
跨库兼容❌ 不兼容✅ 全数据库通用
信息完整度✅ 最全(索引、权限、架构、锁)❌ 精简(仅表、列、类型)
性能✅ 快✅ 快
DBA 常用✅ 主力使用❌ 偶尔简单查询
能否查登录名✅ 能(syslogins/sql_logins)❌ 不能
能否查索引✅ 能❌ 不能




3. 最常用查询对比(实战版)
① 查询所有表
sys 方式(推荐,信息更多)
SELECT name AS 表名 FROM sys.tables;


INFORMATION_SCHEMA 方式(标准通用)
SELECT TABLE_NAME AS 表名

FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';



② 查询表的所有列
sys 方式(推荐)

  表名 = t.name,  列名 = c.name,  类型 = ty.nameFROM sys.tables tJOIN sys.columns c ON t.object_id = c.object_idJOIN sys.types ty ON c.system_type_id = ty.system_type_id


INFORMATION_SCHEMA 方式(通用)

  TABLE_NAME, COLUMN_NAME, DATA_TYPEFROM INFORMATION_SCHEMA.COLUMNS



4. 你到底该用哪个?(超明确建议)
✅ 90% 场景 → 用 sys
  • 做 SQL Server 开发、DBA 运维
  • 要查索引、权限、架构、登录名、触发器、约束
  • 要获取完整、准确、深度信息

✅ 少数场景 → 用 INFORMATION_SCHEMA
  • 你的代码要跨数据库兼容(未来可能换 MySQL/Oracle)
  • 只做简单查询:表名、列名、字段类型



5. 最关键总结(必记)
  • sys = SQL Server 专用、功能强大、DBA 首选
  • INFORMATION_SCHEMA = 标准通用、功能简单、跨库用
  • 日常工作一律用 sys
  • 它们不是竞争关系,而是标准 vs 专有的关系



最终记忆口诀
查深度、查 SQLServer 专属 → sys
跨数据库、简单查询 → INFORMATION_SCHEMA


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-18 09:08 , Processed in 0.215933 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表