首页 / MYSQL / mysql的sql编程
mysql的sql编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql的sql编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3088字,纯文字阅读大概需要5分钟。
内容图文
trigger after_order after insert on my_order for each row begin update my_goods set inv = (inv - new.g_number) where id = new.g_id; end; insert into my_order values(null , 1 , 2); select * from my_goods; select * from my_order; -- 这个时候会发现另一个问题,就是触发器如果删除得成负数,那是有问题的。 -- 触发器结合if分支,判断商品库存是否足够,不够不能生成订单 create trigger before_order before insert on my_order for each row begin select inv from my_goods where id = new.g_id into @inv; if @inv < new.g_number then -- 库存不够,触发器没有提供一个阻止语句执行的方法,所以报错暴力终止 insert into xxx values(xxx); end if; end; insert into my_order values(null , 1 , 3); -- 系统函数 -- 定义两个变量 set @cn = ‘世界你好‘; set @en = ‘hello world‘; select substring(@cn,1,1),substring(@en,1,1); -- 世 h ,字符串下表从1开始,以字节为单位 select char_length(@cn),char_length(@en),length(@cn),length(@en); -- 4 ,11 , 12 ,11 我的是utf-8编码 select instr(‘hello‘,‘he‘),instr(‘hello‘,‘s‘); -- 1 , 0 select lpad(@cn , 20, ‘欢迎‘),lpad(@en , 20 , ‘hello‘); select insert(‘hello world‘ , 3 , 3 ,‘y‘); -- key world set @fi = ‘hello‘; set @se = ‘key‘; set @th = ‘KEY‘; SELECT strcmp(@fi , @se), strcmp(@se , @th), strcmp(@th , @fi); -- -1, 0 , 1 字符串不区分大小写在SQL中 -- 自定义函数 create function cs() returns varchar(50) begin return "hello world"; end; -- 调用函数 select cs(); -- 查看函数 【like pattern】 -- 函数从属于数据库 show function status like ‘cs‘; -- 查看函数的创建语句 show create function cs; -- 修改函数 & 删除函数 -- 函数只能先删除后新增,不能修改 drop function cs; -- 做函数,计算1~n的累加 create function add1(n int) returns int begin set @i = 1; set @res = 0; while @i <= n do set @res = @res + @i; set @i = @i + 1; end while; return @res; end; select add1(3); -- 在函数内部定义的变量在函数外部也可以访问 select @res; -- 求和,1~n之间的数之和,5的倍数不加 create function add2(n int) returns int begin declare i int default 1; declare res int default 0; w1: while i <= n do if i%5 = 0 then set i = i + 1; iterate w1; else set res = res + i ; set i = i + 1; end if; end while; return res; end; select add2(5); -- 创建存储过程 create procedure p1() begin select * from my_goods; -- 假设过程中需要显示数据,使用select end; -- 调用过程 call p1(); -- 查看过程 show procedure status like ‘p1‘; -- 查看过程创建语句 show create procedure p1; -- 过程参数 create procedure p2(in var1 int , out var2 int , inout var3 int) begin select var1,var2,var3; -- var2的值一定是null,进入过程前会清除值 end; -- call p2(1,2,3); in和inout参数只能传递变量而不能是值 set @int_1 = 1; set @int_2 = 2; set @int_3 = 3; select @int_1,@int_2,@int_3; -- 1,2,3 call p2(@int_1,@int_2,@int_3); -- 1, null, 3 select @int_1,@int_2,@int_3; -- 1, null , 3 -- out 和inout属于引用数据类型:内部修改会影响外部 -- 存储过程执行结束后,mysql将传入的引用变量修改后的值返回给实参。
mysql的sql编程
标签:模糊匹配 语句 ble 存在 bst 字符 variable triggers 事务
本文系统来源:http://www.cnblogs.com/aigeileshei/p/6729204.html
内容总结
以上是互联网集市为您收集整理的mysql的sql编程全部内容,希望文章能够帮你解决mysql的sql编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。