sql server 中的一些实用的sql语句

简介

在这篇文章中,我列举一些sql语句来介绍数据库,数据表,视图等等。当我们在使用查询查询操作时这些sql语句都是非常有用的。虽然在sql server对象浏览器中我们也可以获得这些语句,但是如果我们写这些语句时我们可以将它自定义。这就意味着我们可以给予自己的需求来过滤结果。

sql语句列表

如何列举sql server当前连接的可用数据库
  1. Method 1 : SP_DATABASES 
  2. Method 2 : SELECT name FROM SYS.DATABASES 
  3. Method 3 : SELECT name FROM SYS.MASTER_FILES 
  4. Method 4 : SELECT * FROM SYS.MASTER_FILES -- Type=0 for .mdf and type=1 for .ldf

SP_DATABASES是一个可以列举数据库及其大小的存储过程

sys.databases语句中可以列举数据库名称,创建日期,修改日期,已经数据库id和其他一些信息。

SYS.MASTER_FILES语句可以查询数据的详细情况,比如数据库id,大小,物理存储路径以及列举数据库mdf和ldf.

 

如何列举数据库中的数据表

以下的sql语句都可以列表sql server数据库中的用户表.

  1. Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='U' 
  2. Method 2 : SELECT NAME FROM SYSOBJECTS WHERE xtype='U' 
  3. Method 3 : SELECT name FROM SYS.TABLES 
  4. Method 4 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='U' 
  5. Method 5 : SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' 
  6. Method 6 : SP_TABLES
如何列举数据库中的存储过程
  1. Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='P' 
  2. Method 2 : SELECT name FROM SYS.PROCEDURES 
  3. Method 3 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='P' 
  4. Method 4 : SELECT NAME FROM SYSOBJECTS WHERE xtype='P' 
  5. Method 5 : SELECT Routine_name FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='PROCEDURE'

SYS.OBJECTS数据表包含了全部的存储过程,数据表,触发器,视图等的信息,这里使用type=’p'来查询存储过程.

Information_schema.routines在sql server 7.0是一个数据视图,在其后的版本中已经变成存储过程专有的表.

如何列举数据库中的视图
  1. Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='V' 
  2. Method 2 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='V' 
  3. Method 3 : SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
  4. Method 4 : SELECT name FROM SYS.VIEWS
如何列举数据库中的函数
  1. Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='IF' -- inline function
  2. Method 2 : SELECT name FROM SYS.OBJECTS WHERE type='TF' -- table valued function
  3. Method 3 : SELECT name FROM SYS.OBJECTS WHERE type='FN' -- scalar function
  4. Method 4 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='IF' -- inline function
  5. Method 5 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='TF' -- table valued function
  6. Method 6 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='FN' -- scalar function
  7. Method 7 : SELECT Routine_name FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='FUNCTION'
如何列举数据库中的触发器
  1. Method 1 : SP_HELPTRIGGER Products 
  2. Method 2 : SELECT * FROM SYS.TRIGGERS WHERE parent_id = object_id('products')

下面我以一个products表为例列举一些对表的操作.

如何获取数据表中的列
  1. Method 1 : SP_HELP Products 
  2. Method 2 : SP_COLUMNS Products 
  3. Method 3 : SELECT * FROM SYS.COLUMNS WHERE object_id = object_id('Products') 
  4. Method 4 : SELECT COLUMN_NAME,Ordinal_position,Data_Type,character_maximum_length FROM                      INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Products'
如何根据数据表的列查找数据表的名称
  1. Method 1 : SELECT O.name FROM SYS.OBJECTS O INNER JOIN SYS.COLUMNS C ON C.Object_ID = O.Object_ID  WHERE C.name LIKE '%ShipName%' 
  2. Method 2 : SELECT OBJECT_NAME(object_id) AS [Table Name] FROM SYS.COLUMNS WHERE name LIKE '%ShipName%' 
  3. Method 3 : SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%ShipName%'
如何获得数据表的总列数
  1. Method 1 : SELECT COUNT(@@ROWCOUNT) FROM Products 
  2. Method 2 : SELECT COUNT (ProductID) FROM Products
  3. Method 3 : SELECT OBJECT_NAME(id) AS [Table Name],rowcnt FROM SYSINDEXES WHERE OBJECTPROPERTY(id,'isUserTable')=1 AND indid < 2 ORDER BY rowcnt DESC 
  4. Method 4 : SELECT  rowcnt FROM sysindexes WHERE id = OBJECT_ID('Products') AND  indid < 2 
  5. Method 5 : SELECT OBJECT_NAME(OBJECT_ID) TableName,row_count FROM sys.dm_db_partition_stats WHERE object_id = object_id('Products') AND  index_id < 2
如何获得数据表的约束
  1. Method 1 : SELECT * FROM SYS.OBJECTS WHERE type='C' 
  2. Method 2 : SELECT * FROM sys.check_constraints
如何获得数据表的索引
  1. Method 1 : sp_helpindex Products 
  2. Method 2 : SELECT * FROM sys.indexes WHERE  object_id = object_id('products')
如何获得数据视图的模式定义
  1. Method 1SELECT OBJECT_NAME(id) AS [View Name],text FROM SYSCOMMENTS WHERE id IN (SELECT object_id FROM SYS.VIEWS) 
  2. Method 2 : SELECT * FROM sys.all_sql_modules WHERE object_id IN (SELECT object_id FROM SYS.VIEWS) 
  3. Method 3 : SP_HELPTEXT ViewName
如何获得存储过程中的数据表
  1. Method 1 : SELECT OBJECT_NAME(id) FROM SYSCOMMENTS S 
  2.                      INNER JOIN SYS.OBJECTS O ON O.Object_Id = S.id 
  3.                     WHERE S.text LIKE '%Products%' 
  4.                     AND O.type='P'

总结

以上列举了一下sql server用实用的一些sql语句,希望对你在使用查询窗口操作时有用。

 

我的blog文章地址:http://www.thsss.cn/?p=643,欢迎访问

原文链接:SQL Server important system views and tables

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值