文章目录
前言
最近在使用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.查询库中指定表的结构
- 方式一
sp_help sysuser;
- 方式二
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实际应用的案例,至于其他有用的,比较常见的,后续我们在继续整理,大家一起学习进步,加油!