仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 666|回复: 7
打印 上一主题 下一主题

[学习教程] T-SQL言语基本

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:07:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
恢复到之前的某个状态,是需要数据的。这数据可以是a)回滚步骤或者b)操作之前的数据状态原文。T-SQL是尺度SQL的加强版,是用来让使用程序与SQLServer相同的次要言语。T-SQL供应尺度SQL的DDL和DML功效,加上延长的函数、体系预存程序和程序计划布局(比方IF和WHILE)让程序计划更有弹性。T-SQL的功效跟着新版SQLServer而延续发展。

1.紧缩数据库
紧缩数据库和数据库文件的操纵也能够经由过程T-SQL指令dbccshrinkdatabase和dbccshrinkfile完成。
压缩orders数据库,使orders中只要20%的可用空间:
dbccshrinkdatabase(orders,20)
go

压缩orders数据库,将个中任何未利用的空间都开释给操纵体系。
dbccshrinkdatabase(orders,truncateonly)
go

将数据库orders中的数据文件orders_Data紧缩到20MB:
useorders
go
dbccshrinkfile(orders_Data,20)
go

2.备份数据库
备份数据库利用的T-SQL命令是backupdatabase。
完整备份Student数据库到C盘backup目次,先在C盘新建目次backup,然后在查询剖析器中实行命令:
backupdatabasestudenttodisk=C:ackupstu_bak.datwithformat,name=student完整备份
go


3.索引办理
在一个范围复杂的数据库中检索数据大概消费很长的工夫。假如某个数据库使用体系中,要常常举行这类检索,
那末检索时所消费的工夫大概就是这个体系功能进步的瓶颈地点。索引能够用来疾速会见数据库表中的特定信息。

无索引条件下依据Id查content(按次查询)有索引条件下依据Id查content(二分查询)
为表students的列lD创立会萃索引,索引称号为ID_ind,而且强迫独一性。会萃索引会对磁盘上的数据举行物理排序。会萃索引相似于德律风簿,后者按姓氏分列数据。因为会萃索引划定数据在表中的物理存储按次,因而一个表只能包括一个会萃索引。但该索引能够包括多个列(组合索引),就像德律风簿按姓氏和名字举行构造一样。
createuniqueclusteredindexID_indonstudents(ID)
go

为表order_emp的列orderID和employeeID创立索引,索引称号为emp_order_ind。
createindexemp_order_indonorder_emp(orderID,employeeID)

删除表students内名为Name_ind的索引。
USEstudents
ifexists(selectnameformsysindexeswherename=Name_ind)
dropindexstudents.Name_ind
go


4,存储历程办理
望文生义,存储历程就是存储在SQLServer服务器中的一组编译成单个实行企图的T-SQL语句。存储历程存储在数据库内,可由使用程序经由过程一个挪用实行,并且同意用户声明变量、有前提实行和其他壮大的编程功效。
利用存储历程可使得对数据库的办理、和显现关于数据库及其用户信息的事情简单很多。
存储历程是SQL语句和可选把持流语句的预编译汇合,以一个称号存储并作为一个单位处置,个中能够包括程序流、逻辑和对数据库的查询。它们还能够承受参数、输入参数、前往单个或多个了局集和前往值。
在利用SQLServer创立使用程序时,T-SQL编程言语是使用程序和SQLServer数据库之间的次要编程接口。
利用T-SQL程序时,可用两种办法存储和实行程序,能够在当地存储程序,并创立向SQLServer发送死令并处置了局的使用程序;也能够将程序在SQLServer中存储为存储历程,并创立实行存储历程并处置了局的使用程序。
创立一个从四个表的连接中前往一切作者(供应了姓名)、出书的书本和出书社的存储历程。该存储历程不利用任何参数。
Usepubs
Go
Createprocedureau_info_all
As
SELECTau_lname,au_fname,title,pub_namefromauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_idINNERJOINtitlet
ONt.title_id=ta.title_idINNERJOINpublishersp
ONt.pub_id=p.pub_id
Go

实行该存储历程
EXECau_info_all

从四个表的连接中只前往指定的作者(供应了姓名)、出书的书本和出书社。该存储历程承受与传送的参数精
确婚配的值。
USEpubs
Go
createprocedureau_info
@lastnamevarchar(40),@firstnamevarchar(20)
as
selectau_lname,au_fname,title,pub_namefromauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_idINNERJOINtitlet
ONt.title_id=ta.title_idINNERJOINpublishersp
ONt.pub_id=p.pub_id
whereau_fname=@firstnameandau_lname=@lastname

实行该存储历程,个中firstname的参数值为Tom,lastname的参数值为Cat。
EXECau_info@firstname=Tom,@lastname=Cat

EXECau_info@firstname=Tom,@lastname=Cat

修正存储历程的语句和创立存储历程的语句基础不异:
Alterprocedure
...
As
...

删除存储历程的语句更复杂:
Dropprocedure...既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
透明 该用户已被删除
沙发
发表于 2015-1-18 12:08:05 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
深爱那片海 该用户已被删除
板凳
发表于 2015-1-24 16:47:07 来自手机 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
柔情似水 该用户已被删除
地板
发表于 2015-2-7 19:08:46 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
活着的死人 该用户已被删除
5#
发表于 2015-2-23 08:58:13 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
冷月葬花魂 该用户已被删除
6#
发表于 2015-3-7 07:35:46 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
莫相离 该用户已被删除
7#
发表于 2015-3-14 17:27:24 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
再见西城 该用户已被删除
8#
发表于 2015-3-21 13:59:02 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-10 06:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表