MySQL数据库基础及实例教程第6章课件.ppt
《MySQL数据库基础及实例教程第6章课件.ppt》由会员分享,可在线阅读,更多相关《MySQL数据库基础及实例教程第6章课件.ppt(142页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、肖红肖红MySQLMySQL数据库基础与实例教程数据库基础与实例教程 之之MySQLMySQL编程基础编程基础 为了便于为了便于MySQL代码维护,以及提高代码维护,以及提高MySQL代码的重用性,代码的重用性,MySQL开发人员经常将频繁使用开发人员经常将频繁使用的业务逻辑封装成存储程序,的业务逻辑封装成存储程序,MySQL的存储程序的存储程序分为四类:函数、触发器、存储过程以及事件。分为四类:函数、触发器、存储过程以及事件。内容一览内容一览 1 12 23 3 本章首先介绍了本章首先介绍了MySQL编程的基础知识,然后讲解编程的基础知识,然后讲解了自定义函数的实现方法,了自定义函数的实现方
2、法,接着介绍了接着介绍了MySQL常用的常用的系统函数,最后结合系统函数,最后结合“选课选课系统系统”,编写自定义函数模,编写自定义函数模拟实现了中文全文检索。拟实现了中文全文检索。4 4自定义函数自定义函数MySQL编程基础知识编程基础知识系统函数系统函数中文全文检索的模拟实现中文全文检索的模拟实现内容一览内容一览 1 12 23 3 MySQL程序设计结程序设计结构是在构是在SQL标准的基标准的基础上增加了一些程序础上增加了一些程序设计语言的元素,其设计语言的元素,其中包括常量、变量、中包括常量、变量、运算符、表达式、流运算符、表达式、流程控制以及函数等内程控制以及函数等内容。容。用户自定
3、义变量用户自定义变量常量常量运算符与表达式运算符与表达式45begin-end语句块语句块重置命令结束标记重置命令结束标记6.1 MySQL6.1 MySQL编程基础知识编程基础知识 按照按照MySQL的数据类型进行划分,可以将的数据类型进行划分,可以将常量划分为字符串常量、数值常量、十六进制常量划分为字符串常量、数值常量、十六进制常量、日期时间常量、二进制常量以及常量、日期时间常量、二进制常量以及NULL。6.1.1 6.1.1 常量常量1字符串常量字符串常量 字符串常量是指用单引号或双引号括起来的字符串常量是指用单引号或双引号括起来的字符序列。字符序列。select Im a teache
4、r as col1,youre a student as col2;由于大多编程语言(例如由于大多编程语言(例如Java、C等)使用等)使用双引号表示字符串,为了便于区分,在双引号表示字符串,为了便于区分,在MySQL数据库中推荐使用单引号表示字符串。数据库中推荐使用单引号表示字符串。6.1.1 6.1.1 常量常量2数值常量数值常量 数值常量可以分为整数常量(例如数值常量可以分为整数常量(例如2013)和小数常量(例如和小数常量(例如5.26、101.5E5),这里不),这里不再赘述。再赘述。6.1.1 6.1.1 常量常量3日期时间常量日期时间常量日期时间常量是一个符合特殊格式的字符串。日
5、期时间常量是一个符合特殊格式的字符串。例如例如14:30:24是一个时间常量,是一个时间常量,2008-05-12 14:28:24是一个日期时间常量。日期时间常是一个日期时间常量。日期时间常量的值必须符合日期、时间标准,例如量的值必须符合日期、时间标准,例如1996-02-31是错误的日期常量。是错误的日期常量。6.1.1 6.1.1 常量常量3日期时间常量日期时间常量日期时间常量是一个符合特殊格式的字符串。日期时间常量是一个符合特殊格式的字符串。例如例如14:30:24是一个时间常量,是一个时间常量,2008-05-12 14:28:24是一个日期时间常量。日期时间常是一个日期时间常量。日
6、期时间常量的值必须符合日期、时间标准,例如量的值必须符合日期、时间标准,例如1996-02-31是错误的日期常量。是错误的日期常量。6.1.1 6.1.1 常量常量4.布尔值布尔值布尔值只包含两个可能的值:布尔值只包含两个可能的值:true和和false。说明:使用说明:使用select语句显示布尔值语句显示布尔值true或者或者false时,会将其转换为字符串时,会将其转换为字符串“0”或者字符或者字符串串“1”。6.1.1 6.1.1 常量常量5二进制常量二进制常量二进制常量由数字二进制常量由数字“0”和和“1”组成。二进组成。二进制常量的表示方法:前缀为制常量的表示方法:前缀为“b”,后
7、面紧跟,后面紧跟一个一个“二进制二进制”字符串。例如下面的字符串。例如下面的select语语句输出三个字符。其中句输出三个字符。其中b111101表示表示“等号等号”,b1表示表示“笑脸笑脸”,b11表示表示“心心”。select b111101,b1,b11;6.1.1 6.1.1 常量常量6十六进制常量十六进制常量十六进制常量由数字十六进制常量由数字“0”到到“9”及字母及字母“a”到到“f”或或“A”到到“F”组成(字母不组成(字母不区分大小写)。十六进制常量有两种表示方区分大小写)。十六进制常量有两种表示方法。法。6.1.1 6.1.1 常量常量6十六进制常量十六进制常量第一种表示方法
8、:前缀为大写字母第一种表示方法:前缀为大写字母“X”或小或小写字母写字母“x”,后面紧跟一个,后面紧跟一个“十六进制十六进制”字字符串。符串。例如例如select X41,x4D7953514C;其中其中X41表示大写字母表示大写字母A。x4D7953514C表表示字符串示字符串MySQL。6.1.1 6.1.1 常量常量6十六进制常量十六进制常量第二种表示方法:前缀为第二种表示方法:前缀为“0 x”,后面紧跟,后面紧跟一个一个“十六进制数十六进制数”(不用引号)。(不用引号)。例如例如select 0 x41,0 x4D7953514C;其中其中0 x41表示大写字母表示大写字母A。0 x4
9、D7953514C表示字符串表示字符串MySQL。6.1.1 6.1.1 常量常量小结:可以看到,使用小结:可以看到,使用select语句显示十六进语句显示十六进制数时,会将十六进制数自动转换为制数时,会将十六进制数自动转换为“字符字符串串”再进行显示。再进行显示。如果需要将一个字符串或数字转换为十六进如果需要将一个字符串或数字转换为十六进制格式的字符串,可以用制格式的字符串,可以用hex()函数实现。函数实现。例如例如select hex(MySQL);hex()函数将函数将“MySQL”字符串转换为十六进制字符串转换为十六进制数数4D7953514C。6.1.1 6.1.1 常量常量小结:
10、十六进制数与字符之间存在一一对应小结:十六进制数与字符之间存在一一对应关系,利用这个特点,可以模拟实现中文全关系,利用这个特点,可以模拟实现中文全文检索。文检索。7.NULL值值NULL值可适用于各种字段类型,它通常用来值可适用于各种字段类型,它通常用来表示表示“值不确定值不确定”、“没有值没有值”等意义,等意义,NULL值参与算术运算、比较运算以及逻辑运值参与算术运算、比较运算以及逻辑运算时,结果依然为算时,结果依然为NULL。6.1.1 6.1.1 常量常量变量分为系统变量(以变量分为系统变量(以开头)以及用户开头)以及用户自定义变量。自定义变量。用户自定义变量分为用户会话变量(以用户自定
11、义变量分为用户会话变量(以开开头)以及局部变量(不以头)以及局部变量(不以开头)开头)。6.1.2 6.1.2 用户自定义变量用户自定义变量1用户会话变量用户会话变量MySQL客户机客户机1定义了会话变量,会话期间,定义了会话变量,会话期间,该会话变量一直有效;该会话变量一直有效;MySQL客户机客户机2不能不能访问访问MySQL客户机客户机1定义的会话变量;定义的会话变量;MySQL客户机客户机1关闭或者关闭或者MySQL客户机客户机1与与服务器断开连接后,服务器断开连接后,MySQL客户机客户机1定义的定义的所有会话变量将自动释放,以便节省所有会话变量将自动释放,以便节省MySQL服务器的
12、内存空间。服务器的内存空间。6.1.2 6.1.2 用户自定义变量用户自定义变量用用户户会会话话变变量量6.1.2 6.1.2 用户自定义变量用户自定义变量1用户会话变量用户会话变量系统会话变量与用户会话变量的共同之处在系统会话变量与用户会话变量的共同之处在于:变量名大小写不敏感。系统会话变量与于:变量名大小写不敏感。系统会话变量与用户会话变量的区别在于:用户会话变量的区别在于:1用户会话变量用户会话变量一般以一个一般以一个“”开头;系统会话变量以两个开头;系统会话变量以两个“”开头。开头。2系统会话变量无需定义可以系统会话变量无需定义可以直接使用。直接使用。6.1.2 6.1.2 用户自定义
13、变量用户自定义变量(1)用户会话变量的定义与赋值)用户会话变量的定义与赋值一般情况下,用户会话变量的定义与赋值会一般情况下,用户会话变量的定义与赋值会同时进行。用户会话变量的定义与赋值有两同时进行。用户会话变量的定义与赋值有两种方法:使用种方法:使用set命令或者使用命令或者使用select语句。语句。方法一:使用方法一:使用set命令定义用户会话变量,并命令定义用户会话变量,并为其赋值,语法格式如下:为其赋值,语法格式如下:set user_variable1expression1,user_variable2=expression2,6.1.2 6.1.2 用户自定义变量用户自定义变量说说
14、明明:用用户户会会话话变变量量的的数数据据类类型型是是根根据据赋赋值值运运算算符符“=”右右边边表表达达式式的的计计算算结结果果自自动动分分配配的的。也也就就是是说说,等等号号右右边边的的值值(包包括括字字符符集集和和字字符符序序)决决定定了了用用户户会会话话变变量量的的数数据据类类型型(包括字符集和字符序)。(包括字符集和字符序)。6.1.2 6.1.2 用户自定义变量用户自定义变量方法二:使用方法二:使用select语句定义用户会话变量,语句定义用户会话变量,并为其赋值,语法格式有两种。并为其赋值,语法格式有两种。第一种语法格式:第一种语法格式:select user_variable1:
15、expression1,user_variable2:=expression2,第二种语法格式:第二种语法格式:select expression1 into user_variable1,expression2 into user_variable2,6.1.2 6.1.2 用户自定义变量用户自定义变量方法二:使用方法二:使用select语句定义用户会话变量,语句定义用户会话变量,说明:说明:第一种语法格式中需要使用第一种语法格式中需要使用“:”赋值赋值语句,原因在于语句,原因在于“=”是为是为“比较比较”保留的。保留的。第一种与第二种语法格式的区别在于:第第一种与第二种语法格式的区别在于:
16、第一种语法格式中的一种语法格式中的select语句会产生结果集,语句会产生结果集,第二种语法格式中的第二种语法格式中的select语句,仅仅用于会语句,仅仅用于会话变量的定义及赋值(但不会产生结果集)。话变量的定义及赋值(但不会产生结果集)。6.1.2 6.1.2 用户自定义变量用户自定义变量2用户会话变量与用户会话变量与SQL语句语句任务布置任务布置1:上机操作,完成本书场景描述:上机操作,完成本书场景描述1:用户会话变量与:用户会话变量与SQL语句的任务要求。语句的任务要求。注意:哪些方法的注意:哪些方法的select语句产生结果集语句产生结果集?哪哪些方法的些方法的select语句不产生
17、结果集语句不产生结果集?6.1.2 6.1.2 用户自定义变量用户自定义变量3局部变量局部变量declare命命令令专专门门用用于于定定义义局局部部变变量量及及对对应应的的数数据据类类型型。局局部部变变量量必必须须定定义义在在存存储储程程序序中中(例例如如函函数数、触触发发器器、存存储储过过程程以以及及事事件件中中),并并且且局局部部变变量量的的作作用用范范围围仅仅仅仅局局限限于于存存储储程程序序中中,脱脱离离存存储储程程序序,局局部部变变量量没没有有丝丝毫毫意义。局部变量主要用于下面三种场合。意义。局部变量主要用于下面三种场合。6.1.2 6.1.2 用户自定义变量用户自定义变量3局部变量局
18、部变量场场合合一一:局局部部变变量量定定义义在在存存储储程程序序的的begin-end语语句句块块(稍稍后后介介绍绍)之之间间。此此时时局局部部变变量量首首先先必必须须使使用用declare命命令令定定义义,并并且且必必须须指指定定局局部部变变量量的的数数据据类类型型。只只有有定定义义局局部部变变量量后后,才才可可以以使使用用set命命令令或或者者select语语句句为为其其赋值。赋值。6.1.2 6.1.2 用户自定义变量用户自定义变量3局部变量局部变量场合二:局部变量作为存储过程或者函数的场合二:局部变量作为存储过程或者函数的参数使用,此时虽然不需要使用参数使用,此时虽然不需要使用decl
19、are命令命令定义,但需要指定参数的数据类型。定义,但需要指定参数的数据类型。6.1.2 6.1.2 用户自定义变量用户自定义变量3局部变量局部变量场合三:局部变量也可以用在场合三:局部变量也可以用在SQL语句中。语句中。数据检索时,如果数据检索时,如果select语句的结果集是单个语句的结果集是单个值,可以将值,可以将select语句的返回结果赋予局部变语句的返回结果赋予局部变量,局部变量也可以直接嵌入到量,局部变量也可以直接嵌入到select、insert、update以及以及delete语句的条件表达式语句的条件表达式中。中。6.1.2 6.1.2 用户自定义变量用户自定义变量4局部变量
20、与用户会话变量的区别局部变量与用户会话变量的区别(1)用户会话变量名以)用户会话变量名以“”开头,而局部开头,而局部变量名前面没有变量名前面没有“”符号。符号。6.1.2 6.1.2 用户自定义变量用户自定义变量(2)局部变量使用)局部变量使用declare命令定义(存储过程命令定义(存储过程参数、函数参数除外),定义时必须指定局部变参数、函数参数除外),定义时必须指定局部变量的数据类型;局部变量定义后,才可以使用量的数据类型;局部变量定义后,才可以使用set命令或者命令或者select语句为其赋值。语句为其赋值。用户会话变量使用用户会话变量使用set命令或命令或select语句定义并进语句定
21、义并进行赋值,定义用户会话变量时无需指定数据类型。行赋值,定义用户会话变量时无需指定数据类型。诸如诸如“declare student_no int;”的语句是错误的语句是错误语句,用户会话变量不能使用语句,用户会话变量不能使用declare命令定义。命令定义。6.1.2 6.1.2 用户自定义变量用户自定义变量4局部变量与用户会话变量的区别局部变量与用户会话变量的区别(3)用户会话变量的作用范围与生存周期大)用户会话变量的作用范围与生存周期大于局部变量。局部变量如果作为存储过程或于局部变量。局部变量如果作为存储过程或者函数的参数,此时在整个存储过程或函数者函数的参数,此时在整个存储过程或函数
22、内中有效;如果定义在存储程序的内中有效;如果定义在存储程序的begin-end语句块中,此时仅在当前的语句块中,此时仅在当前的begin-end语句块语句块中有效。用户会话变量在本次会话期间一直中有效。用户会话变量在本次会话期间一直有效,直至关闭服务器连接。有效,直至关闭服务器连接。6.1.2 6.1.2 用户自定义变量用户自定义变量4局部变量与用户会话变量的区别局部变量与用户会话变量的区别(4)如果局部变量嵌入到)如果局部变量嵌入到SQL语句中,由于语句中,由于局部变量名前没有局部变量名前没有“”符号,这就要求局部符号,这就要求局部变量名不能与表字段名同名,否则将出现无变量名不能与表字段名同
23、名,否则将出现无法预期的结果。法预期的结果。6.1.2 6.1.2 用户自定义变量用户自定义变量关于局部变量的其他说明:关于局部变量的其他说明:在在MySQL数据库中,由于局部变量涉及数据库中,由于局部变量涉及begin-end语句块、函数、存储过程等知识,语句块、函数、存储过程等知识,局部变量的具体使用方法将结合这些知识稍局部变量的具体使用方法将结合这些知识稍后一块儿进行讲解。后一块儿进行讲解。declare命令尽量写在命令尽量写在begin-end语句块的开语句块的开头,尽量写在任何其他语句的前面。头,尽量写在任何其他语句的前面。6.1.2 6.1.2 用户自定义变量用户自定义变量根据运算
24、符功能的不同,可将根据运算符功能的不同,可将MySQL的运算的运算符分为算术运算符、比较运算符、逻辑运算符分为算术运算符、比较运算符、逻辑运算符以及位操作运算符。符以及位操作运算符。1算术运算符算术运算符算术运算符用于两个操作数之间执行算术运算术运算符用于两个操作数之间执行算术运算。常用的算术运算符有:算。常用的算术运算符有:+(加)、(加)、-(减)(减)、*(乘)、(乘)、/(除)、(除)、%(求余)以及(求余)以及div(求商)等(求商)等6种运算符。种运算符。6.1.3 6.1.3 运算符与表达式运算符与表达式2比较运算符比较运算符比较运算符(又称关比较运算符(又称关系运算符)用于比较
25、系运算符)用于比较操作数之间的大小关操作数之间的大小关系,其运算结果要么系,其运算结果要么为为true、要么为、要么为false、要么为要么为NULL(不确定)(不确定)。6.1.3 6.1.3 运算符与表达式运算符与表达式select ab=ab,ab=ab,ba,NULL=NULL,NULLNULL,NULL is NULL;结结论论:字字符符串串进进行行比比较较时时,会会截截掉掉字字符符串串尾尾部的空格字符,然后进行比较。部的空格字符,然后进行比较。6.1.3 6.1.3 运算符与表达式运算符与表达式3 3逻辑运算符逻辑运算符逻辑运算符(又称布尔运算符)对布尔值进逻辑运算符(又称布尔运算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 基础 实例教程 课件
限制150内