mysql编程

  • 语句块包含符:begin ... end,请看:
  • 流程控制:
    • if语句:
    • case语句:
    • loop语句:
    • while语句:
    • repeat语句:
    • leave语句:语法:leave 标识符; 其作用是用来退出begin...end结构或其他具有标识符的结构。
  • 变量声明:declare 变量名 变量类型 [default 初始值]; #类似js中使用var定义变量(并赋值)。注意:其只能在begin...end这种复合语句结构中。
  • 变量赋值:
    • 语法1:set 变量名 = 表达式;#此语法中的变量必须先使用declare声明
    • 语法2:set @变量名 = 表达式; #此方式可以无需declare语法声明,而是直接赋值,类似php定义变量并赋值。
    • 语法3:select @变量名 := 表达式;#此语句会给该变量赋值,同时还会作为一个select语句输出“结果集”。
    • 语法4:select 表达式 into @变量名;#此语句虽然看起来是select语句,但其实并不输出“结果集”,而只是给变量赋值。
    • 注意:上述语法中变量形式的区别:“@变量名”形式可以在非程序语句中使用,而不带“@”的变量名只能在程序语句中(比如begin ...end范围),且后者必须先声明(declare语法)才能赋值。
  • 存储过程:
    • 什么是存储过程:就是相当于php或js中没有返回值的函数!——它只“做事”(包括增删改查等),不返回单个数据值(但可以得到select的查询结果)。
    • 定义(创建):
    • 调用:call 存储过程名 (实参1,实参2,...);
    • 删除:drop procedure [if exists] 存储过程名;
  • 存储函数
    • 什么是存储函数:就是相当于php或js中有返回值的函数!——它必须在完成一定的“计算”后返回单个数据值(一个具体数据或变量数据);
    • 注意:存储函数中不能有select语句——因为select语句会返回结果集,但存储函数只能返回“单个数据值”。
    • 定义(创建):
    • 调用:当作普通函数的调用方式,可用于select语句中。比如:select now() as shijian, func1(5) as col;
    • 删除:drop function [if exists] 存储函数名;
  • 内置函数
    • 数值函数:abs(x), ceiling(x),floor(x), pi(), pow(x,y), rand(), round(x), sqrt(x); //x表示一个数字
    • 字符串函数:(以下x表示一个数字,str表示一个字符串)
      • ascii(str):返回str的ascii码
      • bin(x):获取数字x的二进制字符串形式
      • cast(exp as char): 将exp转换为char类型
      • char(x1,x2, ...): 返回若干个数字对应的字符串
      • char_length(str): 返回字符数,length(x)返回字节数
      • concat(str1,str2,...): 连接字符串
      • format(x, d): 将数字x格式化为“##,###,###.###”的字符形式,并保留d位。
      • instr(str, substr): 取得str中第一次出现substr的位置(位置从1开始算起)
      • lcase(str),lower(str);ucase(str), upper(str)
      • left(str, len): 取得s左边len个字符,right(str,len)取得右边len个字符
      • lpad(str,len,padstr): 左填充,rpad(str, len, padstr)右填充
      • ltrim(str):左截取,rtrim(str)右截取,trim(str)两边截取
      • mid(str, pos, len): 同义词:substring(str, pos[, len])
      • repeat(str, count): 重复str字符count次。
      • reverse(str):反转字符
      • strcmp(str1, str2): 比较两个字符大小,返回0,-1,1。
    • 时间日期函数:(以下t,t1,t2均表示一个时间/日期数据)
      • addtime(t1,t2):将时间t2加到时间t1上
      • curdate(), current_date();
      • curtime(), current_time();
      • date(t): 取得t的日期部分(即年月日)
      • day(t):取得t的日期数(1-31)
      • dayname(t): 取得星期名(英文单词)
      • dayofweek(t): 取得星期数(1-7)
      • datediff(t1, t2): 取得t1和t2相差的天数,t1大则为正数
      • date_add(t, interval 数字n 单位u): 将时间t加上n个单位u(比如3个day,5个hour),实际上如果n为负数,就是减去。常用单位有:year, month, day, hour, minute, second, week
      • date_format(t, '格式字符f'):格式字符f常用有:%Y, %y,%m, $d, %H, %h, %i, %s
      • extract(时间项u from t):从t中取得时间的某项值,比如年份数,月份数;时间项u的常用词有:year, month, day, hour, minute, second, week
      • localtime(): 同now();
      • maketime(时,分,秒):
      • month(t):取得月份数(1-12)
      • year(t):取得年份数
    • 聚合函数:(以下col表示一列,通常就是字段名)
      • avg(col):取得一列的平均值
      • count(col):取得一列的非null值的个数
      • min(col):取得一列的最小值;
      • max(col):取得一列的最大值;
      • sum(col):取得一列的总和
    • 其他函数:
      • md5(str): md5加密函数
      • password(str): 加密函数
      • sha1(str): 加密函数
      • user(), current_user();
      • database();
      • version();
      • Inet_atoN(): IP到整数;
      • Inet_ntoa()(): 整数到IP;
  • 触发器
    • 什么是触发器?触发器就是在数据库中预先设定好的用于在某个表上发生某个事件(增/删/改)的时候来完成某些任务的一种代码机制。现实中类似的例子就是银行金库的红外扫描入侵报警器。
    • 创建触发器:create trigger 触发器名 触发时机 触发事件 on 表名 for each row 要执行的代码
      • 触发器名:一个名字,在一个数据库中唯一;
      • 触发时机:表示是某个事件之前还是之后触发,只有两个可用值:before,after;
      • 触发事件:表示一个表上什么事件发生的时候会触发,只有3个可用值:insert,update,delete;
      • 要执行的代码:要执行的一条或多条语句(但不能有select语句),类似写存储函数中的语句,可以用begin和end以便写多条语句。其中,还可以使用两个特殊的关键字来代表特定含义:old代表触发该触发器的事件所操作的“原来行数据”(就是要执行update或delete的数据)),new代表触发该触发器的事件所操作的“新行数据”(就是要insert的数据)。用此两者可以引用其中的字段以代表该行的该字段值,比如:insert into trigger_test2 set n1=new.n1, amount=new.amount*2; 或:delete from trigger_test2 where n1=old.n1
    • 删除触发器:drop trigger [if exists] 触发器名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值