单元8数据库编程讲述

上传人:最**** 文档编号:115994683 上传时间:2019-11-15 格式:PPT 页数:57 大小:1.21MB
返回 下载 相关 举报
单元8数据库编程讲述_第1页
第1页 / 共57页
单元8数据库编程讲述_第2页
第2页 / 共57页
单元8数据库编程讲述_第3页
第3页 / 共57页
单元8数据库编程讲述_第4页
第4页 / 共57页
单元8数据库编程讲述_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《单元8数据库编程讲述》由会员分享,可在线阅读,更多相关《单元8数据库编程讲述(57页珍藏版)》请在金锄头文库上搜索。

1、单元八 数据库编程 项目知识要点与目标 项目知识要点知识能力目标学时 8.1 任务1 MySQL语言结构 8.1.1 常量与变量 8.1.2 表达式与函数 8.2 任务2 存储过程 8.2.1 创建存储过程 8.2.2 调用存储过程 8.2.3 删除存储过程 8.2.4 流程控制语句 8.3 任务3 存储函数 8.3.1 创建存储函数 8.3.2 调用存储函数 8.4 任务4 触发器 8.4.1 创建触发器 8.4.2 删除触发器 8.5 综合实例 PetStore数据库编程 【情境】:Petstore数据库操作程 序化 【职业岗位】:程序员 【典型工作任务】:通过数据库编 程操作数据库。 【

2、技能要求】: 1、流程控制语句的应用 2、存储过程的编写、应用与管理 3、触发器编写、应用与管理 【知识要求】: 1、顺序结构、分支结构和循环结 构的应用 2、存储过程创建、调用删除 3、触发器创建、调用及删除 4 项目实训八 “员工管理系统”编程操作 4 任务一 MySQL语言结构 1字符串常量 字符串是指用单引号或双引号括起来的字符序列,分为ASCII字 符串常量和Unicode 字符串常量。 ASCII字符串常量是用单引号括起来的,由ASCII字符构成的符 号串。举例:hello,How are you! Unicode 字符串常量与ASCII字符串常量相似,但它前面有一个 N标志符(N

3、代表 SQL-92标准中的国际语言(National Language) )。N前缀必须为大写。只能用单引号括起字符串。 举例:Nhello,NHow are you! Unicode 数据中的每个字符用两个字节存储,而每个ASCII字符 用一个字节存储。 在字符串中不仅可以使用普通的字符,也可使用几个转义序列 ,它们用来表示特殊的字符。 【例8.1】 执行如下语句: SELECT ThisnIsnFournLines; 其中,“n”表示回车。 常量 2数值常量 数值常量可以分为整数常量和浮点数常量。 3十六进制常量 一个十六进制值通常指定为一个字符串常量,每对十六进制数字 被转换为一个字符,

4、其最前面有一个大写字母“X”或小写字“x”。 4日期时间常量 日期时间常量:用单引号将表示日期时间的字符串括起来构成。日 期型常量包括年、月、日,数据类型为DATE,表示为“1999-06-17”这 样的值。 时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为TIME ,如“12:30:43.00013”。 日期/时间的组合,数据类型为DATETIME或TIMESTAMP,如“1999- 06-17 12:30:43”。 常量 5位字段值 可以使用bvalue符号写位字段值。value是一个用0和1写成的 二进制值。直接显示bvalue的值可能是一系列特殊的符号。例如 ,b0显示为空白,b

5、1显示为一个笑脸图标。 使用BIN函数可以将位字段常量显示为二进制格式。 6布尔值 布尔值只包含两个可能的值:TRUE和FALSE。 FALSE的数字值为“0”,TRUE的数字值为“1”。 7NULL值 NULL值可适用于各种列类型,它通常用来表示“没有值”、“无 数据”等意义,并且不同于数字类型的“0”或字符串类型的空字符 串。 用户变量 变量用于临时存放数据,变量有名字及其数据类型两个属 性,变量名用于标识该变量,变量的数据类型确定了该变量存 放值的格式及允许的运算。MySQL中根据变量的定义方式,变量 可分为用户变量和系统变量。 1用户变量 用户可以在表达式中使用自己定义的变量,这样的变

6、量叫 做用户变量。在使用用户变量前必须定义和初始化。如果使用 没有初始化的变量,它的值为NULL。 定义和初始化一个变量可以使用SET语句 语法格式为: SET user_variable1expression1 ,user_variable2= expression2 , 其中,user_variable1、user_variable2为用户变量名, 变量名可以由当前字符集的文字数字字符、“.”、“_”和 “$”组成。 变量举例 【例8.2】 创建用户变量name并赋值为“王林”。 SET name=王林; 还可以同时定义多个变量,中间用逗号隔开。 【例8.3】 创建用户变量user1并赋值

7、为1,user2赋值为2,user3赋 值为3。 SET user1=1, user2=2, user3=3; 定义用户变量时变量值可以是一个表达式。 【例8.4】 创建用户变量user4,它的值为user3的值加1。 SET user4=user3+1; 在一个用户变量被创建后,它可以以一种特殊形式的表达式用于其他 SQL语句中。变量名前面也必须加上符号。 【例8.5】 创建并查询用户变量name的值。 SET name=王林; SELECT name; 变量举例 【例8.6】 使用查询给变量赋值。 SET student=(SELECT 姓名 FROM XS WHERE 学号=081101

8、); 【例8.7】 查询表XS中名字等于例6.11中student值的学生信息。 SELECT 学号, 姓名, 专业名, 出生日期 FROM XS WHERE 姓名=student; 说明:在SELECT语句中,表达式发送到客户端后才进行计算。这说明 在HAVING、GROUP BY或ORDER BY子句中,不能使用包含SELECT列表中 所设的变量的表达式。 对于SET语句,可以使用“=”或“:=”作为分配符。分配给每个 变量的值可以为整数、实数、字符串或NULL值。 也可以用其他SQL语句代替SET语句来为用户变量分配一个值。在这种 情况下,分配符必须为“:=”,而不能用“=”,因为在非S

