sql server中系统表的作用

本文提供了 SQL Server 中实用的 SQL 语句,包括查询数据库、表结构和字段信息的方法,以及如何更新和删除涉及外键约束的数据。还分享了两个存储过程,用于批量更新和删除与主表关联的子表记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       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 a, syscomments b where a.id = b.id and b.text like '%表名%'

  4:查看当前数据库中所有存储过程

select name as 存储过程名称 from sysobjects where xtype='P'

  5:查询用户创建的所有数据库

select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')

  或者

select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

  6:查询某一个表的字段和数据类型

select column_name,data_type from information_schema.columns  where table_name = '表名'

 
       比如说有A表的一个主键,作为B、C、D表的外键,可能你在某些时候修改A表中的某个记录,也许这个记录被BCD表已经用到,要修改很麻烦,昨天写了几个sql语句可以方便的实现这个要求,不过下班走的急,没来得及这里整理,周一上班再看贴上,初步计划是还有一个主要的应用,是在做子母表删除的时候,应该可以写一个函数,传入主键ID,然后删除所有子表的该记录,下周一实现。
实现上边所说功能的俩存储过程

 1None.gif--更新某主表下边对应的外键值
 2None.gif
 3None.gifCREATE PROCEDURE  Proc_UpdateFroeKeyVal
 4None.gif  @TblName varchar(50),
 5None.gif  @FroeKeyName varchar(50),
 6None.gif  @Value varchar(50)
 7None.gif  AS
 8None.gif
 9None.gifBEGIN 
10None.gif  declare @TblID varchar(50),
11None.gif        @ColuID varchar(50)
12None.gif  select  @TblID = id from  sysobjects where name = @TblName
13None.gif  select @ColuID = colid from syscolumns where id = @TblID and name = 'UserID'
14None.gif
15None.gif      select A.*,B.Name as F_TblName,C.Name as F_ColName  into #TmpTbl
16None.gif                  from 
17None.gif                     sysforeignkeys as A,sysobjects as B, syscolumns as C 
18None.gif                  where 
19None.gif                     A.rkeyid = @TblID
20None.gif                  And
21None.gif                     A.rkey = @ColuID
22None.gif                  And
23None.gif                     B.id = fkeyid
24None.gif                  And
25None.gif                     C.id = fkeyid
26None.gif                  And
27None.gif                     C.colid = fkey
28None.gif
29None.gif      declare @tabname varchar(40),@colName varchar(20),@sqlStr varchar(1024)
30None.gif      
31None.gif      DECLARE TabName_Cursor CURSOR FOR
32None.gif      SELECT F_TblName, F_ColName FROM #TmpTbl
33None.gif      OPEN TabName_Cursor
34None.gif      FETCH TabName_Cursor into @tabname,@colName
35None.gif      WHILE @@FETCH_STATUS = 0
36None.gif      BEGIN
37None.gif         select @sqlStr ='Update '+@tabname+' Set  '+@colName+' ='+ "'"+@Value +"'"
38None.gif         --print @sqlstr
39None.gif         exec(@sqlstr)
40None.gif         FETCH TabName_Cursor into  @tabname,@colName
41None.gif      END
42None.gif      CLOSE TabName_Cursor
43None.gif      DEALLOCATE TabName_Cursor
44None.gifEND
45None.gifGO
46None.gif

继续

 1None.gif--删除某主表对应子表记录
 2None.gif
 3None.gifCREATE PROCEDURE  Proc_DelFroeKeyVal
 4None.gif  @TblName varchar(50),
 5None.gif  @FroeKeyName varchar(50),
 6None.gif  @Value varchar(50)
 7None.gif  AS
 8None.gif
 9None.gifBEGIN 
10None.gif  declare @TblID varchar(50),
11None.gif        @ColuID varchar(50)
12None.gif  select  @TblID = id from  sysobjects where name = @TblName
13None.gif  --select @TblID =OBJECT_ID ( 'T_User' )
14None.gif  select @ColuID = colid from syscolumns where id = @TblID and name = 'UserID'
15None.gif
16None.gif      select A.*,B.Name as F_TblName,C.Name as F_ColName  into #TmpTbl
17None.gif                  from 
18None.gif                     sysforeignkeys as A,sysobjects as B, syscolumns as C 
19None.gif                  where 
20None.gif                     A.rkeyid = @TblID
21None.gif                  And
22None.gif                     A.rkey = @ColuID
23None.gif                  And
24None.gif                     B.id = fkeyid
25None.gif                  And
26None.gif                     C.id = fkeyid
27None.gif                  And
28None.gif                     C.colid = fkey
29None.gif
30None.gif      declare @tabname varchar(40),@colName varchar(20),@sqlStr varchar(1024)
31None.gif      
32None.gif      DECLARE TabName_Cursor CURSOR FOR
33None.gif      SELECT F_TblName, F_ColName FROM #TmpTbl
34None.gif      OPEN TabName_Cursor
35None.gif      FETCH TabName_Cursor into @tabname,@colName
36None.gif      WHILE @@FETCH_STATUS = 0
37None.gif      BEGIN
38None.gif         select @sqlStr ='delete '+@tabname+' where  '+@colName+' ='+ "'"+@Value +"'"
39None.gif         --print @sqlstr
40None.gif         exec(@sqlstr)
41None.gif         FETCH TabName_Cursor into  @tabname,@colName
42None.gif      END
43None.gif      CLOSE TabName_Cursor
44None.gif      DEALLOCATE TabName_Cursor
45None.gifEND


 
 

转载于:https://www.cnblogs.com/xioxu/archive/2006/07/22/457064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值