SQL Server语句积累

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



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安得权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值