t-sql 使用小技巧

preview
需积分: 0 11 下载量 181 浏览量 更新于2008-11-26 收藏 951KB DOC 举报
1.按姓氏笔画排序 2.数据库加密 3.取回表中字段 4.查看硬盘分区 5.杀掉所有的事件探察器进程 6.记录搜索 7.修改数据库的名称 8.获取某一个表的所有字段 9.查看当前数据库中所有存储过程 10. 树型的实现 .... 在SQL语言中,T-SQL(Transact-SQL)是微软SQL Server数据库管理系统所使用的扩展。以下是一些T-SQL的实用技巧: 1. **按姓氏笔画排序**: 在SQL Server中,你可以通过设置排序规则(collation)来按照姓氏笔画排序。例如: ```sql Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as ``` 这里`Chinese_PRC_Stroke_ci_as`是中文排序规则,`ci`代表不区分大小写,`as`表示对重音不敏感。 2. **数据库加密**: SQL Server提供了`ENCRYPTBYKEY`和`DECRYPTBYKEY`函数用于加密和解密数据。不过在描述中提到的`encrypt`和`pwdencrypt`是早期版本的函数,现在已经不太推荐使用。现在更安全的方法是使用透明数据加密(TDE)或列级加密。 3. **取回表中字段**: 你可以动态生成SQL语句来获取表的所有字段。下面的例子展示了如何做到这一点: ```sql DECLARE @list varchar(1000), @sql nvarchar(1000) SELECT @list = @list + ',' + b.name FROM sysobjects a, syscolumns b WHERE a.id = b.id AND a.name = '表 A' SET @sql = 'SELECT ' + RIGHT(@list, LEN(@list) - 1) + ' FROM 表 A' EXEC (@sql) ``` 4. **查看硬盘分区**: `EXEC master..xp_fixeddrives`这个命令可以显示服务器的硬盘分区信息。 5. **比较两个表是否相等**: 使用`checksum_agg(binary_checksum(*))`可以计算整个表的校验和,从而判断两个表是否完全相同。 6. **杀掉事件探察器进程**: 当需要关闭所有SQL Profiler或SQL事件探查器进程时,可以使用如下语句: ```sql DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill ' + RTRIM(spid) FROM master.dbo.sysprocesses WHERE program_name IN('SQL profiler',N'SQL 事件探查器') EXEC sp_msforeach_worker '?' ``` 7. **记录搜索**: 获取特定范围的记录可以通过`TOP`关键字配合`ORDER BY`实现。例如,获取前N条记录,N到M条记录,以及从N到最后的记录。 8. **修改数据库名称**: 使用系统存储过程`sp_renamedb`可以轻松地更改数据库名称,如`sp_renamedb 'old_name', 'new_name'`。 9. **获取所有用户表**: `SELECT Name FROM sysobjects WHERE xtype='u' AND status>=0`可以列出当前数据库的所有用户表。 10. **获取表的所有字段**: `SELECT name FROM syscolumns WHERE id=object_id('表名')`可以获取指定表的所有字段名。 11. **查看与表相关的对象**: 通过`sysobjects`和`syscomments`可以查找包含特定表名的视图、存储过程和函数。 12. **查看所有存储过程**: `SELECT name AS 存储过程名称 FROM sysobjects WHERE xtype='P'`会列出所有存储过程。 13. **查询用户创建的数据库**: `SELECT * FROM master..sysdatabases D WHERE sid NOT IN(SELECT sid FROM master..syslogins WHERE name='sa')`或者`SELECT dbid, name AS DB_NAME FROM master..sysdatabases WHERE sid <> 0x01`可以显示非默认用户(非sa)创建的数据库。 14. **查询表的字段和数据类型**: 使用`information_schema.columns`视图可以获取表的字段名和数据类型,如`SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '表名'`。 这些技巧涵盖了数据检索、处理、安全性和管理等多个方面,对日常的SQL Server数据库操作非常有用。在实际工作中,熟练掌握这些技巧可以提高工作效率并确保数据安全。