第3章数据库基础_第1页
第3章数据库基础_第2页
第3章数据库基础_第3页
第3章数据库基础_第4页
第3章数据库基础_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3章章 T-SQL语言基础语言基础u3.1 3.1 数据类型数据类型u3.2 3.2 常量和变量常量和变量u3.3 3.3 运算符运算符 u3.4 3.4 批处理与流程控制语句批处理与流程控制语句本章要点本章要点u数据类型的分类及使用u常量与变量的定义及使用u运算符的使用u批处理与流程控制语句SQL,T-SQLoSQL语言全称语言全称 :Structured Query Languageo 结构化查询语言结构化查询语言(数据操纵语言)o特点:利用一些简单的句子构成基本语法,来存取数据库内容。特点:利用一些简单的句子构成基本语法,来存取数据库内容。o各个公司都有自己的各个公司都有自己的SQL

2、语法。语法。sybase与与microsoft公司就使公司就使用的是用的是Transact-SQLT-SQL3.1 数据类型数据类型整型数据类型整型数据类型数据类型数据类型名名 称称取取 值值 范范 围围说明bigintbigint大整数大整数-2-263632 26363-1 -1 8字节intint整数整数-2-231312 23131-1-14字节smallintsmallint短整数短整数-2-215152 21515-1-12字节tinyinttinyint微短整数微短整数0 02552551字节bitbit位型数位型数1 1、0 0或或NULLNULLbigint、int、smal

3、lint、tinyint它们只是取值的范围不同而已。它们只是取值的范围不同而已。bit可以取值为可以取值为 1、0 或或 NULL 。如果表中的列为。如果表中的列为 8 bit 或更少,则这些列或更少,则这些列作为作为 1 个字节存储。如果列为个字节存储。如果列为 9 到到 16 bit,则这些列作为,则这些列作为 2 个字节存储,以此个字节存储,以此类推。类推。字符串值字符串值 TRUE 和和 FALSE 可以转换为以下可以转换为以下 bit 值:值:TRUE 转换为转换为 1,FALSE 转换为转换为 0。货币型数据货币型数据 数据类型数据类型名名 称称取取 值值 范范 围围说明说明mon

4、eymoney货币数据货币数据-10-106363+1+110106363-1-18 8字节字节smallmoneysmallmoney货币数据货币数据-214748.3648-214748.3648214748.3647214748.36474 4字节字节money和和smallmoney只是取值的范围不同,在使用时,只是取值的范围不同,在使用时,必须在前面加上货币表示的符号(必须在前面加上货币表示的符号($),并且数据中间不能),并且数据中间不能有逗号有逗号“,”;若货币值是负数则需要在;若货币值是负数则需要在“$”前加上负号前加上负号(-)。例如:)。例如:$300、$123.50、-$

5、358.2、-$6859。精确小数精确小数DecimalDecimal NumericNumeric带固定精度和小数位数的数值数据类型。带固定精度和小数位数的数值数据类型。numeric (p ,d) 其中其中 p表示可供存储的值的总位数,缺省为表示可供存储的值的总位数,缺省为15;d表示小数点表示小数点后的位数,缺省为后的位数,缺省为0。 例如:例如:numeric(10,5)表示共表示共10位,小数点后面为位,小数点后面为5位。位。浮点型(近似数)浮点型(近似数) 数据类型数据类型名名 称称取取 值值 范范 围围说明或存储长度说明或存储长度floatfloat浮点型数据浮点型数据-1.79

6、E+308-1.79E+3081.79E+3081.79E+308存储长度与数值位数有存储长度与数值位数有关关realreal浮点型数据浮点型数据-3.40E+38-3.40E+383.40E+383.40E+384 4字节字节float、real是近似数值数据类型,表示取值范围不同,两是近似数值数据类型,表示取值范围不同,两者通常用科学计数法表示数据,其表示为:用者通常用科学计数法表示数据,其表示为:用E阶数。例如:阶数。例如:1.64E3、-2.84E6、6.3E-10等。等。日期时间型日期时间型数据类型数据类型取取 值值 范范 围围说明或存储长度说明或存储长度datetime datet