9、ET语句中 “=”被视为比较操作符。 【例8.8】 执行如下语句: SELECT t2:=(t2:=2)+5 AS t2; 结果t2的值为7。 系统变量 MySQL有一些特定的设置,当MySQL数据库服务器启动的时候 ,这些设置被读取来决定下一步骤。例如,有些设置定义了数据 如何被存储,有些设置则影响到处理速度,还有些与日期有关, 这些设置就是系统变量。和用户变量一样,系统变量也是一个值 和一个数据类型,但不同的是,系统变量在MySQL服务器启动时 就被引入并初始化为默认值。 【例8.9】 获得现在使用的MySQL版本。 SELECT VERSION ; 说明:在MySQL中,系统变量VERS

10、ION的值设置为版本号。在变量 名前必须加两个符号才能正确返回该变量的值。 大多数的系统变量应用于其他SQL语句中时,必须在名称前加 两个符号,而为了与其他SQL产品保持一致,某些特定的系统变 量是要省略这两个符号的。如CURRENT_DATE(系统日期) 【例8.10】 获得系统当前时间。 SELECT CURRENT_TIME; 运算符 1算术运算符 算术运算符在两个表达式上执行数学运算,这两个表达式可以是任何数字 数据类型。算术运算符有:+(加)、(减)、*(乘)、/(除)和%(求模 )5种运算。 2比较运算符 比较运算符(又称关系运算符),用于比较两个表达式的值,其运算结果 为逻辑值,

11、可以为三种之一:1(真)、0(假)及 NULL(不能确定)。 3、逻辑运算符 逻辑运算符用于对某个条件进行测试,运算结果为TRUE(1)或FALSE(0 )。 4、运算符优先级 当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后 次序。执行的顺序会影响所得到的运算结果。运算符优先级如下表所示。 运 算 符优先级运 算 符优先级 +(正)、(负)1NOT5 *(乘)、/(除)、%(模) 2AND6 +(加)、(减)3OR7 =,=, ,!K2 THEN SET K3= 大于; ELSEIF K1=K2 THEN SET K3= 等于; ELSE SET K3= 小于; END IF

12、; END$ DELIMITER ; 说明:存储过程中K1和K2是输入参数 ,K3是输出参数。 要比较的数存入K1,K2 “大于”=K3 K1K2 ? K1=K2 ? “等于”=K3“小于”=K3 输出K3 是 否 是 否 【例8.23】 创建存储过程,判断两个输入的参数哪一个更大。 存储过程创建完后,可以在程序、触发器或者存储过程中被调用, 但是都必须使用到CALL语句。 语法格式: CALL sp_name(parameter,.) parameter为调用该存储过程使用的参数,这条语句中的参数个数必 须总是等于存储过程的参数个数。 如果是输出变量,前面加 调用该存储过程: CALL CO

13、MPAR(3, 6, K); SELECT K; 说明:3和6相当于输入参数K1和K2,用户变量K相当于输出参数K3。 可以看到,由于3=5 AND sl10 THEN UPDATE Sell SET 订购单价=订购单价*0.8 WHERE 身份证号=sfz AND 图书编号=bh; END IF; END IF; END$ DELIMITER ; 调用存储过程dj_update: CALL dj_update (张三, 网络数据库); 调用存储过程举例 CASE语句 (2)CASE语句 语法格式为: CASE 表达式 WHEN 值1 THEN 语句序列1 WHEN值2 THEN语句序列2 .

14、 ELSE语句序列e END CASE 或者: CASE WHEN 条件1 THEN 语句序列1 WHEN条件2 THEN语句序列2 . ELSE语句序列e END CASE 第一种格式中表达式是要被判断的值或表达式,接下来是一系列的 WHEN-THEN块,每一块的值参数都要与表达式比较的值,如果为真,就执行 语句序列中的SQL语句。如果前面的每一个块都不匹配就会执行ELSE块指定的 语句。CASE语句最后以END CASE结束。 第二种格式中CASE关键字后面没有参数,在WHEN-THEN块中,条 件指定了一个比较表达式,表达式为真时执行THEN后面的语句。 第二种格式与第一种格式相比,更能

15、够实现更为复杂的条件判断,使用 起来更方便。 【例8.25】 创建一个存储过程,当给定参数为时返回“上升”,给定参数为 时返回“下降”,给定其他参数时返回“不变”。 DELIMITER $ CREATE PROCEDURE var_cp (IN str VARCHAR(1), OUT direct VARCHAR(4) ) BEGIN CASE str WHEN U THEN SET direct =上升; WHEN D THEN SET direct =下降; ELSE SET direct =不变; END CASE; END$ DELIMITER ; 以上的CASE语句用第二种格式来写如

16、下: CASE WHEN str= U THEN SET direct =上升; WHEN str= D THEN SET direct =下降; ELSE SET direct =不变; END CASE; CASE语句举例 课堂练习 1、创建存储过程,输入员工编号bh ,输出该员工的性别。 2、创建存储过程,输入员工编号bh和级别jb两个参数,如果jb为A,该员 工收入增加500元, jb为B,该员工收入增加300元,jb为C,该员工收入 增加150元,jb为A、B、C以外的其他值,该员工收入增加50元。 3、创建存储过程,比较两个员工的实际收入,如前者比后者高就输出0, 否则输出1。并调用该存储过程比较”000001”和”108991”两员工的收 入。 课堂练习参考答案 1、创建存储过程 create procedure cp(in id1 char

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号