SQL Server 查询语法汇总

跨服务器查询数据

select * 
from OPENDATASOURCE ('SQLOLEDB','Data Source=ip地址;DBN=数据库名称;UID=sa;PWD=数据库密码').数据库名称.dbo.表名称

查询表在哪个数据库

exec sp_MSforeachdb @command1='USE ? if exists(SELECT 1 from sysobjects where id=object_id(''表名'')) PRINT ''?'''

查询字段在数据库哪个表

SELECT
     表名       = D.name ,
     字段序号   = A.colorder,
     字段名     = A.name,
     类型       = B.name,
     字段说明=isnull(g.[value],'')
 FROM syscolumns A 
 LEFT JOIN systypes B ON A.xusertype=B.xusertype
 INNER JOIN sysobjects D ON A.id=D.id  and D.xtype='U' and  D.name<>'dtproperties'
 LEFT JOIN sys.extended_properties G ON a.id=g.major_id   and   a.colid=g.minor_id    
 WHERE A.name= 'userID'--字段名

查询数据库的所有表

SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
SELECT * FROM INFORMATION_SCHEMA.TABLES
xtype='U':表示所bai有用户表,xtype='S':表示所有系统表。

查询字段值属于数据库的哪张表,哪个列 --存储过程

USE [数据库名]
GO
/****** Object:  StoredProcedure [dbo].[SP_FindValueInDB]    Script Date: 2017/3/5 10:35:01 
--此存储过程用于查询一个值属于数据库中的那张表的哪个列,返回结果为两列,一列是表名,一列是列名
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_FindValueInDB] 
( 
    @value VARCHAR(1024) 
)         
AS 
BEGIN 

    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
SET NOCOUNT ON; 
DECLARE @sql VARCHAR(1024)  
DECLARE @table VARCHAR(64)  
DECLARE @column VARCHAR(64)  
  
CREATE TABLE #t (  
    tablename VARCHAR(64),  
    columnname VARCHAR(64)  
)  
  
DECLARE TABLES CURSOR  
FOR  
  
    SELECT o.name, c.name  
    FROM syscolumns c  
    INNER JOIN sysobjects o ON c.id = o.id  
    WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239)  
    ORDER BY o.name, c.name  
  
OPEN TABLES  
  
FETCH NEXT FROM TABLES  
INTO @table, @column  
  
WHILE @@FETCH_STATUS = 0  
BEGIN  
    SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] '  
    SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') '  
    SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', '''  
    SET @sql = @sql + @column + ''')'  
  
    EXEC(@sql)  
  
    FETCH NEXT FROM TABLES  
    INTO @table, @column  
END  
  
CLOSE TABLES  
DEALLOCATE TABLES  
  
SELECT *  
FROM #t  
  
DROP TABLE #t  
  
End

查询字段值属于数据库的哪张表,哪个列 --游标

declare @cloumns varchar(40)
declare @tablename varchar(40)
declare @str varchar(40)
declare @counts int
declare @sql nvarchar(2000)
declare MyCursor Cursor For
Select a.name as Columns, b.name as TableName from syscolumns a,sysobjects b,systypes c
where a.id = b.id
and b.type = 'U'
and a.xtype=c.xtype
and c.name like '%char%'
set @str='申请VPN权限'
Open MyCursor
Fetch next From MyCursor Into @cloumns,@tablename
While(@@Fetch_Status = 0)
Begin
set @sql='select @tmp_counts=count(*) from ' +@tablename+ ' where ' +@cloumns+' = ''' +@str+ ''''
execute sp_executesql @sql,N'@tmp_counts int out',@counts out
if @counts>0
begin
print '表名为:'+@tablename+',字段名为'+@cloumns
end
Fetch next From MyCursor Into @cloumns,@tablename
End
Close MyCursor
Deallocate MyCursor

查询数据库所有触发器

SqlServer用法
select name from sysobjects where xtype=‘TR’ --所有触发器
select name from sysobjects where xtype=‘P’ --所有存储过程
select name from sysobjects where xtype=‘V’ --所有视图
select name from sysobjects where xtype=‘U’ --所有表

Oracle用法
Select object_name From user_objects Where object_type=TRIGGER; --所有触发器
Select object_name From user_objects Where object_type=PROCEDURE; --所有存储过程
Select object_name From user_objects Where object_type=VIEW; --所有视图
Select object_name From user_objects Where object_type=TABLE; --所有表

查询某个表的列名称、说明、备注、类型等

SELECT
    表名       = case when a.colorder=1 then d.name else '' end,
    表说明     = case when a.colorder=1 then isnull(f.value,'') else '' end,
    字段序号   = a.colorder,
    字段名     = a.name,
    标识       = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
    主键       = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
                     SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
    类型       = b.name,
    占用字节数 = a.length,
    长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    允许空     = case when a.isnullable=1 then '√'else '' end,
    默认值     = isnull(e.text,''),
    字段说明   = isnull(g.[value],'')
FROM
    syscolumns a
left join
    systypes b
on
    a.xusertype=b.xusertype
inner join
    sysobjects d
on
    a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
left join
    syscomments e
on
    a.cdefault=e.id
left join
sys.extended_properties   g
on
    a.id=G.major_id and a.colid=g.minor_id 
left join
sys.extended_properties f
on
    d.id=f.major_id and f.minor_id=0
where
    d.name='djcl_sap_customerPrice_mx_sap'    --如果只查询指定表,加上此where条件,tablename是要查询的表名;去除where条件查询所有的表信息
order by
    a.id,a.colorder
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值