t-sql 使用小技巧
需积分: 0 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数据库操作非常有用。在实际工作中,熟练掌握这些技巧可以提高工作效率并确保数据安全。