MSSQL网页编程之数据库相干之SQL Server(一)
提供用于管理、检查、优化数据库操作的管理工具。server|数据|数据库1.1、初级查询语句1、TRUNCATETABLE
删除表中的一切行,而不纪录单个行删除操纵。
TRUNCATETABLE在功效上与不带WHERE子句的DELETE语句不异:两者均删除表中的全体行。但TRUNCATETABLE比DELETE速率快,且利用的体系和事件日记资本少。
DELETE语句每次删除一行,并在事件日记中为所删除的每行纪录一项。TRUNCATETABLE经由过程开释存储表数据所用的数据页来删除数据,而且只在事件日记中纪录页的开释。
新行标识所用的计数值重置为该列的种子。假如想保存标识计数值,请改用DELETE。
关于由FOREIGNKEY束缚援用的表,不克不及利用TRUNCATETABLE,而应利用不带WHERE子句的DELETE语句。因为TRUNCATETABLE不纪录在日记中,以是它不克不及激活触发器。
2、SP_DATABASES
前往在sysdatabases体系表中列出的数据库。
sp_databases在开放式数据库毗连(ODBC)中没有等价的历程。
3、SP_DATATYPE_INFO
sp_datatype_info等价于ODBC中的SQLGetTypeInfo。前往了局按DATA_TYPE排序,再按数据范例映照为响应ODBCSQL数据范例的严密水平举行排序。
4、SP_COLUMNS
前往以后情况中可查询的指定表或视图的列信息。
Sp_columns
Or:sp_columns@table_name=,@column_name=
5、SP_TABLES
用法同上,不再雷述。
1.2、存储历程
一切计划优秀的Microsoft®SQLServer™2000使用程序都应该利用存储历程。不管是不是将使用程序的营业逻辑写进存储历程都应云云。乃至连没有营业逻辑组件的尺度Transact-SQL语句,在用参数打包成存储历程后也能取得功能收益。编译进存储历程的Transact-SQL语句在实行时可省往大批的处置。
1.2.1存储历程的计划划定规矩
lCREATEPROCEDURE界说自己可包含除以下CREATE语句之外的任何数目和范例的SQL语句,存储过程当中的恣意中央都不克不及利用以下语句:
CREATEDEFAULT
CREATETRIGGER
CREATEPROCEDURE
CREATEVIEW
CREATERULE
l存储过程当中参数的最年夜数量为2100。
l能够在存储历程内援用一时表。
l假如在存储历程内创立当地一时表,则该一时表仅为该存储历程而存在;加入该存储历程后,一时表即会消散。
1.2.2创立存储历程
示例:
CREATEPROCEDURE
@p_Casebrief_codeasvarchar(50),@p_Object_idasinteger,@p_Spy_starttimeasdatetime,
@p_Spy_endtimeasdatetime,@p_Casebrief_idasintegerout
as
insertintoCase_brief_telecom(Casebrief_code,object_id,Spy_starttime,Spy_endtime,)
values(@p_Casebrief_code,@p_Object_id,@p_Spy_starttime,@p_Spy_endtime)
select@p_Casebrief_id=@@identity
GO
****p_Casebrief_id为该表的主键,主动增加。
lMicrosoft®SQLServer™2000存储历程以四种体例前往数据:
1、输入参数,既能够前往数据(整型值或字符值等),也能够前往游标变量(游标是能够逐行检索的了局集)。
2、前往代码,一直是整型值。
3、SELECT语句的了局集,这些语句包括在该存储历程内或该存储历程所挪用的任何别的存储历程内。
4、可从存储历程外援用的全局游标。
l当一个存储历程挪用另外一个存储历程时,存储历程就会嵌套。存储历程最多能够嵌套32级。被挪用存储历程入手下手实行时,嵌套级数增添一级;被挪用存储历程完成实行时,嵌套级数削减一级。试图超越32级的最高嵌套级数时,将招致全部存储历程挪用链的失利。正在实行的存储历程确当前嵌套级数存储在@@NESTLEVEL函数中。
l存储过程当中利用游标:
CREATEprocedureXG_Insert_XXX
as
declare@object_idasint
declare@CaseBriefIDasvarchar(4)
declare@number_styleasvarchar(50)
declare@strNumberType2asvarchar(50)
declare@number_codeasvarchar(50)
declare@strSQLasvarchar(1000)
declare@strSQL1asvarchar(255)
declare@brief_codeasvarchar(50)
declare@creatorasvarchar(50)
declare@BHasvarchar(50)
DECLAREOBJECT_CURSORCURSOR
FORSELECTdistinctobject_id,CaseBrief_ID,casebrief_code,table_creatorfromcase_XXX
OPENOBJECT_CURSOR
FETCHNEXTFROMOBJECT_CURSORINTO@object_id,@CaseBriefID,@brief_code,@creator
while(@@FETCH_STATUS=0)
BEGIN
SELECT@BH=FullCodefromView_user_depIDwhereLoginName=+@creator+
print@BH
DECLARENUMBER_CURSORCURSOR
FORSELECTdistinctnumber_style,number_codefromcase_XXXwhereobject_id=@object_id
OPENNUMBER_CURSOR
FETCHNEXTFROMNUMBER_CURSORINTO@number_style,@number_code
while(@@FETCH_STATUS=0)
BEGIN
set@strSQL=insertintoCASE_XXX(CASEBRIEF_ID,NUM_TYPE,NUMBER)values(+@CaseBriefID+,+@number_style+,+@number_code+)
exec(@strSQL)
FETCHNEXTFROMNUMBER_CURSORINTO@number_style,@number_code
END
CLOSENUMBER_CURSOR
DEALLOCATENUMBER_CURSOR
FETCHNEXTFROMOBJECT_CURSORINTO@object_id,@CaseBriefID,@brief_code,@creator
END
CLOSEOBJECT_CURSOR
DEALLOCATEOBJECT_CURSOR
GO
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。 大侠们有推荐的书籍和学习方法写下吧。 同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。 SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上. 原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。 理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识 我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
页:
[1]