MySQL 之 SQL 编程
来源:互联网 发布:枣庄政府网络解决方案 编辑:程序博客网 时间:2024/06/07 00:08
一、注释
# 单行注释
-- (两个横线一个空格) 单行注释
/* */ 多行注释
二、语句分隔符
默认的有以下三种
; \g \G
修改语句分隔符
delimiter DELIM;#除了 \,任何字符都可以作为语句分隔符
三、变量
1. 定义变量
set var=valur 或者 set var:=valueselect STATEMENT into var_list;2. 获取变量值
select var;3. 声明局部变量, 通常用在存储过程或函数中
declare COLUMN_DEFINITION;# eg:declare i int default 0;
注意:
1) 字段就是变量,为了区分系统变量、字段和自定义变量,通常在自定义变量名前加 @ 符号
2) select @who='lisi';# 此处的 = 号是关系表达式
3) select @who:='lisi'; # := 是赋值表达式
四、流程控制语句
1. if
if CONDITION1 thenstatement;...elseif CONDITION2 thenstatement;...elsestatement;...end if;
2. case
case varwhen value1 thenstatement;...when value2 thenstatement;...elsestatement;...end case;
或者
casewhen CONDITION1 then statement;...when CONDITION2 thenstatement;...elsestatement;...end case;
SELECT 语句中使用下面的形式:
SELECT CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END;SELECT CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END;
3. while
while CONDITION dostatement;...end while;
4. repeat
repeatstatement;...until CONDITION end repeat;
提前结束循环
leave 相对于 break
iterate 相对于 continue
五、MySQL函数
查看函数
show function status;show create function FUNC_NAME;
删除函数
drop function [if exists] FUNC_NAME;
函数定义
delimiter $create function FUNC_NAME(arg1, arg2, ...) returns ret_typebegin# function bodystatement;...end$delimiter ;
函数调用
select [db_name.]FUNC_NAME(arg1, arg2, ...);
eg:
drop function if exists sayHello;delimiter $create function sayHello(name varchar(10)) returns varchar(20)beginreturn concat('hello ',name);end$delimiter ;
六、MySQL存储过程
查看
show procedure status;show create procedure PRO_NAME;删除
drop procedure [if exists] PRO_NAME;调用
call PRO_NAME();创建
delimiter $create procedure PRO_NAME(arg1, arg2, ...)begin# procedure bodystatement;....end$delimiter ;
eg:
delimiter $create procedure p1(num int, flag char(1))beginif flag='h' then select * from TABLE_NAME where id>num;else select * from TABLE_NAME where id<num;end if;end$delimiter ;-- 求和delimiter $create procedure sum_n(n smallint)begindeclare idx int default 0;declare sum int default 0;set idx=1;set sum=0;while i<=n do set sum=sum+i; set idx=idx+1;end while;select s;end$delimiter ;
存储过程参数修饰符: IN/OUT/INOUT
IN 类似于编程语言中的“函数传参”,默认
OUT 存储过程内部会修改此全局变量的值
INOUT IN/OUT 的结合
eg:
delimiter $drop procedure if exists p$ create procedure p(IN num int, OUT total int)begindeclare i int default 0;set i := 1;set total := 0;while i<=num doset total := total + i;set i := i+1;end while;end$delimiter ;mysql> set total=0;# 需要事先定义 total 为全局变量mysql> call p(10, total);mysql> select total;# total 值被修改delimiter $drop procedure if exists p$create procedure p(INOUT total int)beginset total := total + 20;end$delimiter ;mysql> set total=10;mysql> select total;# 10mysql> call p(total);mysql> select total;# 20
通过编译预处理把“表名”作为“参数”传递
drop procedure if exists p;delimiter $$create procedure p(t_name varchar(10))begin# 拼接 SQL 语句set @sql=concat('select * from ',t_name);prepare stmt from @sql;execute stmt;deallocate prepare stmt;end$$delimiter ;
0 0
- mysql之sql编程
- MySQL 之 SQL 编程
- MySQL编程。sql语句。
- MySQL学习之SQL
- MySQL之慢SQL
- MySQL 之 初识SQL
- mysql之sql优化
- MySQL之SQL优化
- mysql之SQL基础
- mysql之sql优化
- Shell编程之MySQL
- SQL编程之生日问题
- oracle之pl/sql编程
- Oracle之PL/SQL编程
- sql server编程之 T-SQL函数
- mysql 学习之 SQL mode
- mysql之SQL---存储过程
- mysql之SQL查询过程
- 谷歌浏览器怎么调试js
- linux 按键驱动代码分析
- 11g dataguard 类型、保护模式、服务
- hibernate的关系映射
- 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在Web应用系统开发中,文件上传和下载功能是非常常用的功能,需要的朋友可以参考下
- MySQL 之 SQL 编程
- nuplayer处理服务端的应答消息notifyResponseListener
- 关于socket,http,udp,ip等之间 的关系
- 单链表之合并两个链表
- windows.open打开窗口并居中
- 案例实战Elasticsearch基本操作(一)
- docker 个人经验分享
- Android ViewGroup事件分发机制
- Java 获取昨天日期字符串