1/15第二章系统数据类型介绍p24创建用户自定义数据类型:sp_addtypetype_name,phystype[(length)|([precision,scale]),null|notnull|identity]查看,重命名,删除用户定义的数据类型:sp_helptype_name查看用户自定义数据类型的特征;sp_renametype_name给用户自定义数据类型重新命名;sp_droptypetype_name删除一个已经定义且未被使用的用户自定义数据类型。定义局部变量:DECLAER{@local_variabledata_type}[…n]设定局部变量的值,必须使用SELECT命令或者SET命令。其语法形式为:SET{{@local_variable=expression}或者SELECT{@local_variable=expression}[,...n]全局变量:全局变量分为两类,一是与SQLServer连接有关的全局变量,如@@rowcount表示受最近一个语句影响的行数;二是关于系统内部信息有关的全局变量,如@@version表示SQLServer的版本号。SQLServer运算符的优先级别数学函数:字符串函数:2/15日期函数:转换函数:系统函数:3/15聚合函数:批和脚本:批处理:包含一个或多个T-SQL语句的组,它将一次性地发送到SQLServer中执行,用GO来通知SQLServer一批T-SQL语句的结束。脚本就是一系列顺序提交的批。流程控制:各语句的作用:BEGIN…END用来设定一程序块IF…ELSE用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。CASE语句为多分支语句WHILE…CONTINUE…BREAK循环语句WAITFOR语句用来暂时停止程序执行GOTO语句用来改变程序执行的流程RETURN语句用于结束当前程序(所在的批、存储过程和触发器)的执行,返回到上一个调用它的程序或其它程序。PRINT语句的作用是在屏幕上显示用户信息。RAISERROR语句的作用是将错误信息显示在屏幕上,同时也可以记录在日志中。各语句的形式:IF…ELSE语句的语法形式:IFBoolean_expressionsql_statement|statement_block[ELSE4/15sql_statement|statement_block]BEGIN…END语句的语法形式:BEGINsql_statement|statement_blockENDCase语句:见p37WHILE…CONTINUE…BREAK语法形式:WHILEBoolean_expressionsql_statement|statement_block[BREAK]sql_statement|statement_block[CONTINUE]WAITFOR语句的语法形式为:WAITFOR{DELAY'time'|TIME'time'}RETURN语句的语法形式为:RETURN[integer_expression]GOTO和RAISERROR见p39-40第三章数据库的逻辑结构从逻辑角度,SQLServer2005将数据库组织成为各种数据库对象,如数据表、视图、索引、数据类型、存储过程、触发器等。(各对象的定义见p48)。数据库的物理结构从物理角度,SQLServer2005数据库以多种操作系统文件形式存储在计算机硬盘上,一般一个数据库被组织成数据文件和日志文件两种类型的文件。主要数据文件(.mdf),该文件包含数据库的启动信息,并用于存储数据次要数据文件(.ndf),它含有不能置于主要数据文件中的数据,可以有多个,并分布在不同磁盘上。日志文件(.ldf),记录了用户对数据库的所有操作。文件组文件组是数据库中数据文件的逻辑组合。每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。数据文件的组织方式:数据文件由若干个大小为64KB的区组成,每个区由8个8KB大小的连续空间组成,这些连续空间被成为数据页。在数据页上,数据行紧接着页首按顺序存放。页尾有一个行偏移表,表中页上的每一行都有一个条目,每个条目记录那一行的第一个字节与页首的距离。SQLServer2005有两种区,统一区和混合区。统一区属于单个数据库对象所有,区所有的数据页只能由拥有该区的对象使用;混合区最多可以由8个逻辑对象来使用。事务日志:事务日志是数据库中已经发生的一连串修改和操作的记录。5/15SQLServer2005包含两种类型的数据库:系统数据库和用户数据库。系统数据库存储有关数据库系统的信息,例如master、model、msdb、tempdb。master数据库记录SQLServer2005的所有系统级信息,包括登录帐户和系统配置设置。model数据库为用户创建新的数据库提供模板。msdb数据库是代理服务使用的数据库,代理程序调度警报作业以及记录操作员的操作时使用。tempdb数据库保存所有的临时表和临时存储过程。创建用户数据库:CREATEDATABASEdatabase_nameON{[PRIMARY](NAME=logical_file_name,FILENAME=’os_file_name’,[,SIZE=size][,MAXSIZE={max_size|UNLIMTED}][,FILEGROWTH=grow_increment])}[,…n]LOGON{(NAME=logical_file_name,FILENAME=’os_file_name’[,SIZE=size][,MAXSIZE={max_size|UNLIMTED}][,FILEGROWTH=grow_increment])}[,…n]参数说明:参数说明database_name要建立的数据库名称PRIMARY在主文件组中指定文件。ON指定存储数据库数据部分的磁盘文件(数据文件)。LOGON指定建立数据库的日志文件。NAME指定数据或日志文件的文件名称FILENAME指定文件的操作系统文件名和路径。os_file_name中的路径必须指定为SQLServer所安装服务器上的某个文件夹。SIZE指定数据或日志文件的大小。用户可以以MB为单位指定大小,也可以使用默认单位MB来指定大小。如果没有为主文件提供size,则数据库引擎将使用model数据库中的主文件的大小。如果指定了辅助数据文件或日志文件,但未指定该文件的size,则数据库引擎将以1MB作为该文件的大小。。MAXSIZE指定文件能够增长到的最大长度。默认单位为MB,用户也可以以MB来指定该长度。如果没有指定长度的话,文件将一直增长直到磁盘满为止。要建立的数据库大小单位为MB。FILEGROWTH指定文件的增长增量。该参数设置不能超过MAXSIZE参数。指定值的默认单位为MB,用户也可以以KB为单位进行指定,此外还可以使用百分比(%)。如果该参数没有指定的话,默认值为10%,最小值为64KB。6/15修改数据库:ALTERDATABASEdatabasename{ADDfilefilespec[,…n][TOfilegroupfilegroupname]|ADDlogfilefilespec[,…n]|REMOVEfilelogical_file_name[withdelete]|MODIFYfilefilespec|MODIFYname=new_databasename|ADDfilegroupfilegroup_name|REMOVEfilegroupfilegroup_name|MODIFYfilegroupfilegroup_name{filegroup_property|name=new_filegroup_name}}查看数据库状态:sys.databases:数据库和文件目录视图,可以查看有关数据库的基本信息。MicrosoftSQLServer实例中的每个数据库都对应一行sys.databases_files:可以查看有关数据库文件的信息。每个存储在数据库本身中的数据库文件在表中占用一行。sys.master_files:可以查看数据库文件的基本信息和状态信息。master数据库中的每个文件对应一行。增加用户数据库容量:ALTERDATABASEdatabase_nameMODIFYFILE(NAME=file_name,SIZE=newsize)缩减用户数据库容量:P65DBCCSHRINKDATABASE(‘database_name’|database_id|0[,target_percent])[WITHNO_INFOMSGS]数据库快照的作用:1、维护历史数据以生成报表。2、将查询实施在数据库的快照上,可以释放主体数据库上的资源。3、使用快照将数据库恢复到生成快照时的状态比从备份还原快得多。创建快照数据库语法格式CREATEDATABASEdatabase_snapshot_nameON(NAME=logical_file_name,FILENAME='os_file_name')[,...n]ASSNAPSHOTOFsource_database_name数据库更名与删除:p69更名:execsp_renamedb‘old_name’,’new_name’删除:dropdatabasedatabase_name第四章数据表中行和列的作用:每行代表一唯一的记录,每列代表记录中的一个域。7/15创建数据库:CREATETABLE[database_name.[owner].|owner.]table_name({column_definition|column_nameAScomputed_column_expression|table_constraint::=[CONSTRAINTconstraint_name]}|[{PRIMARYKEY|UNIQUE}[,...n]][ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]column_definition::={column_namedata_type}[COLLATEcollation_name]……修改表结构:ALTERTABLEtable_name{[ALTERCOLUMNcolumn_name{new_data_type[(precision[,scale])][COLLATEcollation_name][NULL|NOTNULL]|ADD{[column_definition][,...n]|DROP{[CONSTRAINT]constraint_name|COLUMNcolumn_name}[,...n]插入、更新和删除表数据:查看表结构:使用系统存储过程sp_help查看表结构[EXECUTE]sp_help[table_name]数据插入:INSERT命令完成数据插入。INSERT[INTO]table_name[(column1,column2…)]values(value1,value2…)更新表中现存记录中的数据:UPDATE语句可以更新表中现存记录中的数据UPDATEtable_nameSETcolumn1=modified_value1[,column2=modified_values[,…]][WHEREcolumn1=value1][,column2=value2]删除数据:DELETE语句可以从表中删除一行或多行记录。DELETEFROMtable_name[WHEREcolumn1=value1],[column2=value2]数据完整性:存储在数据库中数据的一致性和正确性。数据完整性分为:实体完整性、参照完整性、域完整性和用户定义完整性四种。约束:CHECK约束8/15限制输入到一列