基本语法形式

语句块模式:

在mysql编程中,begin....end;基本代替了原来编程语句中的{...}语法。

但又有所区别:

一个bigin...end;块,可以给定一个“标识符”,并且可以使用leave语句来“退出”该语句块。

基本流程控制语句:

if语句:

case语句:(类似php中的switch)

while循环语句:

mysql中的变量

变量它有一定的使用场景限制(其实包括前面的流程控制语句也这样):

在通常的执行各种create,insert,delete,update,select等语句的“环境”中,并不使用常规变量,也不能使用流程控制语句。

其实,这些语句只能在编程环境中用——通常的增删改查,可以称为命令环境。

编程环境:存储函数中,存储过程中,触发器中

普通变量的声明语法:

declare 变量名 变量类型 [default 初始值]

变量的赋值语法:

set 变量名 = 变量值

mysql还有一种变量形式,可以称为“会话变量”

会话变量的形式为:  @变量名;

会话变量无需单独声明,而是直接赋值就可以,类似php

会话变量的赋值:  set  变量名 = 值;

会话变量可以在普通命令行环境中或编程环境中使用。

语法1:set 变量名 = 表达式;#此语法中的变量必须先使用declare声明

语法2:set @变量名 = 表达式; #此方式可以无需declare语法声明,而是直接赋值,类似php定义变量并赋值。

语法3:select @变量名 := 表达式;#此语句会给该变量赋值,同时还会作为一个select语句输出“结果集”。

语法4:select 表达式 into @变量名;#此语句虽然看起来是select语句,但其实并不输出“结果集”,而只是给变量赋值。

当然,也可以进行运算:

稍微总结一下:

有两种环境;

常规mysql命令环境,可以执行:增删改查。。。

编程环境:其实就是在特定的语句语法内部:存储过程内,存储函数内,触发器内。

两种变量:

普通变量:不带@符,直接写名字,必须先声明,后使用(赋值之类),只能用于编程环境

会话变量:带@符,无需声明,直接使用(先赋值),可以用于2种环境。

流程控制语句: 只能用于编程环境

存储函数

定义形式:

调用形式:

跟系统函数的调用形式一样,直接使用名字,并带括号,以及根据需要带实参。

比如:

select  3, now(), f1(); //f1为自定义的存储函数。

select  3, now(), f2(3, ‘abc’,  @v1); //带3个实参,其中@v1是一个前面赋值了的变量。

举例:

先得改变语句结束符:

删除:drop function [if exists] 存储函数名

存储过程

存储过程就是一个没有返回值数据值的“函数”。

虽然存储过程不返回单个数据值,但可以“返回”结果集——这里的返回起始就是select语句的正常结果表现。

定义形式:

其中,

in,out,inout用于修饰一个形参的“数据流向”:

in:只作为外部输入数据,调用环境传入存储过程内部,默认值。

out:只作为输出数据,即存储过程传出到调用环境。

inout:具有双重。

存储过程调用形式:

call  存储过程名(实参1,实参2,.....);

举例:

注:

实际,在php中,其实是这样:

$sql = “call   pro1(8, 'dd') ”;

mysql_query( $sql );

删除:drop procedure [if exists] 存储过程名

MySql——编程的更多相关文章

  1. Visual C++ 2008进行MySQL编程

    visual c++ 2008进行MySQL编程(ODBC) -- (一) 套装安装 visual c++ 2008进行MySQL编程(ODBC) --(二) CDatabase操作数据库 visua ...

  2. MySQL编程基础

    本文是关于MySQL编程中的一些基础知识,包括变量和运算符.常用语句.函数. 一.变量与运算符 1.用户会话变量声明:SET @变量名 = 表达式;//即:用户会话变量无需提前定义,直接用赋值语句赋值 ...

  3. C++ MySQL编程

    MySQL编程需要包含<mysql.h>头文件.该文件一般在MySQL安装目录下的include文件夹下. 包含头文件还不够,还需要包含“libmysql.lib”库,一般在lib文件夹下 ...

  4. mysql 编程初步

    mysql 编程 基本语法形式: 语句块模式 [begin_label] begin [statement_list] end [end_label]; label 标识符可以省略,但必须相同 流程控 ...

  5. visual c++ 2013进行MySQL编程(ODBC) -- (一) 套装安装

    最近写了有些技术类文章了,只因为最近研究多了些东西,有一些项目用到了,所以自己记录一下,怕自己忘记,如果有哪位同学有自己的见解,可以邮件或者回复,技术类的探讨,不管对否,都是欢迎的. 操作之前,必须安 ...

  6. MySQL编程

    MySQL 使用标准 SQL 检索和处理数据,体积小.开源.免费,易于快速部署.正是因为这些特点,使得其在互联网行业,特别是 Web 应用方面使用相当广泛.至今最新的版本已到 8.0. 一 基本操作 ...

  7. python入门编程之mysql编程

    python关于mysql方面的连接编程 前提:引入mysql模块MySQLdb,即:MySQL_python-1.2.5-cp27-none-win_amd64.whl 如果要用线程池,则要引用模块 ...

  8. JAVA / MySql 编程——第八章 DAO 模式

    1.        数据持久化:将程序中的数据在瞬时状态和持久状态间转换的机制即为数据持久化: 2.        持久化的实现方式:数据库.普通文件.XML文件: 3.        JDBC封装: ...

  9. JAVA / MySql 编程——第七章 JDBC

    1.JDBC:JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力:         ●Java是通过JDBC技术实现对各种数据 ...

随机推荐

  1. java中遍历类中的属性、调用getter&setter方法

    public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...

  2. DBSCAN聚类︱scikit-learn中一种基于密度的聚类方式

    一.DBSCAN聚类概述 基于密度的方法的特点是不依赖于距离,而是依赖于密度,从而克服基于距离的算法只能发现"球形"聚簇的缺点. DBSCAN的核心思想是从某个核心点出发,不断向密 ...

  3. ss-libev 源码解析local篇(4): server_recv_cb之STAGE_STREAM

    继续探索server_recv_cb,我们已经来到了STAGE_STREAM状态.如果在0.05秒的timer来之前客户端就有数据过来,server_recv_cb被调用,此时已经在stream状态就 ...

  4. wordpress 生成自定义 meta box

    工具 https://jeremyhixon.com/tool/wordpress-meta-box-generator/ 使用 生成代码 /** * Generated by the WordPre ...

  5. UICollectionView 数据库元素分组 多种section分开显示

    第一遍 复杂方法 : 数据库查询一个表中userID 然后进行分类 中间去重 获得ID个数  放到section 中  显示 #pragma mark -  查询不同的ID 各数  - (void)c ...

  6. Ubuntu16.04 --> 14.04

    从16到14 自认为14是比较稳定的.从安装依赖上说. 14安装应用 更多参见[请直接拉到"华丽丽的分割线"下面] Java9 注意,添加源的时候先把lantern打开!!! 添加 ...

  7. 【剑指offer】数组中出现次数超过数组长度一半的数字,C++实现

    原创博文,转载请注明出处! # 题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过 ...

  8. XMPP协议相关知识

    XMPP协议的组成 主要的XMPP 协议范本及当今应用很广的XMPP 扩展: RFC 3920 XMPP:核心.定义了XMPP 协议框架下应用的网络架构,引入了XML Stream(XML 流)与XM ...

  9. 使用Linq动态排序

    Linq排序很方便,如果能动态创建Expression再排序就更方便了. 正序还是倒序排列 var order = typeof(Enumerable).GetMember(direction == ...

  10. js判断当前浏览类型

    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isOpera = userAgent.indexOf("Opera ...