7、ime 17531753年年1 1月月1 1日到日到99999999年年1212月月3131日的日期和时间数据精确到日的日期和时间数据精确到3%s 3%s 8 8字节字节smalldatetimesmalldatetime 19001900年年1 1月月1 1日到日到20792079年年1212月月3131日的日期和时间数据,精确到日的日期和时间数据,精确到分钟分钟 4 4字节字节月月/日日/年年月月.日日.年年月月-日日-年年字符型 char char(n n),定长字符数据类型,其中),定长字符数据类型,其中n n是定义字符数据的长度,是定义字符数据的长度,默认值是默认值是1 1。当表中的

8、列定义为。当表中的列定义为charchar(n n)类型时,若实际要存储的)类型时,若实际要存储的长度不足长度不足n n时,则在串的尾部添加空格,以达到长度时,则在串的尾部添加空格,以达到长度n n,该字符串长,该字符串长度为度为n n。 varcharvarchar(n n),变长字符数据类型,其中),变长字符数据类型,其中n n的规定与定长字符型的规定与定长字符型charchar(n n)中的)中的n n完全相同,但这里的完全相同,但这里的n n表示的是字符串可达到的最大表示的是字符串可达到的最大长度长度, ,该字符串长度是其实际长度。该字符串长度是其实际长度。数据类型数据类型取取 值值

9、范范 围围说明或存储长度说明或存储长度charchar1 180008000,固定长度的非,固定长度的非UnicodeUnicode字符数据字符数据1 1个字符占个字符占1 1个字节个字节varcharvarchar1 180008000,可变长度的非,可变长度的非UnicodeUnicode字符数据字符数据1 1个字符占个字符占1 1个字节个字节ncharnchar1 140004000,固定长度,固定长度UnicodeUnicode字符数据字符数据1 1个字符占个字符占2 2个字节个字节nvarcharnvarchar1 140004000,可变长度,可变长度UnicodeUnicode字

10、符数据字符数据1 1个字符占个字符占2 2个字节个字节文本型数据类型取 值 范 围说明或存储长度texttext可变长度的非可变长度的非UnicodeUnicode数据,最大长度数据,最大长度为为2 23131-1-1个字符个字符1 1个字符占个字符占1 1个字个字节节ntextntext可变长度的可变长度的UnicodeUnicode数据,最大长度为数据,最大长度为2 23030-1-1个字符个字符1 1个字符占个字符占2 2个字个字节节当需要存储大量的字符数据,如较长的备注、日志等信息,此时可当需要存储大量的字符数据,如较长的备注、日志等信息,此时可使用文本型数据类型。文本型包括使用文本型

