资源描述
SQLServer,SQLServer,1SQLServer介绍2SQLServer安装3SQLServer使用4SQLServer开发,1SQLServer介绍,1.1SQLServer的发展历程1.2SQLServer的版本1.3SQLServer的特点,1.1SQLServer的发展历程,C/S体系结构的关系型数据库管理系统(RDBMS)1988年推出了第一个OS/2版本1992年,SQLServer移植到NT上后,Microsoft成为这个项目的主导者1994年以后,Microsoft专注于开发、推广SQLServer的WindowsNT版本1996年,Microsoft公司推出了SQLServer6.5版本1998年,推出了SQLServer7.0版本2000年推出了SQLServer2000,1.2SQLServer2000的版本,企业版(EnterpriseEdition)一般作为数据库服务器使用标准版(StandardEdition)一般用于小型的工作组或部门个人版(PersonalEdition)主要适用于移动用户开发人员版(DeveloperEdition)适用于应用程序开发,1.3SQLServer2000的特点,真正的客户机/服务器体系结构图形化用户界面丰富的编程接口工具SQLServer与Windows操作系统完全集成具有很好的伸缩性对Web技术的支持SQLServer提供数据仓库工具,2SQLServer安装,2.1SQLServer2000的环境需求2.2SQLServer的系统数据库,2.1SQLServer2000的环境需求,硬件需求计算机:Intel及其兼容计算机,Pentium166Mz或者更高处理器或DECAlpha及其兼容系统。内存(RAM):企业版最少64MB内存,其它版本最少需要32MB内存,建议使用更多的内存。硬盘空间:完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间,最小安装(Minimum)需要65MB的空间。,2.1SQLServer2000的环境需求,软件需求,2.2SQLServer2000的系统数据库,SQLServer2000系统数据库安装成功,系统自动创建6个系统数据库系统数据库的文件存储在安装目录下的MSSQLData文件夹中,数据库文件的扩展名为.mdf,数据库日志文件的扩展名为.ldf。Master数据库记录SQLServer系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQLServer的初始化信息和其它系统数据库及用户数据库的相关信息。Model数据库是所有用户数据库和Tempdb数据库的模板数据库。它含有Master数据库的所有系统表子集,这些系统数据库是每个用户定义数据库时都需要的。,2.2SQLServer2000的系统数据库,Msdb数据库是代理服务数据库。Tempdb数据库是一个临时数据库。Tempdb数据库由整个系统的所有数据库使用。SQLServer每次启动时,tempdb数据库被重新建立。当用户与SQLServer断开连接时,其临时表被自动删除。Pubs和Northwind数据库是SQLServer自带的两个实例数据库。,Northwind数据库,3SQLServer使用,3.1SQLServer的系统表3.2SQLServer的系统存储过程3.3TransactSQL语言介绍3.4SQLServer的常用工具3.5SQLServer的安全性管理3.6SQLServer数据库的创建和管理3.7SQLServer数据库的对象,3.1SQLServer2000的系统表,Sysobjects表SQLServer的主系统表,出现在每个数据库中。它对每个数据库对象含有一行记录。Syscolumns表出现在master数据库和每个用户自定义的数据库中,它对基表或者视图的每个列和存储过程中的每个参数含有一行记录。Sysindexes表出现在master数据库和每个用户自定义的数据库中,它对每个索引和没有聚簇索引的每个表含有一行记录,它还对包括文本/图像数据的每个表含有一行记录。,3.1SQLServer2000的系统表,Sysusers表出现在master数据库和每个用户自定义的数据库中,它对整个数据库中的每个WindowsNT用户、WindowsNT用户组、SQLServer用户或者SQLServer角色含有一行记录。Sysdatabases表对SQLServer系统上的每个系统数据库和用户自定义的数据库含有一行记录,只出现在master数据库中。Sysdepends表对表、视图和存储过程之间的每个依赖关系含有一行记录,出现在master数据库和每个用户自定义的数据库中。,3.2SQLServer2000的系统存储过程,系统存储过程是由SQLServer2000系统自动创建的存储过程系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。可以从任何数据库中执行系统存储过程。,3.3Transact-SQL语言简介,结构化查询语言SQL(StructuredQueryLanguage)SQL语言是关系型数据库环境下的标准查询语言目前,最新的SQL标准是1992年制定的SQL-92微软公司在SQL标准的基础上做了大幅度扩充SQLServer使用的SQL语言称为Transact-SQL语言,3.3Transact-SQL语言简介,在Transact-SQL语言的命令格式中:用括起来的内容表示是可选的,n表示重复前面的内容用括起来表示在实际编写语句时,用相应的内容替代用括起来表示是必选的类似A|B的格式,表示A和B只能选择一个,不能同时都选示例SELECTselect_listINTOnew_tableFROMtable_sourceWHEREsearch_conditionGROUPBYgroup_by_expressionHAVINGsearch_conditionORDERBYorder_expressionASC|DESC,3.4SQLServer2000常用工具,常用工具为了管理SQLServer2000的服务器和客户机,使用SQLServer2000开发数据库和应用程序,SQLServer2000提供了一套常用的管理工具和实用程序。主要的管理工具和实用程序如下:服务管理器企业管理器查询分析器服务器网络实用工具客户端网络实用工具导入和导出数据联机帮助文档,3.5SQLServer2000的安全性管理,SQLServer2000登录身份验证模式SQLServer身份验证Windows身份验证SQLServer数据库的安全性用户成功登录SQLServer服务器后,并不自动拥有对所有数据库的访问权限。用户必须在想要访问的数据库中也有一个帐户。当需要访问某个数据库时,SQLServer的安全系统会根据这个帐户的权限决定是否允许用户访问该数据库。,3.5SQLServer2000的安全性管理,SQLServer数据库对象的安全性在创建一个数据库对象时,创建者将自动拥有对该数据库对象的所有权,即可以完全控制该对象。当一个非数据库拥有者想要访问数据库中的对象时,必须事先由数据库拥有者赋予该用户对指定对象的操作权限。管理服务器的安全性服务器角色登陆数据库角色用户特殊帐户sa,3.6SQLServer2000数据库的创建和管理,数据库的存储结构数据库的存储结构分为逻辑存储结构和物理存储结构。数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成。实际上,SQLServer的数据库是由诸如表、视图、索引等各种不同的数据库对象所组成。数据库的物理存储结构是指数据库文件是如何在磁盘上存储的。SQLServer的数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。,3.6SQLServer2000数据库的创建和管理,数据库的创建创建数据库需要一定许可,在默认情况下,只有系统管理员和数据库拥有者可以创建数据库。数据库被创建后,创建数据库的用户自动成为该数据库的所有者。创建数据库的过程实际上就是为数据库设计名称、设计所占用的存储空间和存放文件位置的过程等。可以使用企业管理器和Transact-SQL语言创建数据库。数据库的修改、删除数据库的备份,3.7SQLServer2000数据库的对象,3.7.1表3.7.2约束3.7.3数据类型3.7.4视图3.7.5索引3.7.6存储过程3.7.7触发器,3.7.1表,基本概念表是包含数据库中所有数据的数据库对象,用来存储各种信息。在SQLServer2000中,一个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列。在同一数据库的不同表中,可以有相同的字段,但在同一个表中不允许有相同的字段,而且每个字段都要求数据类型相同。,3.7.1表,表的创建默认值。指定列的默认值。定义为timestamp或带IDENTITY属性的列不能指定。只有常量值(如字符串)、SQLServer内部函数(如SYSTEM_USER()或NULL值可以用作默认值。精度和小数位数。精度是列的总长度,包括整数部分和小数部分的长度之和,但不包括小数点;小数位数指定小数点后面的长度。标识。指定列是否是标识列。一个表只能创建一个标识列。必须同时指定种子和增量,或者两者都不指定,默认值(1,1)。能够成为标识列的数据类型有int、smallint、tinyint、numeric和decimal等系统数据类型;如果其数据类型为numeric和decimal,不允许出现小数位数。公式。用于指定计算列的列值表达式。排序规则。指定列的排序规则。在数据库中表名必须是唯一的,但是如果为表指定了不同的用户,就可以创建多个相同名称的表。,3.7.1表,表中数据的操作在企业管理器中操作表中的数据使用SELECT语句查询数据使用INSERT语句插入数据使用UPDATE语句更新数据使用DELETE语句删除数据,SELECT语法,SELECTselect_listINTOnew_tableFROMtable_sourceWHEREsearch_conditionGROUPBYgroup_by_expressionHAVINGsearch_conditionORDERBYorder_expressionASC|DESC,INSERT语法,INSERTINTOtable_nameWITH(.n)|view_name|rowset_function_limited(column_list)VALUES(DEFAULT|NULL|expression,.n)|derived_table|execute_statement|DEFAULTVALUES,UPDATE语法,UPDATEtable_nameWITH(.n)|view_name|rowset_function_limitedSETcolumn_name=expression|DEFAULT|NULL|variable=expression|variable=column=expression,.nFROM,.nWHERE|WHERECURRENTOFGLOBALcursor_name|cursor_variable_nameOPTION(,.n),DELETE语法,DELETEFROMtable_nameWITH(.n)|view_name|rowset_function_limitedFROM,.nWHERE|CURRENTOFGLOBALcursor_name|cursor_variable_name,3.7.2约束,约束是SQLServer提供的自动保持数据库完整性的一种方法列级约束。列级约束是列定义的一部分,只能够应用在一列上。表级约束。表级约束独立于列的定义,可以应用在一个表的多列上。主键约束主键能唯一地确定表中的每一条记录,可以保证实体的完整性。不能取空值。唯一性约束唯一性约束用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值使用唯一性约束的字段允许为空值一个表中可以允许有多个唯一性约束可以把唯一性约束定义在多个字段上唯一性约束用于强制在指定字段上创建一个唯一性索引默认情况下,创建的索引类型为非聚集索引,3.7.2约束,检查约束保证数据库数据的完整性一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关一个表中可以定义多个检查约束每个CREATETABLE语句中每个字段只能定义一个检查约束在多个字段上定义检查约束,必须将检查约束定义为表级约束当执行INSERT语句或者UPDATE语句时,检查约束将验证数据检查约束中不能包含子查询默认约束每个字段只能定义一个默认约束如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上,3.7.2约束,外键约束外键约束主要用来维护两个表之间数据的一致性外键约束提供了字段参照完整性外键约束不能自动创建索引,需要用户手动创建用户想要修改外键约束的数据,必须有对外键约束所参考表的SELECT权限或者REFERENCES权限参考同一表中的字段时,必须只使用REFERENCES子句,不能使用外键子句一个表中最多可以有31个外键约束在临时表中,不能使用外键约束主键和外键的数据类型必须严格匹配,3.7.3数据类型,整型数据类型Bigint、Int、Smallint、Tinyint浮点数据类型Real:4个字节的,最大7位精确位数。Float:可以精确到第15位小数,默认占用8个字节的存储空间。Float数据类型也可以写为float(n)的形式,n为115之间的整数值。当n取17时,系统用4个字节存储它;当n取815时,用8个字节存储它。Decimal和numeric:可以提供小数所需要的实际存储空间,可以用217个字节来存储。也可以将其写为decimal(p,s)的形式。例如:decimal(10,5),表示共有10位数,其中整数5位,小数5位。,3.7.3数据类型,字符数据类型用来存储各种字母、数字符号和特殊符号。在使用时需要在其前后加上英文单引号或者双引号。Char:其定义形式为:char(n)n的取值为18000。默认n的值为1。Varchar:可以存储长达8000个字符的可变长度字符串,和char类型不同varchar类型根据输入数据的实际长度而变化。其定义形式为:varchar(n)。Nchar:采用Unicode(统一字符编码标准)字符集每个Unicode字符用两个字节为一个存储单位。其定义形式为:nchar(n)。Nvarchar:使用Unicode字符集的Varchar数据类型。其定义形式为:nvarchar(n)。,3.7.3数据类型,日期和时间数据类型Datetime:占用8个字节。用于存储日期和时间的结合体,可以存储从公元1753年1月1日零时起公元9999年12月31日23时59分59秒之间的所有日期和时间,其精确度可达三百分之一秒。当存储datetime数据类型时,默认的格式是:MMDDYYYYhh:mmA.M./P.M。当插入数据或者在其它地方使用datetime类型时,需要用单引号把它括起来。默认January1,190012:00A.M。可以接受的输入格式如下:Jan41999、JAN41999、January41999、Jan19994、19994Jan和1999Jan4。datetime数据类型允许使用/、-和.作为不同时间单位间的分隔符。Smalldatetime:4个字节。存储从1900年1月1日2079年6月6日内的日期。,3.7.3数据类型,文本和图形数据类型Text:容量可以在1231-1个字节。在定义Text数据类型时,不需要指定数据长度,SQLServer会根据数据的长度自动为其分配空间。Ntext:采用unicode标准字符集,用于存储大容量文本数据。其理论上的容量为230-1(1,073,741,823)个字节。Image:用于存储照片、目录图片或者图画,其理论容量为231-1(2,147,483,647)个字节。货币数据类型Money:用于存储货币值,数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为-922337213685477.5808922337213685477.5808,精度为货币单位的万分之一。Smallmoney:其存储范围为-214748.3468214748.3467。当为money或smallmoney的表输入数据时,必须在有效位置前面加一个货币单位符号(如$或其它货币单位的记号)。,3.7.3数据类型,位数据类型Bit称为位数据类型,有两种取值:0和1。在输入0以外的其它值时,系统均把它们当1看待。特殊数据类型Timestamp:也称作时间戳数据类型。是一种自动记录时间的数据类型,主要用于在数据表中记录其数据的修改时间。它提供数据库范围内的唯一值。Uniqueidentifier:也称作唯一标识符数据类型。Uniqueidentifier用于存储一个16字节长的二进制数据类型,它是SQLServer根据计算机网络适配器地址和CPU时钟产生的全局唯一标识符代码(GloballyUniqueIdentifier,简写为GUID)。,3.7.4视图,视图的概念视图是是从一个或者多个数据表或视图中导出的虚表,视图的结构和数据是对数据表进行查询的结果。视图被定义后便存储在数据库中,通过视图看到的数据只是存放在基表中的数据。当对通过视图看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。视图可以是一个数据表的一部分,也可以是多个基表的联合。视图的优点视图可以屏蔽数据的复杂性,简化用户对数据库的操作。视图可以让不同的用户以不同的方式看到不同或者相同的数据集。可以使用视图重新组织数据。视图可以定制不同用户对数据的访问权限。,3.7.4视图,创建视图视图的名称只能在当前数据库中创建视图。一个视图中行、列的限制。如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。不能在视图上创建索引,不能在规则、默认的定义中引用视图。,3.7.4视图,使用视图修改视图中的数据时每次修改都只能影响一个基表。不能修改那些通过计算得到的字段。如果在创建视图时指定了WITHCHECKOPTION选项,那么所有使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围。执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。如果视图引用多个表时,无法用DELETE命令删除数据,若使用UPDATE命令则应与INSERT操作一样,被更新的列必须属于同一个表。,3.7.5索引,索引的概念数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。索引的优点可以大大加快数据检索速度。通过创建唯一索引,可以保证数据记录的唯一性。在使用ORDERBY和GROUPBY子句进行检索数据时,可以显著减少查询中分组和排序的时间。使用索引可以在检索数据的过程中提高系统性能。可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。,3.7.5索引,索引的分类聚集索引和非聚集索引复合索引唯一索引,3.7.6存储过程,存储过程的概念SQLServer的存储过程类似于编程语言中的过程。在使用Transact-SQL语言编程的过程中,可以将某些需要多次调用的实现某个特定任务的代码段编写成一个过程,将其保存在数据库中,并由SQLServer服务器通过过程名来调用它们,这些过程就叫做存储过程。存储过程在创建时就被编译和优化,调用一次以后,相关信息就保存在内存中,下次调用时可以直接执行。存储过程的优点实现了模块化编程。存储过程具有对数据库立即访问的功能。使用存储过程可以加快程序的运行速度。使用存储过程可以减少网络流量。使用存储过程可以提高数据库的安全性。,存储过程示例,CREATEPROCEDUREfindproductarticlechar(11)ASSELECT*FROMproductWHEREarticlelikearticleGO,存储过程执行,EXECUTEfindproduct电阻EXECUTEfindproductarticle=电阻EXECfindproduct电阻EXECfindproductarticle=电阻,3.7.7触发器,触发器的概念触发器是一种特殊类型的存储过程。一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行触发器是一个功能强大的工具,在表中数据发生变化时自动强制执行。触发器可以用于SQLServer约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能。触发器的优点触发器是自动的执行的。触发器可以通过数据库中的相关表进行层叠更改。,触发器示例一,CREATETRIGGERtrg_d_statitemONdbo.itemfieldFORDELETEASdeletestatitemfromstatitem,deletedwherestatitem.fieldid=deleted.fieldid,触发器示例二,CREATETRIGGERtrg_i_statitemONdbo.itemfieldFORINSERTASinsertintostatitemselectfieldid,itemid,fieldsn,fieldsn,sequences,type,inputtype,0,Y,Y,Yfrominserted,触发器示例三,CREATETRIGGERtrg_u_statitemONdbo.itemfieldFORUPDATEASifupdate(fieldid)orupdate(itemid)orupdate(fieldsn)orupdate(sequences)orupdate(type)orupdate(inputtype)updatestatitemsetfieldid=inserted.fieldid,itemid=inserted.itemid,fieldsn=inserted.fieldsn,sequences=inserted.sequences,type=inserted.type,inputtype=inserted.inputtypefrominserted,deletedwherestatitem.fieldid=deleted.fieldid,4Transact-SQL程序设计,概述注释变量运算符函数流程控制语句,
展开阅读全文