版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、泰牛程序员 PHP学院 MySQL-高级1标题1错误!未定义书签。1.1标题2错误!未定义书签。1.1.1标题3错误!未定义书签。1 概述MySQL中的SQL编程的话题.触发器, 存储函数, 存储过程以上的是三个名词, 在SQL编程中, 地位是: 程序的载体, 程序的结果.编程所涉及的要素:变量, 数据类型, 流程控制, 函数, 运算符, 表达式.2 函数2.1 内置函数MySQL自动提供的函数!例如: database(), now(), md5()2.2 自定义函数 存储函数用户定义定义的, 存储在MySQL中的函数.2.2.1 create function, 创建函数适用语法:来创建函
2、数2.2.2 调用函数2.2.3 drop function , 删除函数 drop function if exists function-name;3 变量 编程要素程序 处理数据. 数据在程序中的容器, 就是变量.强类型3.1 全局变量函数外定义的变量变量不需要声明, 直接去设置即可!PS, 内置的变量: set autocommit = off, 不以 开头3.2 局部变量函数内定义的变量使用declare来声明.不需要使用, 表示是用户自定义变量.强类型, 定义的局部变量, 必须定义为某种类型, 类型的表述与字段的类型一致!3.3 重叠(嵌套)作用域局部内, 可访问到全局变量PS:
3、与JS保持一致13.4 变量的赋值3.4.1 set 变量 = 值 3.4.2 select into 变量当需要为变量赋值的数据, 来源于SQL中select语句的查询结果时, 可以使用select into完成变量的赋值.一次性, 赋值多个变量:函数内, 也可以使用4 流程控制 编程要素循环和分支4.1 分支- IF测试结果4.1.1 内置分支函数: if()不是分支, 是典型的 三元运算, 的函数封装语法MySQL不支持三元运算符 ? :.4.2 分支-CASE测试结果4.3 循环 while条件满足, 则循环继续其中标签, 用于在循环终止时, 一次性的终止多层循环! 类似于JS的语法.
4、 例如:4.4 循环 终止终止当前循环:(continue), iterate终止全部:(break), leave终止, 都需要配合 循环语句的标签使用!ierate:leave:如果需要终止多层:需要在 后边跟随 不同的标签即可5 过程 存储过程 procedure与函数类似, 都是一段功能代码的集合, 称之为过程.与函数不一样的是, 函数由于完成某个特定的操作点, 例如, md5(), 获取md5摘要信息, 不是用来实现某中也无路基操作, 而是就是实现特定的操作. 过程是, 某个特定的业务逻辑. 当我们需要使用SQL完成某件事时候, 使用过程, 而在过程的完成中, 需要一些特殊的操作,
5、就是函数.例如: 需要插入, 1000条记录到某测试表中, 此时就应该创建过程.而在插入的时候, 需要随机的获取学生的姓名, 就可以定义一个函数, 完成获取随机的学生姓名工作.映射到PHP程序: 浏览器所请求的一个URL, 对应的PHP代码, 就是一段过程. (例如, 商品添加, 用户注册), 就是过程.而在完成这个过程中, 需要将用户的密码做md5处理, md5就是函数.因此, 函数在意的是处理结果,函数具有返回值.而过程是一段执行, 不具有返回值.语法5.1 创建过程: create procedure注意: 没有返回值 参数有输入方式之分.过程内的写法, 与函数是一致的. 5.2 调用过
6、程, call 过程()过程的调用不能出现在表达式中, 需要使用独立的语法进行独立调用. / 表达式中max(class_id) + 10;需要用 call5.3 删除过程, drop procedure5.4 参数的输入类型, in, out, inoutin, out, inout, 表示, 过程的参数的数据的传递方向. in: 由外向内传递out: 由内向外传递inout: 双向传递, 即可内向外, 也可外向内内, 外, 指的是, 过程外和过程内.创建 过程外的三个变量:以三个变量作为实参, 调用过程:在获取过程外三个变量的值:inout 双向传递, 类似于 PHP中的引用传递!由于过程
7、没有返回值, 需要在过程处理后, 得到过程的处理结果数据, 就因该, 使用 带有out类型的参数.一个数据时被多个过程连续处理, 典型的需要 inout类型的参数.6 练习一个纯粹的MySQL管理员需要完成某些操作, 需要使用过程, MySQL自带的编程方式.例如, 需要创建大量的测试数据, 可以过程完成:确定测试表的结构确定需要插入的数据格式要求: 学号要 从1开始 递增.班级ID, 从1-100 随机姓名, 随机得来说明: 任意编程实现:编写, 需要的函数:获取班级ID生成名字:生成信息生成学号从1开始 递增it-0000001it-0000002取得已有的最大学号.调用过程即可:测试数据
8、7 触发器 trigger事件驱动程序: 监听元素某些事件, 当事件被触发时, 事件处理器被调用.(PS: 类似于JS的事件驱动)触发器的事件: insert, delete, update扩展开共六种: before insert, after insertbefore delete, after deletebefore update, after update事件都是记录对象的事件, row的before insert, row after insert.语法7.1 创建触发器, create trigger绑定事件处理器, 到 row 元素上.测试, 在学生表的添加事件上 增加触发器程
9、序:一旦学生表添加, 则在学生日志表中, 加入一条记录检测学生日志表:触发程序被自动调用触发器, 只是 调用方式不同于存储过程而已, 都是功能的集合.7.2 删除触发器drop trigger tigger-name7.3 new, old预定义的变量, 表示触发该事件的行对象.就是 事件源记录. 使用 new, old 来引用这个事件源记录.new 和 old的区别:new, 新纪录old, 旧记录.只有在update事件时, 才会出现 新旧记录同时存在的情况. 更新: 将旧记录更改成新纪录.在 insert事件中, 只有new可用. before insert, after insert
10、, 都可以使用new.在delete事件中, 只有 old可用. before delete after delete 都可以使用 old无论是 before还是insert 都一样.7.4 事件的触发可能会出现执行一条语句 , 触发多个事件的情况.有些语句, 带有逻辑判定功能:replace into, 尝试插入, 如果冲突, 则替换(删除旧的,插入新的)类似的: insert into on duplicate key update 冲突时更新一个表, 的一个事件, 仅仅可以绑定一个事件处理器.一个表 最多可以有6个触发器.8 架构读写分离, 负载均衡.8.1 读, 写服务器分离设计:56
11、.101, MySQL 充当写服务器.再添加2台linux 充当读服务器:初始化mac地址完全复制复制后, 启动复制的服务器:删除, 之前所保留的 虚拟化网卡的文件, 使新生成的网卡生效.修改 eth0的配置文件: 修改mac地址参数:修改为, virtualbox生成的mac地址:保持一致init 6 重启8.2 读从写服务器 复制数据在主服务器上开一个复制账号, 从服务器利用这个复制账号, 从主服务器进行复制.配置过程如下:8.2.1 主服务器8.2.1.1 开启二进制日志8.2.1.2 指定唯一的服务器ID保证唯一即可!需要重启 mysqld(可以与步骤一一起完成)8.2.1.3 增加复制账号登录主MySQL, 增加账号, 刷新权限.8.2.1.4 记录
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年四川省华蓥市高二化学下册期末考试模拟卷附答案(精练)
- 2026年辽宁省凤城市高二化学下册期末考试模拟测试卷附答案【培优A卷】
- 2026年江苏省仪征市高二化学下册期末考试模拟测试卷(能力提升)附答案
- 2026年甘肃省临夏市高二化学下册期末考试模拟测试卷附参考答案【达标题】
- 2026年河北省定州市高二化学下册期末考试模拟卷附答案【巩固】
- 2026年江苏省仪征市高二化学下册期末考试模拟卷(培优A卷)附答案
- 某机械厂设备采购制度
- 2026年山东省海阳市高二化学下册期末考试模拟卷及参考答案(综合卷)
- 2026年江西省丰城市高二化学下册期末考试模拟检测卷含答案(典型题)
- 2026年广东省陆丰市高二化学下册期末考试模拟卷(典型题)附答案
- 《威尼斯的小艇》的教案设计5篇
- 模拟电子技术(第11版英文版)PPT完整全套教学课件
- 虾米腰弯头放样展开方法
- 中华文化选讲(吉林师范大学)知到章节答案智慧树2023年
- 2021-2022学年下学期学区小学二年级数学无纸笔考试方案附等级评价表(小学二年级数学下册无纸化考试方案)
- 2023年火电电力职业技能鉴定考试-装卸机械电器修理工考试题库(含答案)
- GB/T 6730.76-2017铁矿石钾、钠、钒、铜、锌、铅、铬、镍、钴含量的测定电感耦合等离子体发射光谱法
- GB/T 16895.6-2014低压电气装置第5-52部分:电气设备的选择和安装布线系统
- GB 12476.1-2013可燃性粉尘环境用电气设备第1部分:通用要求
- 第五章岩石爆破理论详解课件
- 装配式混凝土结构工程专项施工方案
评论
0/150
提交评论