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

标题: SQLSERVER 中sys 模式与 INFORMATION_SCHEMA [打印本页]

作者: 郑全    时间: 2026-3-25 15:59
标题: SQLSERVER 中sys 模式与 INFORMATION_SCHEMA
本帖最后由 郑全 于 2026-3-25 16:05 编辑

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



一句话核心区别



1. 先搞懂:它们是什么?
① sys 架构(SQL Server 亲儿子)

② INFORMATION_SCHEMA(SQL 标准通用)



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

✅ 少数场景 → 用 INFORMATION_SCHEMA



5. 最关键总结(必记)



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







欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2