96SEO 2026-02-20 07:18 13
篇涵盖入门、进阶、高级(一些原理分析);这一篇和上一篇差不多当做扩展用到的时候再查即可(毕竟数据库最多的还是增删改查

)。
这一篇很像我们常用的高级语言的基础课程。
虽然MYSQL命令很多但是自己去多敲一点到后面忘记了查一下就可以回忆起来使用了这一系列也是本人学习MYSQL做的笔记也是为了方便后面忘记查询参考资料黑马、csdn和知乎博客欢迎收藏
语句的执行顺序是我们完成复杂操作必不可少的一部分。
只要是执行的程序流程就分为三大类
IF根据表达式的结果为TRUE或FALSE执行相应的语句。
这里“[]”中的内容是可选的。
IF**范例2**声明存储过程“update_sal_by_eno”定义IN参数eno输入员工编号。
判断该员工
薪资如果低于2000元并且入职时间超过5年就涨薪500元否则就不变。
DATEDIFF(CURDATE(),hiredate)/365
;**范例3**声明存储过程“update_sal_by_eno2”定义IN参数eno输入员工编号。
判断该员工
薪资如果低于3000元就更新薪资为3000元薪资如果大于等于3000元且低于5000的但是奖金
end中需要加上case如果放在select后面不需要CASE
end中需要加上case如果放在select后面不需要**范例1**使用CASE流程控制语句的第1种格式判断val值等于1、等于2或者两者都不等。
CASE;**范例2**使用CASE流程控制语句的第2种格式判断val是否为空、小于0、大于0或者等于0。
CASE;**范例3**声明存储过程“update_salary_by_eno4”定义IN参数eno输入员工编号。
判断改员工所属部门如果在10号部门工资加500如果在20号部门工资加600如果在30号部门工资加700;其他部门加300。
//**范例4**声明存储过程pro_sal_grade定义IN参数eno输入员工编号。
判断该员工的薪资等级如果在[700,1200]之间为等级一如果在[12011400]之间为等级二如果在[1401,2000]之间为等级三如果在[2001,3000]之间为等级四如果在[3001,9999]之间为等级五
LOOP循环语句用来重复执行某些语句。
LOOP内的语句一直重复执行直到循环被退出使用LEAVE子
其中loop_label表示LOOP语句的标注名称该参数可以省略。
**范例1**使用LOOP语句进行循环操作id值小于10时将重复执行循环过程。
add_loop;**范例2**当市场环境变好时公司为了奖励大家决定给大家涨工资。
声明存储过程“update_sal_loop()”声明OUT参数num输出循环次数。
存储过程中实现循环给大家涨薪薪资涨为原来的1.1倍。
直到全公司的平均薪资达到8000结束。
并统计循环次数。
WHILE语句创建一个带条件判断的循环过程。
WHILE在执行语句执行时先对指定的表达式进行判断如
果为真就执行循环内的语句否则退出循环。
WHILE语句的基本格式如下
[while_label];while_label为WHILE语句的标注名称如果循环条件结果为真WHILE语句内的语句或语句群被执行直
**范例1**WHILE语句示例i值小于10时将重复执行循环过程代码如下
test_while();**范例2**市场环境不好时公司为了渡过难关决定暂时降低大家的薪资。
声明存储过程“update_salary_while()”声明OUT参数num输出循环次数。
存储过程中实现循环给大家降薪薪资降为原来的90%。
直到全公司的平均薪资达到3000结束。
并统计循环次数。
REPEAT语句创建一个带条件判断的循环过程。
与WHILE循环不同的是REPEAT
REPEAT如果条件不满足则会就继续执行循环直到满足退出条件为止。
[repeat_label]repeat_label为REPEAT语句的标注名称该参数可以省略REPEAT语句内的语句或语句群被重复直至expr_condition为真。
;**范例2**当市场环境变好时公司为了奖励大家决定给大家涨工资。
声明存储过程“update_salary_repeat()”声明OUT参数num输出循环次数。
存储过程中实现循环给大家涨薪薪资涨为原来的1.15倍。
直到全公司的平均薪资达到9000结束。
并统计循环次数。
1、这三种循环都可以省略名称但如果循环中添加了循环控制语句LEAVE或ITERATE则必须添加名称。
包裹起来的程序体内表示跳出循环或者跳出程序体的操作(相当于break)
标记名其中label参数表示循环的标志。
LEAVE和BEGIN
“leave_begin()”声明INT类型的IN参数num。
给BEGIN…END加标记名并在BEGIN…END中使用IF语句判断num参数的值。
如果num0则使用LEAVE语句退出BEGIN…END如果num1则查询“emps”表的平均薪资如果num2则查询“emps”表的最低薪资如果num2则查询“emps”表的最高薪资。
;**范例2**当市场环境不好时公司为了渡过难关决定暂时降低大家的薪资。
声明存储过程“leave_while()”声明OUT参数num输出循环次数存储过程中使用WHILE循环给大家降低薪资为原来薪资的90%直到全公
ITERATEiterate语句只能用在循环语句LOOP、REPEAT和WHILE语句内表示重新开始循环将执行顺序
labellabel参数表示循环的标志。
ITERATE语句必须跟在循环标志前面。
但是却无法在结果集中像指针一样向前定位一条记录、向后定位一条记录或者是随意定位到某一条记录
中游标是一种临时的数据库对象可以指向存储在数据库表中的数据行指针。
说白了就是可以逐行读取。
1500;这里我们就可以通过游标来操作数据行如图所示此时游标所在的行是“7698”的记录我们也可以在结果集上滚动游标指向结果集中的任意一行。
游标必须在声明处理程序之前被声明并且变量和条件还必须在声明游标或处理程序之前被声明。
在MySQL中使用DECLARE关键字来声明游标其语法的基本形式如下
cursor_name当我们定义好游标之后如果想要使用游标必须先打开游标。
这个变量中游标指针指到下一行。
如果游标读取的数据行有多个列名则在
CLOSE也就是打开和关闭游标。
当我们使用完游标后需要关闭掉该游标。
因为游标会占用系统资源
如果不及时关闭游标会一直保持到存储过程结束影响系统运行的效率。
而关闭游标的操作会释放游标占用的系统资源。
关闭游标之后我们就不能再检索查询结果中的数据行如果需要检索只能再次打开游标。
创建存储过程“get_count_by_limit_total_salary()”声明IN参数
limit_total_salary声明OUT参数total_count。
函数的功能可以实现累加薪资最高的几个员工的薪资值直到薪资总和
达到limit_total_salary参数的值返回累加的人数给total_count。
get_count_by_limit_total_salary(IN
的一个重要的功能为逐条读取结果集中的数据提供了完美的解决方案。
跟在应用层面实现相同的功能相比游标可以在存储程序中使用效率高程序也更加简洁。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback