内建函数的补充和存储过程的认识

来源:互联网 发布:java的标识符和关键字 编辑:程序博客网 时间:2024/06/06 08:50
 

 今天老师继续上周的内置函数,讲了其中的一种函数---字符串函数。

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

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

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

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

Right(字符,长度)

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

Lpad :截取、填充

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

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

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

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

       ……………………是负数,表示从后向前截取

Strcmp(字符1,字符2);按照字节比较

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

1、  日期和时间函数

Now();

Curtime()

Curdate()

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

练习:其他函数

2、  加密函数(自行练习)

3、  控制流函数

Ifnull()

Nullif()       

If()

4、  格式化函数

Format:针对浮点

Date_format:日期格式化

Time_format:时间格式化

 

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

 

5、  类型转换

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

6、  系统信息函数

见表6.11

P114-129 记准确

 

二、语言结构

DDL:create  alter  drop

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

DCL:grant revoke等

 

三、常量

   ‘a’  12  3.14

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

1)用户变量(和会话---连接服务器到退出服务器的一段时间)

@变量名

   一定要初始化

   Set @a=2;

   Select @a;

Select 返回结果分几类:表,列,行,值(标量)

 

2)系统变量

  @@VERSION

  Select

四、存储过程

这是一个比较大的知识点。

1、在mysql中。可以定义一段程序放在数据库中,这样的程序成为存储过程。存储过程是数据库对象之一。存储过程实际上就是一段代码,它可以有声明SQL语句(如CREATE/UPDATE/SEKECT)和过程式语句(if-then-else)组成。存储过程可以由程序、触发器或者另一个存储过程来调用激活它,实现代码段中SQL的语句。

2、创建存储过程

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  *  。。。------SQL 语句体;

 

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

Sql;

 

Create procedure p4()

Begin

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

   Select * from tb2;

End;

 

Delemiter---声明结束符

Delemiter //

Select * from tb1//

 

 

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

 

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

   1)第一种方法:分两步实现

 Declare  变量名  数据类型;声明

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

       结果都为空;

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

  2)第二种方法:

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

    Declare  变量名  数据类型   default  值;

    Mysql服务器在缓存机制做了改进,使用类似预处理的那种方式,由于没有编译器,

因此mysql存储过程不会像外部语言(c)编写的程序运行的那么快。提升速度最主要的方法有两种:降低网络的信息流量,减少用户与服务器之间的交互;

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

 所以说,存储过程是一个全新的知识点。

 

原创粉丝点击