欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Sql随手笔记 » 正文

热门阅读

T-SQL语言基础

创建时间:2011年12月12日 21:00  阅读次数:(6184)
分享到:
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諎<
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论1条
  • #1楼  评论人:匿名  评论时间:2014-11-28 16:43:49
  • 不错
发表评论:
留言人:
内  容:
请输入问题 32+71=? 的结果(结果是:103)
结  果: