




已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQLServer2000管理及应用开发教程 授课教师 职务 第6章Transact SQL语言基础 课程描述Transact SQL是SQLServer的编程语言 是结构化查询语言 SQL 的增强版本 SQL是首先由IBM开发的数据库语言 Transact SQL可用来从数据库中提取数据 执行SQL语言的数据定义 DDL 数据操作 DML 和数据控制 DCC 等操作 本章知识点 Transact SQL概述常量和变量运算符常用函数流程控制语句 6 1Transact SQL概述 Transact SQL的语法规则Transact SQL的语法元素 6 1 1Transact SQL的语法规则 数据库对象名的Transact SQL引用 server name database name owner name database name owner name owner name object name具体说明如下 server name指定链接服务器名称或远程服务器名称 当对象驻留在SQLServer数据库中时 database name指定该SQLServer数据库的名称 当对象在链接服务器中时则指定OLEDB目录 如果对象在SQLServer数据库中 owner name指定拥有该对象的用户 当对象在链接服务器中时则指定OLEDB架构名称 object name引用对象的名称 6 1 2Transact SQL的语法元素 1 标识符2 数据类型3 函数4 表达式5 运算符6 注释7 保留关键字 1 标识符 标识符是诸如表 视图 列 数据库和服务器等对象的名称 对象标识符是在定义对象时创建的 标识符随后用于引用该对象 SQLServer的标识符有两类 常规标识符和分隔标识符 SELECT FROMTableXWHEREKeyCol 124SELECT FROM TableX WHERE KeyCol 124SELECT FROM MyTable WHERE order 10 2 数据类型 定义数据对象 如列 变量和参数 所包含的数据类型 大多数Transact SQL语句并不显式引用数据类型 但是其结果由于语句中所引用的对象数据类型间的互相作用而受到影响 3 函数 与其他程序设计语言中的函数相似 SQLServer函数可以有零个 一个或多个参数 并返回一个标量值或表格形式的值的集合 4 表达式 表达式是SQLServer可解析为单个值的语法单元 例如常量 返回单值的函数 列或变量的引用 5 运算符 运算符中表达式的组成部分之一 它与一个或多个简单表达式一起使用构造一个更为复杂的表达式 例如 将 负号 运算符和常量12组合在一起得到常量 12 6 注释 SQLServer支持两种类型的注释字符 双连字符 和 正斜杠 星号对 ChoosetheHrSystemdatabase USEHrSystem Author LeeDate 2009 2 16 USEHrSystem 7 保留关键字 保留下来由SQLServer使用的词 建议数据库中的对象名不要使用这些字词 如果必须使用保留关键字 则使用分隔标识符 6 2常量和变量 1 常量 也称为字面值或标量值 是表示一个特定数据值的符号 常量的格式取决于它所表示的值的数据类型 2 变量对应内存中的一个存储空间 与常量不同 变量的值在程序运行过程中可以随时改变 6 2 1常量 1 字符串常量2 Unicode字符串常量3 二进制常量4 bit常量5 datetime常量6 integer常量7 decimal常量8 float和real常量9 money常量10 uniqueidentifier常量11 指定负数和正数 1 字符串常量 字符串常量包含在单引号内 由字母数字字符 a z A Z和0 9 以及特殊字符 例如 和 组成 例如 Thisisadatabase 如果单引号中的字符串包含一个嵌入的引号 可以使用两个单引号表示嵌入的单引号 对于嵌入在双引号中的字符串则没有必要这样做 例如 字符串I mTom可以表示为 I mTom 空字符串用中间没有任何字符的两个单引号表示 2 Unicode字符串常量 Unicode字符串的格式与普通字符串相似 但它前面有一个N标识符 N代表SQL 92标准中的国际语言 NationalLanguage N前缀必须是大写字母 例如 Herry 是字符串常量而N Herry 则是Unicode常量 Unicode常量被解释为Unicode数据 并且不使用代码页进行计算 Unicode数据中的每个字符都使用两个字节进行存储 而字符数据中的每个字符则都使用一个字节进行存储 3 二进制常量 二进制常量具有前辍0 x 并且是十六进制数字字符串 这些常量不使用引号 例如 0 xFE0 x33Ef0 x 空二进制常量 4 bit常量 bit常量使用数字0或1表示 并且不使用引号 如果使用一个大于1的数字 它将被转换为1 5 datetime常量 datetime常量使用特定格式的字符日期值表示 并被单引号括起来 例如 April15 2006 15April 2006 20060415 04 15 2006 14 30 24 04 24PM 6 integer常量 integer常量必须是整数 不能包含小数点 例如 198723 7 decimal常量 decimal常量由没有用引号括起来 并且包含小数点的一串数字表示 例如 94 520432 0 8 float和real常量 float和real常量使用科学记数法表示 例如 321 5E5321 5E 50 6E20 7E 2 9 money常量 money常量表示以可选货币符号作为前缀的一串数字 money常量可以包含小数点 但是不能使用引号 例如 42 54333 64 10 uniqueidentifier常量 uniqueidentifier常量是表示全局唯一标识符 GUID 值的字符串 可以使用字符或二进制字符串格式指定 例如 F93AD5D 33DA F011 AABD 000ADBDE 0 xff99dadafe2345321 11 指定负数和正数 在数字前面添加 或 指明一个数是正数还是负数 例如 343 343 334 34 334 34 334E 3 334E5 344 56 333 99 6 2 2变量 在Transact SQL中 包含两种类型的变量 局部变量 局部变量是用户在程序中定义的变量 它仅在定义的程序范围内有效 局部变量可以用来保存从表中读取的数据 也可以作为临时变量保存计算的中间结果 全局变量 全局变量以 开头 实际上是SQLServer的系统函数 用户可以在程序中 使用全局变量测试系统特性和Transact SQL命令的执行情况 声明变量 变量只有在声明以后才能被使用 Transact SQL语言使用DECLARE语句来声明变量 第一次声明变量时将此变量的值设为NULL SQLServer支持2种对变量赋值的方法 使用SET语句 使用SELECT语句 变量的声明和使用实例 DECLARE abcINTSET abc 2PRINT abcPRINT语句用于输出变量的值 返回结果为2 6 3运算符 算术运算符 赋值运算符 位运算符 比较运算符 逻辑运算符 字符串串联运算符 一元运算符 6 3 1算术运算符 6 3 2赋值运算符 Transact SQL有一个赋值运算符 它通常与SET语句一起使用 为变量赋值 例如 DECLARE MyCounterINTSET MyCounter 1 6 3 3位运算符 6 3 4比较运算符 6 3 5逻辑运算符 6 3 6字符串串联运算符 字符串串联运算符允许通过加号 进行字符串串联 这个加号也被称为字符串串联运算符 其他所有的字符串操作都可以通过字符串函数进行处理 例如 abc def 的结果是 abcdef 6 3 7一元运算符 6 4常用函数 聚合函数 配置函数 游标函数 日期和时间函数 数学函数 元数据函数 行集函数 安全函数 字符串函数 系统函数 系统统计函数 文本和图像函数 6 4 1聚合函数 1 AVG 函数 如果要统计员工表EmpInfo中所有员工的平均年龄 可以执行以下命令 USEHrSystemSELECTAVG Wage FROMEmpInfoGO 2 COUNT 函数 如果要统计员工表EmpInfo中员工的数量 可以执行以下命令USEHrSystemSELECTCOUNT Emp Id FROMEmployeeGO 3 MAX 函数 如果要统计员工表EmpInfo中的员工最高工资 可以执行以下命令 USEHrSystemSELECTMAX Wage FROMEmpInfoGO 4 SUM 函数 如果要统计员工表EmpInfo中的所有员工的工资总数 可以执行以下命令 USEHrSystemSELECTSUM wage FROMEmpInfoGO 6 4 2日期和时间函数 1 GETDATE 函数 如果要查看当前的日期 可以执行以下命令 SELECTGETDATE GO 2 DATEADD 函数 如果要计算当前日期后21天的日期 可以执行以下命令 DECLARE VarDatedatetimeSET VarDate GETDATE SELECTDATEADD day 21 VarDate GO 3 DAY 函数 如果要提取当前日期的日期部分的整数 可以执行以下命令 DECLARE VarDatedatetimeSET VarDate GETDATE SELECTDAY VarDate GO 6 4 3数学函数 1 ABS 函数 如果要计算 4的绝对值 可以执行以下命令 SELECTABS 4 GO 2 CEILING 函数 分别对正数 负数和0计算CEILING 可以执行以下命令 SELECTCEILING 12 34 CEILING 12 34 CEILING 0 GO运行结果为13 12和0 3 ROUND 函数 执行以下命令 注意观察长度变化对结果的影响 SELECTROUND 123 456 2 ROUND 123 456 1 ROUND 123 456 0 ROUND 123 456 1 ROUND 123 456 2 ROUND 123 456 3 GO运行结果为123 460 123 500 123 000 120 000 100 000和 000 6 4 4字符串函数 1 ASCII 函数 下面是演示ASCII 函数使用的代码 SELECTASCII SQL GO运行结果为83 表明字符S的ASCII码为83 2 CHAR 函数 下面是演示CHAR 函数使用的代码 SELECTCHAR 65 GO运行结果为A 3 LEFT 函数 如果要返回字符串ABCDE的左侧3个字符 可以执行以下命令 SELECTLEFT ABCDE 3 GO运行结果为ABC 4 LEN 函数 如果要返回字符串ABCDE的长度 请执行以下命令 SELECTLEN ABCDE GO运行结果为5 5 LOWER 函数 如果要将字符串ABCDE转换为小写字母 请执行以下命令 SELECTLOWER ABCDE GO运行结果为abcde 6 LTRIM 函数 下面是演示LTRIM 函数使用的代码 DECLARE varstrchar 50 SET varstr abc SELECT 123 LTRIM varstr 123 GO运行结果为123abc 可以看出 只有左侧的空格被删除了 7 REPLACE 函数 如果要把字符串ABCDE中的CD替换为123 请执行以下命令 DECLARE varstrchar 50 SET varstr REPLACE ABCDE CD 123 SELECT varstrGO运行结果为AB123E 8 SPACE 函数 下面是演示SPACE 函数使用的代码 DECLARE varstrchar 50 SET varstr abc SPACE 5 123 SELECT varstr LEN varstr GO运行结果为 abc12311 可以看出 在字符串abc和123之间出现了5个字符串 而字符串的长度为11 9 STR 函数 如果要将计算的结果以字符串的形式显示 请执行以下命令 DECLARE varstrdecimal 15 2 SET varstr 12 4 2PRINT 12 4 2的结果是 STR varstr 5 1 GO运行结果为 12 4 2的结果是 50 4 10 SUBSTRING 函数 如果要截取字符串ABCDEFG中第2个字符开始的3个字符 请看以下示例程序 SELECTSUBSTRING ABCDEFG 2 3 GO运行结果为BCD 11 UPPER 函数 如果要将字符串abcde转换为大写字母 请执行以下命令 SELECTUPPER abcde GO运行结果为ABCDE 6 4 5文本和图像函数 6 5流程控制语句 IF ELSE语句WHILE语句WAITFOR语句GOTO语句RETURN语句TRY CATCH语句 6 5 1IF ELSE语句 IF ELSE是条件语句 其语法结构如下 IF SQL语句1 SQL语句块1 ELSE SQL语句2 SQL语句块2 当满足时 执行SQL语句1或SQL语句块1 否则执行SQL语句2或SQL语句块2 例6 1 下面是IF ELSE语句的一个简单实例 程序根据当前的系统时间输出上半年或下半年 IFmonth getdate 7PRINT 上半年 ELSEPRINT 下半年 BEGIN和END语句 IFmonth getdate 7BEGINPRINT 上半年 PRINT getdate ENDELSEBEGINPRINT 下半年 PRINT getdate END 6 5 2WHILE语句 WHILE语句是循环语句 当满足指定条件时 循环执行一条SQL语句或一个SQL语句块 直至条件不满足 WHILE语句的语法结构如下 WHILE SQL语句1 SQL语句块1 BREAK SQL语句2 SQL语句块2 CONTINUE SQL语句3 SQL语句块3 例6 2 打印1 10的数字 代码如下 DECLARE iINTSET i 1WHILE i 10BEGINPRINT iSET i i 1END BREAK语句 例6 3 在上面的WHILE语句中增加BREAK语句 当 i等于3时退出循环 代码如下 DECLARE iINTSET i 1WHILE i 10BEGINIF i 3BREAKPRINT iSET i i 1END CONTINUE语句 例6 4 在上面的WHILE语句中增加CONTINUE语句 当 i小于或等于3时不执行打印语句 代码如下 DECLARE iINTSET i 0WHILE i 10BEGINSET i i 1IF i 3CONTINUEPRINT iEND 6 5 3WAITFOR语句 WAITFOR语句可以指定批处理 存储过程或事务的执行条件 包括 在达到指定时间之前 在达到指定时间间隔之前 指定语句修改或返回一行之前 WAI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制线工内部技能考核试卷及答案
- 水下钻井设备操作工数字化技能考核试卷及答案
- 活动课 认识欧洲教学设计-2025-2026学年初中地理商务星球版七年级下册-商务星球版2012
- 铁合金湿法冶炼工质量管控考核试卷及答案
- 镀层工作业指导书
- 重金属回转窑焙烧工应急处置考核试卷及答案
- 电线电缆挤橡工作业指导书
- 钽铌压制成型工设备维护与保养考核试卷及答案
- 酒吧转让合同涵盖酒吧供应链体系及原材料采购权
- 文化创意项目开发权及版权转让合同
- 2023-2025年高考生物试题分类汇编:孟德尔两大遗传定律原卷版
- 2025年军考政治时事政治热点试题题库含答案
- 2025年村医笔试重点题库
- 2025-2026学年人音版(简谱)(2024)初中音乐七年级上册教学计划及进度表
- 养生艾灸直播课件
- 2025年徐州市中考语文试题卷(含答案及解析)
- 云南省2025年校长职级制考试题(含答案)
- 幼儿园美术教师个人工作计划范文
- 2025年中国电信福建公司春季招聘80人笔试参考题库附带答案详解
- 《幼儿园开学第一课》课件
- (2025年标准)佛教无偿捐赠协议书
评论
0/150
提交评论