数据库的几个问题存储过程触发器函数创建以及sql优化
2018-03-16 14:24
861 查看
mysql
1,用户变量,局部变量
数据库也有变量,就像一些编程语言一样,我们可以直接声明变量并且赋值,对于全局和会话变量不作讨论set @mynumber=1;随意设置一个变量仅存在与该使用用户内
select @mynumber:=3 from dual;选择时可以:=改变数值局部变量创建在如函数的begin-end之内DECLARE c varchar(100) DEFAULT 'a';2,创建函数delimiter $本来所有语句的结尾是;这里改成$否则在函数的内部;会被误认为语句结束,结束后再改回;
3,创建存储过程drop PROCEDURE if exists proc1;
delimiter $
create PROCEDURE proc1(in a varchar(50))
BEGIN
select * from test where id=a;
end $
delimiter ;
set @a='f67f405b-53ef-40ee-bfde-60e9871e6471';
call proc1(@a);
条件语句if then else end if;delimiter $
create PROCEDURE proc3(inout a int)
BEGIN
if a=0 then
select 0;
ELSE
select 1;
end if;
end $
delimiter ;
set @a=0;
call proc3(@a);case when then else end case;delimiter $
create PROCEDURE proc4(inout a int)
BEGIN
CASE
when a=0 then
select 0;
ELSE
select 1;
end case;
end $
delimiter ;
set @a=0;
call proc4(@a);循环只介绍一个while do end while;CREATE PROCEDURE proc5()
begin
declare var int;
set var=0;
while var<6 do
insert into test values(var);
set var=var+1;
end while;
end; 4,触发器delimiter $
create TRIGGER trigger_user
after update on `user`
for each ROW
BEGIN
update user set username='o';
end $
delimiter ;除了固定的写法外,before,after
insert,delete,update可以自行更改
通过简单的介绍,再去学习更深的可能会方便一点
5,sql优化
对于sql优化这篇文章介绍了很多
点击打开链接
1,用户变量,局部变量
数据库也有变量,就像一些编程语言一样,我们可以直接声明变量并且赋值,对于全局和会话变量不作讨论set @mynumber=1;随意设置一个变量仅存在与该使用用户内
select @mynumber:=3 from dual;选择时可以:=改变数值局部变量创建在如函数的begin-end之内DECLARE c varchar(100) DEFAULT 'a';2,创建函数delimiter $本来所有语句的结尾是;这里改成$否则在函数的内部;会被误认为语句结束,结束后再改回;
drop function if exists concat1; delimiter $ create function concat1(a VARCHAR(20),b varchar(20)) returns varchar(200) BEGIN DECLARE c varchar(100) DEFAULT 'a'; set c=CONCAT(a,b); return c; END $ delimiter ; set @a='A'; set @b='B'; select concat1(@a,@b) from dual;至于函数的内容可以自己更改
3,创建存储过程drop PROCEDURE if exists proc1;
delimiter $
create PROCEDURE proc1(in a varchar(50))
BEGIN
select * from test where id=a;
end $
delimiter ;
set @a='f67f405b-53ef-40ee-bfde-60e9871e6471';
call proc1(@a);
drop PROCEDURE if exists proc2; delimiter $ create PROCEDURE proc2(out a varchar(50)) BEGIN set a='o'; select * from test where id=a; end $ delimiter ; set @a='f67f405b-53ef-40ee-bfde-60e9871e6471'; call proc2(@a);上面有一个in和out的区别,in表示可以外部更改参数传入,而外部的参数对于out来说没有作用,当然你也可以将其设置为INOUT
条件语句if then else end if;delimiter $
create PROCEDURE proc3(inout a int)
BEGIN
if a=0 then
select 0;
ELSE
select 1;
end if;
end $
delimiter ;
set @a=0;
call proc3(@a);case when then else end case;delimiter $
create PROCEDURE proc4(inout a int)
BEGIN
CASE
when a=0 then
select 0;
ELSE
select 1;
end case;
end $
delimiter ;
set @a=0;
call proc4(@a);循环只介绍一个while do end while;CREATE PROCEDURE proc5()
begin
declare var int;
set var=0;
while var<6 do
insert into test values(var);
set var=var+1;
end while;
end; 4,触发器delimiter $
create TRIGGER trigger_user
after update on `user`
for each ROW
BEGIN
update user set username='o';
end $
delimiter ;除了固定的写法外,before,after
insert,delete,update可以自行更改
通过简单的介绍,再去学习更深的可能会方便一点
5,sql优化
对于sql优化这篇文章介绍了很多
点击打开链接
相关文章推荐
- 从已有数据库生成脚本来获得生成数据表、视图、函数、存储过程以及触发器的SQL语句
- SQL Server 第四堂课,创建存储过程。存储过程是一组编译在单个执行计划中的transact-SQL语句。存储过程相当于C#函数,可以允许模块化程序设计,允许更快执行如果某操作需要大量transct-SQL代码或需要重复执行,将在创建存储过程中对其进行分析和优化。
- 数据库优化之创建存储过程、触发器
- 运用ORACLE的OO4O类库函数解决调用存储过程向远程数据库上传超过32K图片失败的问题
- 几个在MS SQL Server处理IP的函数/存储过程
- SQL创建数据库、表、存储过程及调用
- SQL存储过程测试(2)——创建测试用例以及测试结果存储
- 数据库开发必看 -- 用索引优化SQL,开发优秀的分页存储过程(一)
- SQL 语句创建数据库、表与存储过程的样例
- 手动 重编译存储过程、SQL语句、函数、触发器、视图
- SQLServer2005里怎样对使用with encryption选项创建的解密存储过程、解密函数、触发器、视图
- DB Optimizer:数据库SQL代码分析调试优化,数据库存储过程优化,数据库负载测试
- SQL存储过程测试——创建测试用例以及测试结果存储
- 如何使用 Visual Studio .NET 工具创建数据库对象和 Transact-SQL 存储过程。
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- 数据库开发必看 -- 用索引优化SQL,开发优秀的分页存储过程(三)
- 数据库开发必看 -- 用索引优化SQL,开发优秀的分页存储过程(二)
- 常用sql自定义函数以及存储过程
- Oracle中用sql查询获取数据库的所有触发器,所有存储过程,所有视图,所有表