




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 Transact-SQL语言基础,2019/5/30,2 / 53,我们学习数据库应用技术是为了今后应用和开发数据库系统。然而,数据库开发与应用过程中需要定义数据、查询数据、操纵数据和控制数据,这就离不开Transact SQL语言。 本章教与学的建议: 教师使用2课时边讲边演示,学生使用2课时在课堂内练习,如果先行课程已经学过C语言或VB,则将其重点放在熟悉SQL编辑器的操作上,同时对部分数据表查询操作打点提前量。,第2章 Transact-SQL语言基础,2019/5/30,3 / 53,本章学习任务 T-SQL语言简介 数据类型 系统数据类型和用户定义数据类型 变量、运算符、函数 局部变量和全局变量 运算符 函数 批处理和流程控制 批和脚本 流程控制,第2章 Transact-SQL语言基础,2019/5/30,4 / 53,SQL(Structure Query Language) 结构化查询语言,目前所有关系型数据库管理系统都以SQL作为核心,包括在Java、VC+、VB、Delphi程序设计语言中也都可以使用SQL,是一种真正跨平台跨产品的语言。 SQL语句简洁直观,一条语句可以取代常规程序语言的一段程序,容易维护。 不同数据库的程序设计语言会有所不同,但SQL在所有数据库中都是相同的。,T-SQL语言简介,2019/5/30,5 / 53,T-SQL是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量、运算符、函数、流程控制和注释等语言元素,使得其功能更加强大。 T-SQL对SQL Server 2005十分重要,SQL Server 2005中操作图形界面所能完成的所有功能,都可以利用T-SQL来实现。 与SQL Server通信的所有应用程序都通过向服务器发送T-SQL语句来进行,而与应用程序的界面无关。,T-SQL语言简介,2019/5/30,6 / 53,T-SQL语句分类,2019/5/30,7 / 53,数据查询(SELECT)语句是SQL Server中最基本和最重要的语句之一,所谓查询就是对SQL Server发出一个数据请求,数据查询语句只是提出要“查询什么”和“从什么地方查询”,那“怎么查询”则由数据库管理系统DBMS来完成。 SELECT语句功能强大,使用灵活。 SELECT语句有丰富的子句,其简单的用法是: SELECT FROM WHERE 演示操作示例2.1,T-SQL语句数据查询语句,2019/5/30,8 / 53,T-SQL语句-数据查询(示例2.1),2019/5/30,9 / 53,数据类型是指数据所代表信息的类型,是数值型、字符型、日期型,还是货币型、图像型等其它的类型数据,它关系到SQL Server 2005系统在内存或磁盘上开辟相应的存储空间。 使用数据之前,必须说明将使用的数据的类型。 T-SQL语句中的数据类型既可以是系统提供的数据类型,也可以是用户自定义的数据类型。,数据类型,2019/5/30,10 / 53,字符型数据类型主要用来存储由字母、数字和符号组成的字符串。 对于字符型数据来说,SQL Server提供了三种数据类型:char、varchar和text。 char用于存储长度固定的字符串; varchar用于存储长度可变的字符串; text用于存储无限长的字符串(每行可达2GB)。,系统数据类型-字符型,2019/5/30,11 / 53,二进制型是指数据是由二进制值组成。 SQL Server提供了三种二进制数据类型:binary、varbinary和image。其中binary用于存储长度固定的二进制字符串;varbinary用于存储长度可变的二进制字符串;image用于存储大的字符串。 binary型数据类似于字符型数据,当实际的二进制数据长度小于定义长度时,binary类型会在实际数据的尾部添加二进制的0,而不是空格。 image型数据的存储长度为0231-1个字节,可以用来存储照片、图片或者图画。,系统数据类型-二进制型,2019/5/30,12 / 53,日期型是指用datetime或smalldatetime类型来存储日期和时间数据。 datetime类型的取值范围是1753年1月1日到9999年12月31日; smalldatetime类型的精度小于datetime类型,包含的日期范围较窄,但占用的空间小。 默认情况下,日期型数据的格式是按照“月/日/年”的顺序来设定的。,系统数据类型-日期型,2019/5/30,13 / 53,整型和精确数值类型有:bigint、int、smallint、tinyint和decimal、numeric。 最常用的是int和numeric类型。 int类型是指取值范围在-2147483648到2147483647之间的十进制整数; numeric类型是指取值范围在-1038+1到10381具有固定精度的十进制数据。,系统数据类型-整型和精确数值型,2019/5/30,14 / 53,近似数值型有浮点型float和实型real。 float型数据的取值范围是 -1.79E+3081.79E+308; real型数据的取值范围为-3.40E+383.40E+38。 real类型存储在4个字节中,可以在real数据类型中存储正的或者负的十进制数值; 如果不指定float数据类型的长度,它会被存储在8个字节中。用户可以指定float型数值的长度,当指定长度为17之间的数值时,则实际上定义了一个real数据类型。,系统数据类型-近似数值型,2019/5/30,15 / 53,Unicode字符型有nchar、nvarchar和ntext。 Unicode字符型是基于SQL-92标准中的National Character数据类型的。 SQL-92使用前缀字符n来表示这些数据类型和值。 使用Unicode字符型,一个表列或变量可以存储由Unicode标准所定义的任何字符。 ntext数据类型用来存储大量的文本,它存储的数据范围是0231-1个字节的数据。,系统数据类型-Unicode字符型,2019/5/30,16 / 53,货币数据类型包括money和smallmoney两种。 money用于存储货币值,存储在money数据类型中的数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为 -92233721368547758089223372136854775807,精确到货币单位的1% 。 smallmoney与money数据类型类似,但范围比money数据类型小,其存储范围为-2147483468到2147483467之间,精确到货币单位的1%。 输入money或smallmoney类型数据时,必须在有效位置前面加一个货币单位符号。,系统数据类型-货币型,2019/5/30,17 / 53,Uniqueidentifier用于存储一个16字节长的二进制数据类型,它是SQL Server根据计算机网卡地址和CPU时钟产生的全局惟一标识符代码(Globally Unique Identifier,简写为GUID) Timestamp时间戳数据类型,它提供数据库范围内的惟一值,反应数据库中数据修改的相对顺序,相当于一个计数器。当它所定义的列在更新或插入数据时,此列的值会被自动更新,一个计数值将自动地添加到此Timestamp数据列中。 Table用于存储对表或者视图处理后的结果集。,系统数据类型-其它数据类型,2019/5/30,18 / 53,Sql_variant用于存储除文本、图形数据和Timestamp类型数据外的其他SQL Server数据。 XML可以存储可扩展标记文本数据的数据类型。利用它可以将XML实例存储在表列中或者XML类型的变量中。 Cursor这是变量或存储过程OUTPUT参数的一种数据类型,这些参数包含对游标的引用。 bit位数据类型,其数据有两种取值:0和1,长度为1字节。在输入0以外的其他值时,系统均把它们当1看待。,系统数据类型-其它数据类型,2019/5/30,19 / 53,通过对象资源管理器创建用户定义的数据类型 在“对象资源管理器”中展开数据库,右击“类型”,单击“新建”“用户定义数据类型”菜单项,在弹出的“用户定义数据类型属性”对话框中,输入新建数据类型的名称,选择系统数据类型;更改此数据类型可存储的最大数据长度,选择“允许空值”。,用户定义数据类型,2019/5/30,20 / 53,利用系统存储过程创建用户定义数据类型 语法如下:sp_addtype type_name , phystype(length)|(precision,scale),null | not null | identity 其中:type_name,用户定义的数据类型的名字;Phystype,用户自定义数据类型所基于的系统数据类型,可以包括长度、精度、标度;null | not null | identity,用户自定义数据类型的性质,分别为允许空值、不允许为空值、具有标识列性质。如果不指定列的性质,默认为not null。,用户定义数据类型,2019/5/30,21 / 53,用户定义数据类型(示例2.2),2019/5/30,22 / 53,删除用户定义的数据类型,右击“用户定义的数据类型”,单击“删除”,在“要删除的对象”对话框中,选中对象名称,单击“确定”,即可完成删除用户定义的数据类型。 我们也可以使用系统存储过程来查看、重命名、删除用户定义的数据类型。 sp_help type_name查看用户自定义数据类型的特征; sp_rename type_name给用户自定义数据类型重新命名; sp_droptype type_name删除一个已经定义且未被使用的用户自定义数据类型。,用户定义数据类型,2019/5/30,23 / 53,删除用户定义数据类型(示例2.3),2019/5/30,24 / 53,变量 局部变量和全局变量 运算符 运算符的类别 运算符的优先级别 函数 数学函数、字符串函数 日期和时间函数 转换函数 系统函数 聚合函数,变量、运算符、函数,2019/5/30,25 / 53,局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。 局部变量一般在程序中被定义、赋值和引用,程序结束后,局部变量就消失了。 局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。 局部变量被引用时要在其名称前加上标志“”,而且必须先用DECLARE语句定义后才可以使用。,局部变量,2019/5/30,26 / 53,局部变量(示例2.4),2019/5/30,27 / 53,全局变量是系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可随时调用。 引用全局变量时,必须以标记符“”开头。 全局变量分为两类,一是与SQL Server连接有关的全局变量,如rowcount表示受最近一个语句影响的行数;二是关于系统内部信息有关的全局变量,如version表示SQL Server的版本号。,全局变量,2019/5/30,28 / 53,全局变量不是由应用程序定义的,它们是在服务器级定义的。 全局变量反映的是服务器当前的状态,如connections返回自上次启动SQL Server以来连接或试图连接的次数;又如rowcount返回上一条T-SQL语句影响到的数据行数。 局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。,全局变量,2019/5/30,29 / 53,在SQL Server 2005中,运算符主要有六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符串连接运算符。 SQL Server运算符的优先级别,运算符,2019/5/30,30 / 53,数学函数,数学函数主要对数值表达式进行数学运算并返回运算结果。它可以对SQL Server提供的数值数据进行处理。,2019/5/30,31 / 53,字符串函数,2019/5/30,32 / 53,字符串函数(示例2.5),2019/5/30,33 / 53,日期和时间函数,日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。,2019/5/30,34 / 53,转换函数,SQL Server能够自动处理某些数据类型的转换。例如,char和varchar、smallint和int,SQL Server可以将它们自动转换,这种转换被称为隐性转换。但是,无法由SQL Server自动转换的或者是SQL Server自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。,2019/5/30,35 / 53,转换函数(示例2.6 ),2019/5/30,36 / 53,系统函数,系统函数用于返回系统、用户、数据库的信息。用户得到信息后,可以使用语句进行相关的操作。,2019/5/30,37 / 53,系统函数(示例2.7),2019/5/30,38 / 53,系统函数(示例2.8),2019/5/30,39 / 53,聚合函数,聚合函数可以针对整个或者一个表列或几个表列进行数据汇总,它常用来计算SELECT语句查询结果集的统计值。如求一个结果集的最大值、最小值、平均值和所有元素和等。 AVG、COUNT、MIN、MAX和SUM这些聚合函数是针对表列进行运算,并返回单一的值,其中COUNT、MIN和MAX可用于各种数据类型,但AVG及SUM则仅适用于数值类型。,2019/5/30,40 / 53,通常,服务器端的程序使用T-SQL语句来编写。一般而言,一个服务器端的程序是由批、注释、程序中使用的变量、改变批中语句的执行顺序的控制语句、错误和消息的处理等成分组成的。,批处理和流程控制,2019/5/30,41 / 53,两个GO之间的T-SQL语句作为一个批处理。在一个批处理中可以包含一条或多条T-SQL语句,成为一个语句组。这样的语句组从应用程序一次性地发送到SQL Server服务器进行执行。 所谓批处理是包含一个或多个T-SQL语句的组,它将一次性地发送到SQL Server中执行,用GO来通知SQL Server一批T-SQL语句的结束。 脚本就是一系列顺序提交的批。,批和脚本,2019/5/30,42 / 53,批和脚本(示例2.9),2019/5/30,43 / 53,批和脚本(示例2.10),2019/5/30,44 / 53,流程控制语句是通过判断指定的某些值来控制程序运行方向的语句 BEGINEND用来设定一程序块 IFELSE用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。 CASE语句为多分支语句 WHILECONTINUEBREAK循环语句,流程控制,2019/5/30,45 / 53,流程控制(示例2.11 ),2019/5/30,46 / 53,流程控制(示例2.12 ),20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业旅游学课件
- 农业报表化肥培训课件
- 化工企业环保培训课件
- 别踩黑块课件
- 品质营销推广规划方案(3篇)
- 先秦朱子论语课件
- 先秦两汉文学课件
- 内科慢阻肺讲解课件
- 内科循环系统课件
- 3口耳目手足 公开课一等奖创新教学设计
- 2025年四川基层法律服务工作者执业核准考试仿真试题及答案一
- 信息技术基础教程(WPS版)课件 第3章 Windows 10 操作系统的使用
- 小鹿斑比题目及答案
- 中学知识竞赛试题及答案
- 2025-2030中国建筑行业供应链金融发展现状与前景分析
- 2025-2026学年人教版(2024)初中物理八年级上册教学计划及进度表
- 医院环境感染监测制度
- 医院一键式报警系统建设与实施
- 精选急腹症影像学表现资料课件
- 角膜 角膜炎课件
- 《卫生政策学》第三章 政策问题确认
评论
0/150
提交评论