11、数据类型。文本型包括text和和ntext两类,分别对应的是两类,分别对应的是ASCII和和Unicode字符。字符。u常量常量 u变量变量uSELECT语句简单介绍语句简单介绍3.2 常量和变量常量和变量常量 1、字符串常量、字符串常量字符串常量字符串常量包含在单引号内包含在单引号内,由字母、数字、字符,由字母、数字、字符(az、AZ)以及特殊字符以及特殊字符(如如!、和和#)组成。组成。如果字符串常量中包含有一个单引号,如如果字符串常量中包含有一个单引号,如Im a Student,可以使用两个单引号表示这个字符串常量内的单引号,即可以使用两个单引号表示这个字符串常量内的单引号,即表示为:

12、表示为:I m a Student。在字符串常量前面加上字符在字符串常量前面加上字符N,则表明该字符串常量是,则表明该字符串常量是Unicode字符串常量。字符串常量。例如,例如,NMary,是,是Unicode字符串常量;字符串常量;Mary是字是字符串常量。符串常量。2 2、二进制常量、二进制常量二进制常量必须是以二进制常量必须是以0 x0 x开头的十六进制数字字符串,这些常开头的十六进制数字字符串,这些常量可以不用引号括起来,例如:量可以不用引号括起来,例如:0 xAF0 xAF、0 x120 x12、0 x0 x(其长度为(其长度为零)。零)。3 3、bitbit常量常量BitBit常

13、量只能使用数据常量只能使用数据0 0或或l l表示,并且不能放在引号中。如表示,并且不能放在引号中。如果使用一个大于果使用一个大于l l的数字来定定义的话,那么这个数据会强制转的数字来定定义的话,那么这个数据会强制转换为换为1 1。4 4、intint常量常量intint常量是用没有引号括起来的、不包含小数点的数字来表常量是用没有引号括起来的、不包含小数点的数字来表示的,例如示的,例如123123、6868、-98-98等。等。 常量 5 5、 datetimedatetime常量常量datetimedatetime常量是用常量是用单引号括单引号括起来的日期或时间字符的字符串,只要输入的起来的

14、日期或时间字符的字符串,只要输入的日期能明显分辨出生年月,不论用哪种年月日的表达式都可以视为正确的输日期能明显分辨出生年月,不论用哪种年月日的表达式都可以视为正确的输入,例如:入,例如:2010-2-012010-2-01、02/12/1002/12/10、May 3,2010May 3,2010。6 6、 decimaldecimal常量常量decimaldecimal常量是用没有引号括起来的、包含小数点的数字来表示的,例如常量是用没有引号括起来的、包含小数点的数字来表示的,例如352.6352.6、-78.30-78.30、458.98458.98等。等。7 7、 floatfloat和和

15、realreal常量常量floatfloat和和realreal常量是用科学记数法来表示的,例如:常量是用科学记数法来表示的,例如:122.2E5122.2E5、-65.2E-3-65.2E-3、0.52E60.52E6。8 8、 moneymoney常量常量moneymoney常量以货币符号开头常量以货币符号开头( (如如$)$)的数值表示,例如:的数值表示,例如:$253$253、$630$630、-$123-$123。常量 变量有两种类型:局部变量和全局变量。变量有两种类型:局部变量和全局变量。变量变量1、局部变量、局部变量局部变量是用户在程序中定义的变量,一次只能保存一个值,局部变量是

16、用户在程序中定义的变量,一次只能保存一个值,它仅在定义的程序范围内有效。它仅在定义的程序范围内有效。局部变量名总是以局部变量名总是以符号开始,最长为符号开始,最长为128个字符。个字符。要使用要使用DECLARE语句定义局部变量,内容包括局部变量名、语句定义局部变量,内容包括局部变量名、 数据类型和长度。数据类型和长度。语法格式:语法格式: DECLARE local_variable data_type,n变量变量刚刚定义的局部变量的初值为刚刚定义的局部变量的初值为NULL(空空)。需要使用。需要使用SELECT语句或语句或SET语句给局部变量赋值。语句给局部变量赋值。SET语句一次只能给一

17、个局部变量赋值;语句一次只能给一个局部变量赋值;SELECT语句可以同时给一个或多个局部变量赋值。语句可以同时给一个或多个局部变量赋值。例例5 编写计算编写计算50与与60之和的程序。之和的程序。DECLARE i Int,i int,sum int 定义三个局部变量定义三个局部变量SET i=50 给变量给变量i赋值赋值50SET j=60 给变量给变量j赋值赋值60SELECT sum=i+j 将将i和和j的和赋值给变量的和赋值给变量sumPRINT sum 显示显示sum变量的内容变量的内容通常在以下几种情况使用局部变量。通常在以下几种情况使用局部变量。(1)作为计数器计算循环执行的次数

18、或控制循环执行的次数。作为计数器计算循环执行的次数或控制循环执行的次数。(2)保存数据值以供语句测试。保存数据值以供语句测试。(3)保存由存储过程返回代码返回的数据值。保存由存储过程返回代码返回的数据值。2、 全局变量全局变量全局变量是由全局变量是由SQL Server系统提供并赋值的变量,名称由系统提供并赋值的变量,名称由“”符号开始。用户不能建立全局变量,也不可能使用符号开始。用户不能建立全局变量,也不可能使用SET语句语句去修改全局变量的值。通常应该将全局变量的值赋给在同一个批中的去修改全局变量的值。通常应该将全局变量的值赋给在同一个批中的局部变量,以便保存和处理。局部变量,以便保存和处

19、理。全局变量分为两类:全局变量分为两类:一是与一是与SQL Server连接有关的全局变量,如连接有关的全局变量,如rowcount表表示受最近一个语句影响的行数;示受最近一个语句影响的行数;二是与系统内部信息有关的全局变量,如二是与系统内部信息有关的全局变量,如version表示表示SQL Server的版本号。的版本号。变量变量SELECT语句简单介绍语句简单介绍1、赋值、赋值SELECT sum=i+j,a=1set sum=i+jset a=12、SELECT语句无源查询(简单数据的查看)SELECT语句无源查询就是最简单的语句,用来查询不在表中的数据。语句格式:SELECT 常量|变

20、量|函数|表达式as 别名,n例如:使用SELECT语句查看常量SELECT “我是一名学生”SELECT getdate() 获取当前系统的日期时间1、SQL查询窗口SQL查询窗口是一种图形工具,可以对单个SQL语句或由SQL语句编写的脚本进行编写调试。列名列名o 3 3、SELECTSELECT语句简单查询语句简单查询语句格式:语句格式:SELECT SELECT 常量常量| |变量变量| |字段名字段名| |表达式表达式 FROM FROM 例:查询例:查询“学生学生”表中学生的学号、姓名、年表中学生的学号、姓名、年龄龄SELECT sno,name,age FROM studentSE

21、LECT sno,name,age FROM studentSELECT语句简单介绍语句简单介绍1、算术运算符、算术运算符算术运算符有:算术运算符有:+(加加)、(减减)、*(乘乘)、(除除)、(取模取模)。select getdate(),getdate()10, cast(getdate()-cast(2006-01-18as datetime)as int) -查询当前日期、查询当前日期、10天天前日期、日期间隔天数等前日期、日期间隔天数等3.3 运算符运算符2 2、 一元运算符一元运算符 一元运算符只对一个表达式执行操作,该表达式可以是一元运算符只对一个表达式执行操作,该表达式可以是n

22、umericnumeric数数据类型类别中的任何一种数据类型见下表。据类型类别中的任何一种数据类型见下表。运算符运算符运运 算算 符符描描 述述+(+(正正) )返回数值表达式的正值返回数值表达式的正值-(-(负负) )返回数值表达式的负值返回数值表达式的负值( (位非位非) )将指定的整形数值转换为二进制形式,然后按将指定的整形数值转换为二进制形式,然后按位进行逻辑非运算位进行逻辑非运算例:例:select +(-9),-(-9),(-9),9,其查询结果为:,其查询结果为:-9、9、8、-103、比较运算符、比较运算符T-SQL比较运算符有:比较运算符有:=(等于等于)、(大于大于)、=(

23、大大于等于于等于)、=(小于等于小于等于)、(不等于不等于)、!=(不等于不等于)、!(不大于不大于)。运算符运算符4、逻辑运算符、逻辑运算符逻辑运算符对某些条件进行测试,以获得其真实情况。逻辑运算符和比逻辑运算符对某些条件进行测试,以获得其真实情况。逻辑运算符和比较运算符一样,返回带有较运算符一样,返回带有TRUE或或FALSE值的值的Boolean数据类型,如表所数据类型,如表所示示。运算符运算符运运 算算 符符含含 义义 ALLALL如果一组的比较都为如果一组的比较都为TRUETRUE,那么就为,那么就为TRUETRUEANDAND或或&如果两个布尔表达式都为如果两个布尔表达式都

24、为TRUETRUE,那么就为,那么就为TRUETRUEANYANY或或SOMESOME如果一组的比较中任何一个为如果一组的比较中任何一个为TRUETRUE,那么就为,那么就为TRUETRUEBETWEENBETWEEN如果操作数在某个范围之内,那么就为如果操作数在某个范围之内,那么就为TRUE TRUE EXISTSEXISTS如果子查询包含一些行,那么就为如果子查询包含一些行,那么就为TRUETRUEININ如果操作数等于表达式列表中的一个,那么就为如果操作数等于表达式列表中的一个,那么就为TRUETRUELIKELIKE如果操作数与一种模式相匹配,那么就为如果操作数与一种模式相匹配,那么就

25、为TRUETRUENOTNOT或或! ! 对任何其他布尔运算符的值取反对任何其他布尔运算符的值取反OROR或或|如果两个布尔表达式中的一个为如果两个布尔表达式中的一个为TRUETRUE,那么就为,那么就为TRUETRUE5、赋值运算符、赋值运算符等号等号(=)DECLARE MyCounter INT; SET MyCounter=10;6、字符串连接运算符、字符串连接运算符加号加号(+)是字符串连接运算符,可以用它将字符串连接起来。是字符串连接运算符,可以用它将字符串连接起来。例如:例如:select 学生学生+数据库数据库结果:结果:学生数据库学生数据库。运算符运算符7、位运算符、位运算符

26、位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据类型类别中的任何数据类型,如下表所示。类型类别中的任何数据类型,如下表所示。运算符运算符运运 算算 符符含含 义义&(&(位与位与) ) 位与位与( (两个操作数两个操作数) )|(|(位或位或) )位或位或( (两个操作数两个操作数) )(位异或位异或) )位异或位异或( (两个操作数两个操作数) )8、运算符优先级 运算符运算符优先级别优先级别运算符运算符1 1( (位非位非) )2 2* *( (乘乘) )、( (除除) )、( (取模取模) )3

