MySQL数据库技术与项目应用教程课件项目6系统数据库编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 结构化变量:这种变量是系统变量的一种特例。MySQL目前只在需要 定义更多的MyISAM索引缓存区时才会用到这些变量。
– 局部变量:这种变量处于存储过程中,而且只是在存储过程中有效。它 们没有特殊的前导标识,因此,给它们起的名字必须与数据表和数据列 的名字有所区别。
SQL程序语言基础
• 用户变量
• 转义字符
转义字符 \' \" \b \n \r \t \\
– 布尔值常量:布尔值只包含TRUE和FALSE两个值 – NULL值常量
• NULL值可适用于各种列类型,它通常用来表示“没有值”、“无数据”等 意义
SQL程序语言基础
• 字符串常量
– 字符串是指用单引号或双引号括起来的字符序列 – ASCII字符串常量是用单引号括起来 – Unicode字符串常量与ASCII字符串常量相似,但它前面有一个N标识符
– 字符串常量 – 数值常量
• 数值常量可以分为整数常量和浮点数常量。整数常量即不带小数点的十进制 数,例如+1453、20和-213432等。浮点数常量是使用小数点的数值常量, 例如,-5.43、1.5E6和0.5E-2等
– 日期时间常量
• 用单引号将表示日期时间的字符串括起来就是日期时间常量。例如,'200805-12 14:26:24:00'就是一个合法的日期时间常量。
【例6.5】使用SHOW VARIABLES查看系统变量。
SHOW SESSION VARIABLES; SHOW GLOBAL VARIABLES;
-- 查看所有会话变量 -- 查看所有全局变量
SQL程序语言基础
• 常量
– 常量是指在程序运行过程中,值不会改变的量。一个数字,一个字母或 一个字符串等都可以是一个常量。
– SESSION变量只对当前会话(当前连接)有效 – GLOBAL变量则对整个服务器全局有效。 – 都可以使用SET命令来修改其值。 – 当一个全局变量被改变时,新的值对所有新的连接有效,但对已经存在
的连接无效。 – 而会话变量的改变只对当前连接有效,当一个新的连接出现时,会话变
量的默认值起作用。
SET @@global.wait_timeout = 10000; -- 全局变量
SET GLOBAL wait_timeout = 10000; -- 全局变量
SELECT @@wait_timeout;
SELECT @@global.wait_timeout;
SQL程序语言基础 • 系统变量
目录/Contents
01
数据库编程基础
02
使用函数实现数据访问
03
使用存储过程实现数据访问
04
使用触发器实现数据访问
05
使用事件实现自动化任务
任务1 数据库编程基础
任务场景
任何一种语言都是为了解决实际应用中的问题而存在的。SQL程序的流程控制和游 标的使用能够有效解决数据库程序设计中的复杂逻辑问题。本任务在SQL程序语言 基础上,详细讨论了SQL的流程控制和游标的使用。
SQL程序语言基础 • 局部变量和用户变量区别
用户变量 以“@”字符开头 使用SET语句进行定义和赋值
在当前会话中有效
局部变量
没有修饰符号
使用DECLARE语句声明
只在BEGIN和END语句块之间有 效,该语句块执行完毕,局部变 量就失效了
SQL程序语言基础
• 系统变量
– MySQL中的系统变量分为SESSION(会话)变量和GLOBAL(全局) 变量。
– 用户变量即用户定义的变量。用户变量可以被赋值,也可以在后面的其 他语句中引用其值。
– 用户变量的名称由“@”字符作为前缀标识符。 – Fra Baidu bibliotek户变量使用SET命令和SELECT命令给其赋值
• SET命令使用的赋值操作符是“=”或“:=” • SELECT命令使用的赋值操作符只能是“:=”。
【例6.1】变量赋值。
SQL程序语言基础
• 变量
– 变量是指程序运行过程中会变化的量,MySQL支持的变量类型有4种类 型。
– 用户变量:这种变量用一个@字符作为前缀,在MySQL会话末端结束 其定义。
– 系统变量和服务器变量:这种变量包含了MySQL服务器的状态或属性。 它们以@@字符作为前导符(例如:@@binlog_cache_size)。
SQL程序语言基础
• 系统变量
【例6.4】设置和查看系统变量。
SET @@wait_timeout = 10000;
-- 会话变量
SET @@session.wait_timeout = 10000; -- 会话变量
SET SESSION wait_timeout = 10000; -- 会话变量
06
系统数据库编程
函数 存储过程 触发器 事件
引言/FORWORD
计算机应用有科学计算、数据处理与过程控制三大主要领域。伴随信息时代对数据处理 的要求不断增多,使得数据处理在计算机应用领域中占有越来越大的比重,包括现在最 流行的客户端/服务器模式(C/S)、WEB模式(B/S)应用等。在网上商城系统中,为 了有效地提高数据访问效率和数据安全性,使对网上商城系统的开发过程更加专注于业 务逻辑的处理,数据库负担为系统提供数据支持的任务,把复杂逻辑的数据处理放在数 据库中,即数据库编程。 MySQL提供了函数、存储过程、触发器、事件等数据对象来实现复杂的数据处理逻辑。
【例6.3】定义名称为proc_add的存储过程,该存储过程有两个int类 型的参数,分别为a和b。
CREATE PROCEDURE proc_add(in a int, in b int) BEGIN
DECLARE c int DEFAULT 0; SET c = a + b; SELECT c AS 'Result'; END;
SET @id = 3; SELECT @name := '刘立' ; SELECT tID, tName FROM goodstype WHERE tID=1 INTO @id, @name;
SQL程序语言基础
• 局部变量
– 局部变量一般用在SQL语句块(如存储过程的BEGIN和END)中 – 其作用域仅限于语句块,当语句块执行完毕后,局部变量就消失了 – 局部变量一般用DECLARE来声明,可以使用DEFAULT来设置默认值。
– 局部变量:这种变量处于存储过程中,而且只是在存储过程中有效。它 们没有特殊的前导标识,因此,给它们起的名字必须与数据表和数据列 的名字有所区别。
SQL程序语言基础
• 用户变量
• 转义字符
转义字符 \' \" \b \n \r \t \\
– 布尔值常量:布尔值只包含TRUE和FALSE两个值 – NULL值常量
• NULL值可适用于各种列类型,它通常用来表示“没有值”、“无数据”等 意义
SQL程序语言基础
• 字符串常量
– 字符串是指用单引号或双引号括起来的字符序列 – ASCII字符串常量是用单引号括起来 – Unicode字符串常量与ASCII字符串常量相似,但它前面有一个N标识符
– 字符串常量 – 数值常量
• 数值常量可以分为整数常量和浮点数常量。整数常量即不带小数点的十进制 数,例如+1453、20和-213432等。浮点数常量是使用小数点的数值常量, 例如,-5.43、1.5E6和0.5E-2等
– 日期时间常量
• 用单引号将表示日期时间的字符串括起来就是日期时间常量。例如,'200805-12 14:26:24:00'就是一个合法的日期时间常量。
【例6.5】使用SHOW VARIABLES查看系统变量。
SHOW SESSION VARIABLES; SHOW GLOBAL VARIABLES;
-- 查看所有会话变量 -- 查看所有全局变量
SQL程序语言基础
• 常量
– 常量是指在程序运行过程中,值不会改变的量。一个数字,一个字母或 一个字符串等都可以是一个常量。
– SESSION变量只对当前会话(当前连接)有效 – GLOBAL变量则对整个服务器全局有效。 – 都可以使用SET命令来修改其值。 – 当一个全局变量被改变时,新的值对所有新的连接有效,但对已经存在
的连接无效。 – 而会话变量的改变只对当前连接有效,当一个新的连接出现时,会话变
量的默认值起作用。
SET @@global.wait_timeout = 10000; -- 全局变量
SET GLOBAL wait_timeout = 10000; -- 全局变量
SELECT @@wait_timeout;
SELECT @@global.wait_timeout;
SQL程序语言基础 • 系统变量
目录/Contents
01
数据库编程基础
02
使用函数实现数据访问
03
使用存储过程实现数据访问
04
使用触发器实现数据访问
05
使用事件实现自动化任务
任务1 数据库编程基础
任务场景
任何一种语言都是为了解决实际应用中的问题而存在的。SQL程序的流程控制和游 标的使用能够有效解决数据库程序设计中的复杂逻辑问题。本任务在SQL程序语言 基础上,详细讨论了SQL的流程控制和游标的使用。
SQL程序语言基础 • 局部变量和用户变量区别
用户变量 以“@”字符开头 使用SET语句进行定义和赋值
在当前会话中有效
局部变量
没有修饰符号
使用DECLARE语句声明
只在BEGIN和END语句块之间有 效,该语句块执行完毕,局部变 量就失效了
SQL程序语言基础
• 系统变量
– MySQL中的系统变量分为SESSION(会话)变量和GLOBAL(全局) 变量。
– 用户变量即用户定义的变量。用户变量可以被赋值,也可以在后面的其 他语句中引用其值。
– 用户变量的名称由“@”字符作为前缀标识符。 – Fra Baidu bibliotek户变量使用SET命令和SELECT命令给其赋值
• SET命令使用的赋值操作符是“=”或“:=” • SELECT命令使用的赋值操作符只能是“:=”。
【例6.1】变量赋值。
SQL程序语言基础
• 变量
– 变量是指程序运行过程中会变化的量,MySQL支持的变量类型有4种类 型。
– 用户变量:这种变量用一个@字符作为前缀,在MySQL会话末端结束 其定义。
– 系统变量和服务器变量:这种变量包含了MySQL服务器的状态或属性。 它们以@@字符作为前导符(例如:@@binlog_cache_size)。
SQL程序语言基础
• 系统变量
【例6.4】设置和查看系统变量。
SET @@wait_timeout = 10000;
-- 会话变量
SET @@session.wait_timeout = 10000; -- 会话变量
SET SESSION wait_timeout = 10000; -- 会话变量
06
系统数据库编程
函数 存储过程 触发器 事件
引言/FORWORD
计算机应用有科学计算、数据处理与过程控制三大主要领域。伴随信息时代对数据处理 的要求不断增多,使得数据处理在计算机应用领域中占有越来越大的比重,包括现在最 流行的客户端/服务器模式(C/S)、WEB模式(B/S)应用等。在网上商城系统中,为 了有效地提高数据访问效率和数据安全性,使对网上商城系统的开发过程更加专注于业 务逻辑的处理,数据库负担为系统提供数据支持的任务,把复杂逻辑的数据处理放在数 据库中,即数据库编程。 MySQL提供了函数、存储过程、触发器、事件等数据对象来实现复杂的数据处理逻辑。
【例6.3】定义名称为proc_add的存储过程,该存储过程有两个int类 型的参数,分别为a和b。
CREATE PROCEDURE proc_add(in a int, in b int) BEGIN
DECLARE c int DEFAULT 0; SET c = a + b; SELECT c AS 'Result'; END;
SET @id = 3; SELECT @name := '刘立' ; SELECT tID, tName FROM goodstype WHERE tID=1 INTO @id, @name;
SQL程序语言基础
• 局部变量
– 局部变量一般用在SQL语句块(如存储过程的BEGIN和END)中 – 其作用域仅限于语句块,当语句块执行完毕后,局部变量就消失了 – 局部变量一般用DECLARE来声明,可以使用DEFAULT来设置默认值。