1. 给建好的表添加某个字段添加唯一约束
ALTER TABLE UserAccountBasicInfo add unique (列名)
2. 获取表字段及其说明的SQL
internal string QueryTableInfo(string tableName)
{
//[ 创建一个存储查询语句的字符串对象 ]
StringBuilder sbQuerySql = new StringBuilder();
sbQuerySql.AppendLine("SELECT\n");
sbQuerySql.AppendLine("[ID]=C.column_id,\n"); // 字段ID
sbQuerySql.AppendLine("[Name]=C.name,\n"); // 字段名称
sbQuerySql.AppendLine("[IsPrimaryKey]=ISNULL(IDX.PrimaryKey,N''),\n"); // 是否主键
sbQuerySql.AppendLine("[Type]=T.name,\n"); // 字段类型
sbQuerySql.AppendLine("[Size]=C.max_length,\n"); // 字段长度
sbQuerySql.AppendLine("[IsCanNull]=CASE WHEN C.is_nullable=1 THEN N'√'ELSE N'' END,\n"); // 是否允许未NULL
sbQuerySql.AppendLine("[DefaultValue]=ISNULL(D.definition,N''),\n"); // 缺省值
sbQuerySql.AppendLine("[Desc]=ISNULL(PFD.[value],N''),\n"); // 字段描述
sbQuerySql.AppendLine("[CreateDate]=O.Create_Date,\n"); // 创建日期
sbQuerySql.AppendLine("[ModDate]=O.Modify_date,\n"); // 修改日期
sbQuerySql.AppendLine("[Identity]=C.is_identity");
sbQuerySql.AppendLine("FROM sys.columns C\n");
sbQuerySql.AppendLine("INNER JOIN sys.objects O\n");
sbQuerySql.AppendLine("ON C.[object_id]=O.[object_id]\n");
sbQuerySql.AppendLine("AND O.type='U'\n");
sbQuerySql.AppendLine("AND O.is_ms_shipped=0\n");
sbQuerySql.AppendLine("INNER JOIN sys.types T\n");
sbQuerySql.AppendLine("ON C.user_type_id=T.user_type_id\n");
sbQuerySql.AppendLine("LEFT JOIN sys.default_constraints D\n");
sbQuerySql.AppendLine("ON C.[object_id]=D.parent_object_id\n");
sbQuerySql.AppendLine("AND C.column_id=D.parent_column_id\n");
sbQuerySql.AppendLine("AND C.default_object_id=D.[object_id]\n");
sbQuerySql.AppendLine("LEFT JOIN sys.extended_properties PFD\n");
sbQuerySql.AppendLine("ON PFD.class=1 \n");
sbQuerySql.AppendLine("AND C.[object_id]=PFD.major_id \n");
sbQuerySql.AppendLine("AND C.column_id=PFD.minor_id\n");
//sbQuerySql.AppendLine("AND PFD.name='Caption'\n"); //-- 字段说明对应的描述名称(一个字段可以添加多个不同name的描述)
sbQuerySql.AppendLine("LEFT JOIN sys.extended_properties PTB\n");
sbQuerySql.AppendLine("ON PTB.class=1 \n");
sbQuerySql.AppendLine("AND PTB.minor_id=0 \n");
sbQuerySql.AppendLine("AND C.[object_id]=PTB.major_id\n");
//sbQuerySql.AppendLine("AND PFD.name='Caption'd\n"); //-- 表说明对应的描述名称(一个表可以添加多个不同name的描述)
sbQuerySql.AppendLine("LEFT JOIN\n"); //-- 索引及主键信息
sbQuerySql.AppendLine("(\n");
sbQuerySql.AppendLine("SELECT\n");
sbQuerySql.AppendLine("IDXC.[object_id],\n");
sbQuerySql.AppendLine("IDXC.column_id,\n");
sbQuerySql.AppendLine("Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')\n");
sbQuerySql.AppendLine("WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,\n");
sbQuerySql.AppendLine("PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'√'ELSE N'' END,\n");
sbQuerySql.AppendLine("IndexName=IDX.Name\n");
sbQuerySql.AppendLine("FROM sys.indexes IDX\n");
sbQuerySql.AppendLine("INNER JOIN sys.index_columns IDXC\n");
sbQuerySql.AppendLine("ON IDX.[object_id]=IDXC.[object_id]\n");
sbQuerySql.AppendLine("AND IDX.index_id=IDXC.index_id\n");
sbQuerySql.AppendLine("LEFT JOIN sys.key_constraints KC\n");
sbQuerySql.AppendLine("ON IDX.[object_id]=KC.[parent_object_id]\n");
sbQuerySql.AppendLine("AND IDX.index_id=KC.unique_index_id\n");
sbQuerySql.AppendLine("INNER JOIN\n"); // -- 对于一个列包含多个索引的情况,只显示第1个索引信息
sbQuerySql.AppendLine("(\n");
sbQuerySql.AppendLine("SELECT [object_id], Column_id, index_id=MIN(index_id)\n");
sbQuerySql.AppendLine("FROM sys.index_columns\n");
sbQuerySql.AppendLine("GROUP BY [object_id], Column_id\n");
sbQuerySql.AppendLine(") IDXCUQ\n");
sbQuerySql.AppendLine("ON IDXC.[object_id]=IDXCUQ.[object_id]\n");
sbQuerySql.AppendLine("AND IDXC.Column_id=IDXCUQ.Column_id\n");
sbQuerySql.AppendLine("AND IDXC.index_id=IDXCUQ.index_id\n");
sbQuerySql.AppendLine(") IDX\n");
sbQuerySql.AppendLine("ON C.[object_id]=IDX.[object_id]\n");
sbQuerySql.AppendLine("AND C.column_id=IDX.column_id\n");
sbQuerySql.AppendLine("WHERE O.name=N'" + tableName + "'\n"); //-- 如果只查询指定表,加上此条件
sbQuerySql.AppendLine("ORDER BY O.name,C.column_id\n");
//[ 返回执行查询的命令语句 ]
return sbQuerySql.ToString();
}
3. 查询某个时间段修改过的存储过程
SELECT Name,modify_date as UpdateTime FROM sys.objects WHERE type = 'P' AND modify_date BETWEEN '{0}' AND '{1}' ORDER BY modify_date DESC
4. 查询服务器上有几个数据库
USE master
go
SELECT NAME FROM SYSDATABASES ORDER BY [NAME]
5. 查询存储过程,表 和 视图信息
SELECT NAME FROM sysobjects s WHERE s.[type]='U' ORDER BY s.[NAME] SELECT NAME FROM sysobjects s WHERE s.[type]='P' ORDER BY s.[NAME] SELECT NAME FROM sysobjects s WHERE s.[type]='V' ORDER BY s.[NAME]
SELECT 'test' NAME, '0' [TYPE], null Parent
UNION ALL
SELECT NAME,'1' [type],'test' Parent FROM sysobjects s WHERE s.[type]='U'
union ALL
SELECT NAME,'2' [type],'test' Parent FROM sysobjects s WHERE s.[type]='P'
union ALL
SELECT NAME,'3' [type],'test' Parent FROM sysobjects s WHERE s.[type]='V'
ORDER BY type,name