27、3+ +(正)、(正)、- -(负)、(负)、+ +(加)、(加)、- -(减)、(减)、+ +(连接)、(连接)、& &(位与)(位与)4 4= =、 、 =、=、!=!=、!、!5 5(位异或位异或) )、|(|(位或位或) )6 6NOTNOT7 7ANDAND8 8ALLALL、ANYANY、BETWEENBETWEEN、ININ、LIKELIKE、OROR、SOMESOME9 9= =(赋值)(赋值)一般而言,一个服务器端程序是由以下成分组成:一般而言,一个服务器端程序是由以下成分组成:批、批、注释、变量、流程控制语句、错误和消息处理。注释、变量、流程控制语句、错误和

28、消息处理。 1、批处理、批处理概念:客服传递给服务器的一组完整的数据或概念:客服传递给服务器的一组完整的数据或SQL指令指令的集合的集合3.4 批处理与流程控制语句批处理与流程控制语句 1、复合语句、复合语句包含一系列的包含一系列的Transact-SQL语句,也称为块语句。凡是这个语语句,也称为块语句。凡是这个语句块的所有代码都是一个流程控制,其具体语法格式如下:句块的所有代码都是一个流程控制,其具体语法格式如下:BEGIN sql_statement | statement_block END 说明:说明: 主要用于下列情况:主要用于下列情况: (1)IFELSE子句需要包含语句块。子句需

