SQL Server的系统表及其应用

SQL Server 数据建模实战:教学管理系统6表关系与CHECK约束的10个应用点 本文详细介绍了SQL Server在教学管理系统中的数据建模实战,重点解析了6个核心表的关系设计及CHECK约束的10个典型应用场景。通过性别验证、学分范围控制等实例,展示了如何利用CHECK约束确保数据完整性,同时提供了ER图解析和查询优化建议,助力开发者构建健壮的教学管理系统。 阅读详情

一、SQL Server的系统表
  Microsoft 的SQL Server是一个可伸缩的高性能数据库管理系统,专为分布式客户机/服务器环境而设计,SQL Server几乎将所有的配置信息、安全性信息和对象信息都存储在了它自身的系统表中,而系统表存在于每个独立的数据库中,存储一个特定数据库对象信息的系统表通常称为数据库目录,MASTER数据库有其特有的系统表用于保存整个系统和所有数据库的信息,通常称为服务器目录或系统目录。

  服务器上所有的数据库包括MODULE,MASTER等都含有18个具有相同名称、结构的系统表,如表SYSOBJECTS用于描述数据库中的对象--表、视图、存储过程等,表SYSUSER用于描述数据库的用户,而MASTER数据库另外还有13个单独的全局系统表,如表SYSLOGINS用于保存每个服务器的登录名、口令和配置信息、表SYSDATABASE保存服务器上所有数据库名、所有者、状态及其他信息。

 

 

sysaltfiles

主数据库

保存数据库的文件

syscharsets

主数据库

字符集与排序顺序

sysconfigures

主数据库

配置选项

syscurconfigs

主数据库

当前配置选项

sysdatabases

主数据库

服务器中的数据库

syslanguages

主数据库

语言

syslogins

主数据库

登陆帐号信息

sysoledbusers

主数据库

链接服务器登陆信息

sysprocesses

主数据库

进程

sysremotelogins

主数据库

远程登录帐号

 

 

 

 

 

 

syscolumns

每个数据库

列

sysconstrains

每个数据库

限制

sysfilegroups

每个数据库

文件组

sysfiles

每个数据库

文件

sysforeignkeys

每个数据库

外部关键字

sysindexs

每个数据库

索引

sysmenbers

每个数据库

角色成员

sysobjects

每个数据库

所有数据库对象

syspermissions

每个数据库

权限

systypes

每个数据库

用户定义数据类型

sysusers

每个数据库

