【SQL Server】非常实用的查询脚本,建议收藏起来

前言

最近在使用SQL Server时,在查询外键,指定字段存在那些表,批量修改字段类型时遇到了一些困难,就记录一下。

一、SQL Server是什么?

SQL Server是由Microsoft开发的关系型数据库管理系统(RDBMS)。作为一个完整的数据库解决方案,SQL Server提供了数据存储、数据管理、数据分析和业务智能等功能。它支持使用SQL(结构化查询语言)进行数据库操作,允许用户创建、修改和查询数据库中的表、视图、存储过程和触发器等对象。

SQL Server具有可扩展性、高性能和可靠性的特点,广泛应用于企业级应用程序开发、数据仓库、商务智能和大数据分析等领域。它提供了多种版本和版本选项,以满足不同规模和需求的组织。此外,SQL Server还支持跨平台部署和云端集成,使得用户能够在各种环境中灵活地管理和利用数据资源。

二、查询脚本

1.查询指定表是否有外键表关联

select
	zjb.name as '主键表',
	wjb.name as '外键表',
	zml.name as '外键字段'
from
	sys.foreign_key_columns fkey
join sys.objects wjb on
	fkey.parent_object_id = wjb.object_id
join sys.columns col on
	wjb.object_id = col.object_id
	and parent_column_id = col.column_id
join sys.objects zjb on
	fkey.referenced_object_id = zjb.object_id
join sys.columns zml on
	zjb.object_id = zml.object_id
	and referenced_column_id = zml.column_id
	and zjb.name = 'T_system_user'
order by
	zjb.name

2.查询库中含有指定字段(字符串)的表

select
	object_name(id) tableName,
	Name as colName
from
	syscolumns
where
	(name like '%url%')
	and id in(
	select
		id
	from
		sysobjects
	where
		xtype = 'u')
order by
	tableName

3.批量修改字段类型,由varchar改为nvarchar

while 1=1
begin
	declare @sql varchar(max)
	select top 1 @sql =  'alter table '+b.name+' alter column '+a.name+' nvarchar('+cast(a.length as varchar(10))+')' from syscolumns a , sys.tables b where a.id = b.object_id and a.xtype=167  and b.name like 'A%'
if @@rowcount <> 0
	exec (@sql)
else
	break
end

4.查询库中指定表的结构

  1. 方式一
sp_help sysuser;
  1. 方式二
SELECT 
序号 = a.colorder,
字段名称 = a.name,
字段描述 = f.value,
标识 = 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,
长度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
允许空 = case when a.isnullable = 1 then '√' else '' end,
默认值 = isnull(e.text,'')
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 f on f.major_id = d.id and f.minor_id = a.colorder
where d.name='sysuser' 
order by a.id,a.colorder

总结

以上就是今天要讲的内容,本文仅仅简单介绍了我在SQL Server实际应用的案例,至于其他有用的,比较常见的,后续我们在继续整理,大家一起学习进步,加油!
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server中,可以使用多种方法来批量执行SQL脚本。以下是几种常用的方法: 1. SQL Server Management Studio (SSMS):SSMS是SQL Server的官方管理工具,它提供了一个查询编辑器,可以在其中编写和执行SQL脚本。你可以打开一个新的查询窗口,将多个SQL语句粘贴到该窗口中,并执行这些语句。 2. SQLCMD 实用程序:SQLCMD是SQL Server提供的一个命令行工具,可以用于执行SQL脚本。你可以创建一个文本文件,将多个SQL语句保存在其中,然后使用SQLCMD命令来执行该文件。例如,可以使用以下命令执行脚本文件: ``` sqlcmd -S <服务器名称> -d <数据库名称> -U <用户名> -P <密码> -i <脚本文件路径> ``` 其中,`<服务器名称>`是SQL Server实例的名称,`<数据库名称>`是要执行脚本数据库名称,`<用户名>`和`<密码>`是连接数据库所需的凭据,`<脚本文件路径>`是包含SQL语句的文件路径。 3. PowerShell:如果你熟悉PowerShell脚本语言,也可以使用PowerShell来批量执行SQL脚本。你可以使用`Invoke-Sqlcmd` cmdlet来连接到SQL Server并执行SQL语句。以下是一个示例: ```powershell $server = "<服务器名称>" $database = "<数据库名称>" $username = "<用户名>" $password = "<密码>" $scriptPath = "<脚本文件路径>" $connectionString = "Server=$server;Database=$database;User ID=$username;Password=$password;" $sqlScript = Get-Content $scriptPath | Out-String Invoke-Sqlcmd -ServerInstance $server -Database $database -Username $username -Password $password -InputFile $scriptPath ``` 在上面的示例中,你需要将`<服务器名称>`、`<数据库名称>`、`<用户名>`、`<密码>`和`<脚本文件路径>`替换为实际的值。 这些方法可以根据你的需求选择使用。如果你有其他相关问题,请告诉我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值