29、要包含语句块。 (2)WHILE循环需要包含语句块。循环需要包含语句块。 (3)CASE包含语句块。包含语句块。 流程控制语句流程控制语句 2、判断语句(、判断语句(IFELSE)具体语法格式如下:具体语法格式如下:IF Boolean_expression sql_statement | statement_block ELSE sql_statement | statement_block 功能:如果布尔表达式结果为真,则执行条件表达式后面的功能:如果布尔表达式结果为真,则执行条件表达式后面的Transact-SQL语句块语句块1;如果条件为假,执行;如果条件为假,执行ELSE关键字后的关

30、键字后的Transact-SQL语句块语句块2。流程控制语句流程控制语句 3、循环语句、循环语句WHILE、BREAK语句和语句和CONTINUE语句语句WHILE循环结构,可根据条件判断选择重复执行一条语句或一循环结构,可根据条件判断选择重复执行一条语句或一个语句块。当条件为真时,重复执行循环语句,当条件不满足时,可个语句块。当条件为真时,重复执行循环语句,当条件不满足时,可在循环体内设置在循环体内设置BREAK和和CONTINUE关键字来控制循环语句。关键字来控制循环语句。具体语句格式如下:具体语句格式如下:WHILE Boolean_expression sql_statement |

31、statement_block BREAK sql_statement | statement_block CONTINUE sql_statement | statement_block 流程控制语句流程控制语句 语句说明:语句说明:当当WHILE语句中的条件表达式成立语句中的条件表达式成立(布尔表达式的值为布尔表达式的值为“真真”)时,重复执行命令行或语句块,直到条件表达式的值为逻辑时,重复执行命令行或语句块,直到条件表达式的值为逻辑“假假”,结束执行循环体。结束执行循环体。CONTINUE语句可以让程序跳过语句可以让程序跳过CONTINUE语语句之后的命令行或语句块,忽略句之后的命令行或语句块,忽略 CONTINUE关键字后的任何语句,关键字后的任何语句,重新执行重新执行WHIL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论