SQLserver查询当前数据库包含某表的所有视图或存储过程或查询自增列

前言

首先,我用的是sql server。

查询包含表的视图

当我想知道数据库中有多少视图、存储过程包含某数据表时,可以这样写

SELECT DISTINCT OBJECT_NAME(id) FROM syscomments WHERE id IN(SELECT id FROM sysobjects WHERE type IN ('v','p'))
AND text LIKE '%tablename%'ORDER BY OBJECT_NAME(id)

返回视图或存储过程名称
这段语句返回视图或存储过程名称
在这里插入图片描述

查询自增列

自增列就是插入数据时某字段不用手动赋值,随着表数据自己增长,一般用identify标识。

我想查询某个表有什么字段是自增的,可以用下面语句查询。

SELECT * FROM syscolumns WHERE id=OBJECT_ID(N'tablename') AND COLUMNPROPERTY(id,name,'IsIdentity')=1

SELECT * FROM syscolumns WHERE id=OBJECT_ID(N'tablename') AND status=0x80`

两种方法均可,字符串前面加N是表示该字符串是unicode格式。
返回结果第一个字段是自增列名称
在这里插入图片描述

或者编写表脚本查看

sqlserver选中某数据表右键–编写表脚本为–create 到–新查询编辑器窗口
在这里插入图片描述
从这个脚本就能知道啦,自增列后面会带identity
在这里插入图片描述

扩充知识之定义自增列

  1. 定义自增列可以在sqlserver中表的设计界面选择某字段设置列属性

将标识规范是标识选为是即可
标识增量表示自增数据起始数字,标识种子表示跨度
在这里插入图片描述

  1. 定义自增列也可以使用T-SQL语句,分为以下三种情况:

1.修改某表增加自增列

alter table 表名 add ID int identity(1,1)
identity第一个参数表示自增数据起始数字,第二个表示跨度,也就是加几

2.创建表设置某字段自增

下面字段dID是自增的

 CREATE TABLE [dbo].[LPMS_EHSHiddenDangerBaseInfo](
	[dID] [decimal](18, 0) IDENTITY(1,1) NOT NULL,
	[cType] [varchar](50) NULL,
) 

3.那我一个表的id字段一开始手动插入的的,后面我想换成自增了可以吗?

一般自增列是不能修改的,但是你可以删除旧的字段,再建立一个新的字段
alter table 表名 add ID int identity(1,1)
alter table 表名 drop column ID

实现操作不难,但是在实际业务中要注意历史数据的处理
不然这个字段是id标识列,你删掉,所有数据都没id了,不是闯了大祸啦!

规范操作:删掉之前要把旧id列的值赋值给新id列,然后才能放心删除不要的字段。

UPDATE [tableName] SET [字段名副本]=字段名 WHERE 1=1

加个where 1=1是为了不要提示,主要没有where会默认全表执行,MSSQL会提示一波,麻烦。

还有个使用场景就是查询某表加上where 1=1,这样后面筛选条件sql拼接时候直接写and就行,方便简洁。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值