T-SQL是标准SQL的增强版,是用来让应用程序与SQL Server沟通的主要语言。T-SQL提供标准SQL的DDL和DML功能,加上延伸的函数、系统预存程序以及程序设计结构(例如IF和WHILE)让程序设计更有弹性。T-SQL的功能随着新版SQL Server而持续成长。
1.压缩数据库 压缩数据库和数据库文件的操作也可以通过T-SQL指令dbcc shrinkdatabase和dbcc shrinkfile完成。
收缩orders数据库,使orders中只有20%的可用空间:
dbcc shrinkdatabase (orders, 20)
go
收缩orders数据库,将其中任何未使用的空间都释放给操作系统。
dbcc shrinkdatabase (orders, truncateonly)
go
将数据库orders中的数据文件orders_Data压缩到20MB:
use orders
go
dbcc shrinkfile(orders_Data, 20)
go
2.备份数据库 备份数据库使用的T-SQL命令是backup database。
完全备份Student数据库到C盘backup目录,先在C盘新建目录backup,然后在查询分析器中执行命令:
backup database student to disk='C:\backup\stu_bak.dat' with format, name='student完全备份'
go
3.索引管理在一个规模庞大的数据库中检索数据可能花费很长的时间。如果某个数据库应用系统中,要经常进行这种检索,
那么检索时所花费的时间可能就是这个系统性能提高的瓶颈所在。索引可以用来快速访问数据库表中的特定信息。
无索引前提下根据Id查content(顺序查询)有索引前提下根据Id查content(二分查询)
为表students的列lD 创建聚集索引,索引名称为ID_ind,并且强制唯一性。聚集索引会对磁盘上的数据进行物理排序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。
create unique clustered index ID_ind on students(ID)
go
为表order_emp的列orderID和employeeID创建索引,索引名称为emp_order_ind。
create index emp_order_ind on order_emp(orderID, employeeID)
删除表students内名为Name_ind的索引。
USE students
if exists(select name form sysindexes where name='Name_ind')
drop index students.Name_ind
go
4,存储过程管理 顾名思义,存储过程就是存储在SQL Server服务器中的一组编译成单个执行计划的T-SQL语句。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。
使用存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。
存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理,其中可以包含程序流、逻辑以及对数据库的查询。它们还可以接受参数、输出参数、返回单个或多个结果集以及返回值。
在使用SQL Server创建应用程序时,T-SQL编程语言是应用程序和SQL Server数据库之间的主要编程接口。
使用T-SQL程序时,可用两种方法存储和执行程序,可以在本地存储程序,并创建向SQL Server发送命令并处理结果的应用程序;也可以将程序在SQL Server中存储为存储过程,并创建执行存储过程并处理结果的应用程序。
创建一个从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社的存储过程。该存储过程不使用任何参数。
Use pubs
Go
Create procedure au_info_all
As
SELECT au_lname, au_fname, title, pub_name from authors a INNER JOIN titleauthor ta
ON a.au_id=ta.au_id INNER JOIN title t
ON t.title_id=ta.title_id INNER JOIN publishers p
ON t.pub_id=p.pub_id
Go
执行该存储过程
EXEC au_info_all
从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程接受与传递的参数精
确匹配的值。
USE pubs
Go
create procedure au_info
@lastname varchar(40),@firstname varchar(20)
as
select au_lname,au_fname,title,pub_name from authors a INNER JOIN titleauthor ta
ON a.au_id=ta.au_id INNER JOIN title t
ON t.title_id=ta.title_id INNER JOIN publishers p
ON t.pub_id=p.pub_id
where au_fname=@firstname and au_lname=@lastname
执行该存储过程,其中firstname的参数值为Tom,lastname的参数值为Cat。
EXEC au_info @firstname=Tom, @lastname=Cat
或
EXEC au_info @firstname='Tom',@lastname='Cat'
修改存储过程的语句和创建存储过程的语句基本相同:
Alter procedure
...
As
...
删除存储过程的语句更简单:
Drop procedure ...L垎NKm諎<