用户



  存储过程是内嵌于数据库中的程序代码,它与表、视图等一样是数据库的一个组成部分,不同于一般的外部程序代码,它是经过预编译处理的代码,因此具有运行速度快、效率高的特点,存储过程也是SQL Server的一个重要功能,许多单纯针对后台数据库的操作一般都交由存储过程来完成以提高系统效率。本文将给出一个存储过程来说明SQL Server系统表的应用。


  二、SQL Server系统表的应用

  在应用SQL Server的基于客户机/服务器体系结构的信息系统开发中,有时需要将后台SQL Server上的某一数据库的表结构都打印出来,以便于开发人员查阅及最终文档的形成。SQL Server本身提供了一个系统存储过程(SP_COLUMNS),可以完成对单个表结构的查询,只要在SQL Server的ISQL-W工具中键入SP_COLUMNS “表名”,并执行即可得到结果集。但该方法有许多不足之处,其主要缺点是:

  1) 只能对单表进行操作,当需要查询一个数据库中所有的表时,需要多次执行SP_COLUMNS ,因此显得非常繁琐。

  2) 查询结果集中包含了许多不必要的信息。

  下面我们创建一个存储过程来完成对某一个数据库中所有表结构的查询。

  在创建一个数据库的同时,系统会自动建立一些系统表,限于篇幅的缘故我们在这里只介绍与应用实例有关的三个系统表(SYSOBJECTS,SYSCOLUMNS,SYSTYPES)及其相关的字段。

  表SYSOBJECTS为数据库内创建的每个对象(约束,规则,表,视图,触发器等)创建一条记录。

  该表相关字段的含义如下:

  SYSOBJECTS.name 对象名,如:表名,视图名。

  SYSOBJECTS.id 对象id。

  SYSOBJECTS.type 对象类型(p存储过程,v视图,s系统表,u用户表)。

  表SYSCOLUMNS 为每个表、视图中的每个列和每个存储过程的每个参数创建一条记录。

  该表相关字段的含义如下:(此处的列系指数据库中每个表、视图中的列)

  SYSCOLUMNS. id 该列所属的表的id,可与SYSOBJECTS.id相关联

  SYSCOLUMNS.colid 列id,表示该列是表或视图的第几列。

  SYSCOLUMNS.type 物理存储类型,可与SYSTYPES.type相关联。

  SYSCOLUMNS.length 数据的物理长度。

  SYSCOLUMNS.name 列名字,即字段名。

  SYSCOLUMNS .Pre 列的精度级。

  SYSCOLUMNS .Scale 列的标度级。

  表SYSTYPES 为每个系统和每个用户提供的数据类型创建一条记录,如果它们存在,给定域和默认值,描述系统提供的数据类型的行不可更改。

  该表相关字段的含义如下:

  SYSTYPES.name 数据类型的名字。

  SYSTYPES.type 物理存储数据类型。

  在SQL SERVER的企业管理器(SQL ENTERPRISE MANAGER)中,选定某一数据库,创建存储过程print_dbstructure。

  源代码如下:

  if exists (select * from sysobjects where id = object_id('dbo. print_dbstructure

  ') and sysstat & 0xf = 4) 存储过程

  drop procedure dbo. print_dbstructure

  GO

  CREATE PROCEDURE print_dbstructure

  AS

  SELECT DISTINCT sysobjects.name, syscolumns.colid,

  syscolumns.name, systypes.name, syscolumns.prec, syscolumns.scale

  FROM syscolumns, sysobjects, systypes

  WHERE sysobjects.id = syscolumns.id AND systypes.type = syscolumns.type AND ((sysobjects.type='u'))


  GO

  首先判断是否存在一个名为print_dbstructure的存储过程,如果存在,就摘除它,否则,定义SQL语句建立新的存储过程。从三个系统表中选出满足条件的记录(即该数据库中保存在系统表中的用户表信息)。

  执行时,在ISQL_W工具中,选定print_dbstructure所在的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)。


  三、SQL Server系统表的推广应用


  以上所介绍存储过程的主要缺陷在于只能对服务器上某一特定的数据库(print_dbstructure所在的数据库)进行查询操作,我们可以通过在SQL Server系统数据库MASTER中建立带有数据库名参数的系统存储过程来解决这一问题,请读者自行完成。当然,SQL Server 系统表的应用远不止于此,读者也可依本文所介绍的方法去挖掘其他几个系统表的应用。 

 

 

IntelliJ IDEA 内存设置:-Xmx、CodeCache 与启动排查 JVM 内存模型把 Java 堆、JIT 代码缓存、元空间等区域分开管理,-Xmx 只决定堆上限,且参数必须带单位;用户级 vmoptions 与安装级配置的加载优先级,决定了 Edit Custom VM Options 为什么更容易让调参生效。正确设置 IntelliJ IDEA 内存设置,能减少 GC 抖动、CodeCache 填满后的降级执行、启动报错和编译 OOM。无论是多模块 Java/Kotlin 工程,还是 Gradle 守护进程与独立编译进程,内存都需要分进程配置。围绕 IDEA 卡顿排查 阅读详情

相关推荐

C51编程25-应用篇(单片机与电脑端实现wifi通讯)

单片机使用ESP-01S wifi模块与电脑端进行数据通讯。

qq_34343637的博客 1万+

SQL Server系统表的应用

系统表用的不多,写几个常用的系统表 各个数据库中的系统表:1.SysObject:  存放数据库中的各个对象!  最重字段   1.1 Name,Id,Crdate,Xtype (U :用户表,V:视图,Tr:触发器,P:存储过程,S,系统表)   1.2 常用函数 Object_ID(对象

appoFeng的专栏 880

ROS 入门教程:小乌龟仿真器和基础操作

小乌龟仿真器和ros基础操作

zlflll的博客 4124

SQL SERVER 系统表应用

<br />0.查询表字段的标题备注<br />SELECT  A.COLID, UPPER(A.NAME) AS NAME,ISNULL(C.VALUE,A.NAME) AS REMARK , UPPER(B.NAME) AS DATATYPE,<br />  (CASE WHEN A.XPREC=0 THEN A.LENGTH ELSE A.XPREC END) AS XPREC,<br />  A.XSCALE, A.ISNULLABLE,A.CDEFAULT<br /> FROM SYSCOLUMN

三界的专栏 718

HALCON卡尺模型实战:5分钟搞定工件尺寸测量(附完整代码)

本文详细介绍了HALCON卡尺模型在工件尺寸测量中的实战应用,通过5分钟快速搭建测量系统的完整指南,包括基础配置、高级参数调优和完整代码示例。卡尺模型能自动识别边缘并计算精确尺寸,显著提升工业视觉检测的效率和一致性,特别适用于实时测量场景。

weixin_42570296的博客 462

USB2.0基础知识总结

目录 1、协议层: 1.1、域分类 1.2 、USB传输方式: 1、协议层: 域和包定义:包是一次传输的单位,每个包由多个域组成; USB中是按照LSB进行字节传输; 1.1、域分类 1.1.1: 同步域(SYNC field) 所有的包都开始于同步域,在低速和全速通信中SYNC field用7个0和1个1来表示。 由于USB2.0使用了NRZI编码(0用翻转来表示,1用不翻转表示),所以00000001就是上图那样。 ...

qq_32938605的博客 4408

SQL Server的系统表及其应用研究

  1. SQL Server的系统表  Microsoft的SQL Server是一个可伸缩的高性能数据库管理系统,专为分布式客户机/服务器环境而设计,SQL Server几乎将所有的配置信息、安全性信息和对象信息都存储在了它自身的系统表中,而系统表存在于每个独立的数据库中,存储一个特定数据库对象信息的系统表通常称为数据库目录,MASTER数据库有其特有的系统表用于保存整个系

我的专栏 486

npm报错 npm WARN deprecated....的问题解决方式

报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i.

任聪聪的博客 16万+

SQL SERVER 2000 系统表的应用

在SQL SERVER 2000 SP2上测试成功。查询数据库中的某个表的结构(就是列名):select name from syscolumns where id=object_id(tablename)查询某个数据库中的所有用户表:select name from sysobjects where type=U

鼓手(wen3062) 1372

使用阿里天池平台训练YOLO目标检测模型

YOLO算法是一种单阶段目标检测算法,由Joseph Redmon等人于2015年提出。与传统的两阶段检测算法相比,YOLO将目标检测问题转化为回归问题,直接预测边界框的位置和类别概率,大大提高了检测速度。YOLOv1: 首次提出YOLO的核心思想,将图像分割成网格,每个网格预测边界框和类别概率。YOLOv2: 引入了批量归一化、锚框等改进,提高了检测精度。YOLOv3: 采用多尺度预测,增强了对小目标的检测能力。

步子哥的博客 1089

Transformer在BEV感知中的统治地位

Transformer在BEV感知中的统治地位 ,人工智能,计算机视觉,大模型,AI,本文围绕 Transformer 在 BEV 感知中的统治地位展开,介绍了 Transformer 的基础原理,如自注意力、多头注意力机制等,以及 BEV 感知的概念、任务与挑战。阐述了 Transformer 在 BEV 感知中的技术优势,包括全局建模、灵活特征融合和长距离依赖捕捉能力,还介绍了典型架构、代码示例及在自动驾驶目标检测等领域的应用案例。同时,评估了其性能,提及优化方法,并展望了与其他技术融合、端到端系统等…

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 20万+

*SQL Server系统表的应用

SQL Server系统表的应用  在应用SQL Server的基于客户机/服务器体系结构的信息系统开发中,有时需要将后台SQL Server上的某一数据库的表结构都打印出来,以便于开发人员查阅及最终文档的形成。SQL Server本身提供了一个系统存储过程(SP_COLUMNS),可以完成对单个表结构的查询,只要在 SQL Server的ISQL-W工具中键入SP_COLUMNS “表名”,并执...

weixin_30566063的博客 70

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

sql server 2000 系统表应用

--1:获取当前数据库中的所有用户表 select Name from sysobjects where xtype='u' and status>=0 --2:获取某一个表的所有字段 select * from syscolumns where id=object_id('test1') --3:查看与某一个表相关的视图、存储过程、函数 select a.* from s...

weixin_33774615的博客 79

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MS SQL Server 2000 中系统表应用技巧

(1)首先获取当前数据库中的所有用户表:   select Name from sysobjects where xtype=u and status>=0  (2)然后获取某一个表的所有字段  

Lucker's PowerSpace 865

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SQL Server2000数据库系统表的应用

1:获取当前数据库中的所有用户表select Name from sysobjects where xtype=u and status>=0  2:获取某一个表的所有字段select name from syscolumns where id=object_id(表名)  3:查看与某一个表相关的视图、存储过程、函数select a.* from sysobjects

BraveHeart专栏 1532

[SQL server] 取得表中有默认值的字段名及默认值(几个系统表的应用)

if object_id('tb') is not null drop table tb go create table tb(id int,name varchar(50) default 'abc',num int default 5) insert into tb(id) select 1 insert into tb select 1,'oo',100 insert into

1851

Sql server 实用技巧之主键、系统表与代码生成器[源码+视频]

一、 从主键说起 CREATE TABLE BingoT1 ( id INT IDENTITY(1, 1) , NAME NVARCHAR(10) , --姓名 IdentityNo VARCHAR(18) , --身份证号码 LogDate DATETIME DEFAULT ( GETDATE() ) , ...

weixin_30836759的博客 92
上一篇: 浅谈动态链接库DLL使用与出现的问题
下一篇: 利用exp备份oracle
neverthink
博客等级 码龄21年 43粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值