字符串函数和存储过程

 1、  字符串函数

字符串参数都可以替换成字段名

AscII:返回char类型数据中第一个对应的整型;

char():输入0-255之间的整数,返回char类型;

left(字符,长度):可以对字段内容进行截取;

right(字符,长度):可以对字段内容进行截取;

trim:删除两侧空格

ltrim:删除左边空格

rtrim:删除右边空格

rpad(‘被填充对象’,最终的长度,填充的内容):

lpad():截取、填充

select lpad('abcdddddddddgagsda',10,'*');

replace(“被作用的对象”,被替换的内容,替换后的内容):

select replace('a23abc153asdf123','a','f');

concat:连接字符串,逗号作为分隔符

select concat('a','b');   输出 ab

substring(“被作用的对象”,开始截取的位置,截取的长度)

   开始截取的位置从1开始,>=1

   开始截取的位置是负数,表示从后向前截取

select substring('adfadfasf',1,2);   ab

strcmp(字符1,字符2):按照字节比较

   相等 0,大于1,小于-1

select strcmp('a','b');  -1

select strcmp('c','b');  1

select strcmp('c','c');  0

2、  日期和时间函数

now():当前日期和时间

curdate():当前日期

year(): year(now()-出生日期)

curtime():当前时间

3、  加密函数

4、  控制流函数

ifnull()

nullif()

if()

5、  格式化函数

format:针对浮点

select format(3.1415826,2);      3.14

date_format:日期格式化

select date_format(now(),'%H');   09

select date_format(now(),'%P');    P

select date_format(now(),'%Y’);   2011

time_format:时间格式化

 

字符和时间日期需要单引号

6、  类型转换

cast(要转换的对象 as 类型);

select 1+cast('a' as signed);    输出1

7、  系统信息函数

select database()  select connection_id()

select user()   select version();

二、语言结构

DDL:create  alter  drop

DML:insert  delete  update  select(查询语言)

DCL:grant  revoke  commit  rollback

三、常量

  ‘a’ 12  3.14

变量:保存运行过程中的临时结果

1)  用户变量(和会话有关---连接服务器到退出服务器)

@变量名  一定要初始化

set @a=2;   //定义用户变量

select @a;   //显示用户变量

select 返回的结果分几类:表,列,行,值(标量子查询)

2)  系统变量

@@VERSION;

select @@VERSION;

 

存储过程:

  类似函数:批量处理;

1、为什么使用

mysql服务器在缓存机制上做了改进,使用了类似预处理的那种方式,由于没有编译器,因此mysql存储过程不会真正的像外部语言(C)编写的程序运行的那么快。提升的方法有两种:降低网络的信息流量,减少用户与服务器之间的交互;

因为存储过程是在服务器端执行,所以使用存储过程就会减少客户与服务器之间的信息量。

改变主机语言也可以,存储过程只是数据库逻辑而不是应用程序,可移植性 系统、主机型号等无关;

2、要求:

Ø        proc 表

Ø        create routine(例程) 权限

Ø        返回标量值

Ø        隐含调用use库名,删除数据库,存储过程也被删除

3、语法格式

create procedure 存储过程名(参数)

特征描述

SQL语句体

4、例如

1)use test;

2)create procedure p1()

begin

/*this is my first procedure*/

end;

注意:

Ø        begin···end相当于{}的作用

Ø        如果SQL语句体只有一句可以省略begin···end

Ø        名称不区分大小写,尽量避免与内建函数同名,假如同名则在名称和()之间加空格

Ø        名称的长度限制为64个字符

Ø        ()可以为空,但不能省略

Ø        通常select不会出现在存储过程体内

Ø        大部分的DDL、DML都是合法语句

非法语句:

create procedure db.p() drop database db;

含有use 库名等

3)调用存储过程

call 存储过程名(···);

4)带有描述信息的存储过程

create procedure p3()

language sql  //声明用什么语言来实现存储过程

             目前只支持sql语句,将来可能会使用php来代替sql语句

not deterministic   //返回的结果不确定

sql security definer  //创建者

comment ’a procedure’  //给存储过程加注释

select * from tb1;   //---select * ·····    //sql语句体;

5)当语句体内容两条以上,结束符号

   sql;

   create procedure p4()

   begin

     select * from tb1; //会给出错误提示,直接结束存储过程的声明

     select * from tb2;

   end;

 

 delimiter -----声明结束符

 delimiter //

 select * from tb1 //

 

  create procedure p4()

  begin

select * from tb3//

 

  参数:[in|out|inout] 参变量 数据类型

   declare:声明存储过程的局部变量

  1)第一种方法用两种

    declare 变量名 变量数据类型

    定义的变量不进行初始化,默认为null,该值进行的所有操作,结果都为空

set 变量=值(也可以是表达式);赋值

  2)第二种方法

也可用同一条语句完成变量的声明和初始化

declare 变量名 数据类型 default 值;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值