RDBMS基础

1、任意SQLSERVER都有master数据库,master数据库保存一组特殊的表(系统表)用于系统的总体控制。该数据库对于系统至关重要,不能删除。

一、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所在的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)。


二、事物日志

 

   数据库文件本身并不是“事情发生最多的场所”。数据库当然要从数据库文件读取,但时间上,任意数据库的更改起初不进入数据库本身,而是不断地被写到事物日志。在后面的某个时间点上,数据库发生检查点,就是在该时间点,日志中所有的更改才被传到实际的数据库文件。
   日志是数据进入磁盘上的最先位置,且稍后后被传到实际的数据库。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值