文章目录

  • 前言
  • 查询包含表的视图
  • 查询自增列
  • 扩充知识之定义自增列


前言

首先,我用的是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)

SQL Server查询所有视图信息 sql server查看视图_SQL Server查询所有视图信息


这段语句返回视图或存储过程名称

SQL Server查询所有视图信息 sql server查看视图_SQL Server查询所有视图信息_02

查询自增列

自增列就是插入数据时某字段不用手动赋值,随着表数据自己增长,一般用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格式。

返回结果第一个字段是自增列名称

SQL Server查询所有视图信息 sql server查看视图_sql_03

或者编写表脚本查看

sqlserver选中某数据表右键–编写表脚本为–create 到–新查询编辑器窗口

SQL Server查询所有视图信息 sql server查看视图_sql_04


从这个脚本就能知道啦,自增列后面会带identity

SQL Server查询所有视图信息 sql server查看视图_字段_05

扩充知识之定义自增列

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

将标识规范是标识选为是即可

标识增量表示自增数据起始数字,标识种子表示跨度

SQL Server查询所有视图信息 sql server查看视图_数据库_06

  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就行,方便简洁。

SQL Server查询所有视图信息 sql server查看视图_SQL Server查询所有视图信息_07