为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
与MySQL的零距离接触_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

与MySQL的零距离接触

平然 学生
难度入门
时长 8小时29分
  • DECLARE 只能用在BEGIN ....END 之间,且必须位于第一行.BEGIN..END 之间的变量,被称为是局部变量 通过SELECT语句,SELECT.INTO..以及set @i=7;声明的是用户变量 举例: CREATE PROCEDURE removeUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED) -> BEGIN -> DELETE FROM users3 WHERE id = p_id; -> SELECT count(id) FROM users3 INTO userNums; -> END -> // 调用时:CALL removeUserAndReturnUserNums(27,@nums) SELECT @nums;
    查看全部
  • mysql变量的术语分类: 1.用户变量:以"@"开始,形式为"@变量名" 用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效 2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名 对所有客户端生效。只有具有super权限才可以设置全局变量 3.会话变量:只对连接的客户端有效。 4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量 declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量
    查看全部
  • 删除存储过程: DROP PROCEDURE [IF EXISTS] sp_name
    查看全部
  • 修改存储过程:无法修改过程体,只能先删除后重新创建
    查看全部
  • 创建带有参数的存储过程: DELIMITER // 修改定界符(结束符) CREATE PROCEDURE _name(IN _name _type) BEGIN DELETE FROM _table where id = _name (这里需要注意条件的名字不能跟参数的名字一样) END // 使用时需要先替换定界符 DELIMITER ; CALL _name;
    查看全部
  • 创建一个无参存储过程 举例:CREATE PROCEDURE sp1() SELECT VERSION(); 调用过程:CALL sp1(); 注:无参过程的调用可以不写小括号,例如上面的例子可以写成 CALL sp1
    查看全部
  • 过程体结构:
    查看全部
  • 1、存储过程语法结构分析 CREATE [DEFINER = {user|CURRENT_USER}]//定义时的用户,若是不写就默认为当前用户 PROCEDURE sp_name ([proc_parameter[,...]]) //可以带0到多个参数 sp_name存储过程的名字 [characteristic ...] routine_body 其中参数 proc_parameter: [IN|OUT|INOUT] param_name type IN, 表示该参数的值必须在调用存储过程时指定 OUT, 表示该参数的值可以被存储过程改变,并且可以返回 INOUT, 表示该参数的值调用时指定,并且可以被改变和返回 2.特性characteristic COMMENT 'string' {CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA|SQL SECURITY{DEFINER|INVOKER} COMMENT:注释 CONTAINS SQL:包含SQL语句, 但不包含读或写数据的语句 NO SQL:不包含SQL语句 READS SQL DATA:包含读数据的语句 MODIFIES SQL DATA:包含写数据的语句 SQL SECURITY {DEFINER|INVOKER}指明谁有权限来执行
    查看全部
  • select
    查看全部
  • MySQL的执行流程:
    查看全部
  • 今天我们来学习存储过程,学习了Mysql之后,我们发现会经常进行数据表的增删改查操作,当我们成功输入SQL命令以后,MYSQL的引擎首先会对我们所输入的命令进行语法分析,来查看一下我们所输入的SQL语句是否正确,如果语法正确,它再进行编译,编译成MYSQL引擎可以识别的命令,最后开始执行,并且将执行的结果返回给客户端,这就是MYSQL的执行流程。 我们思考一下,如果将MYSQL的过程简化一下,也就是说如果我们省略了这其中的语法分析以及编译环节,Mysql的执行效率就可以提高,那么我们如何来实现这个任务,就需要这个存储过程,首先我们来了解一下什么是存储过程。 **存储过程是是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。**存储过程存储在数据库内,可以由应用程序调用执行,而且允许用户声明变量以及进行流程控制,存储过程可以接收参数,可以接收输入类型的参数,也可以接收输出类型的参数,并且可以存在多个返回值。通过这个简单的介绍我们可以发现,存储过程的效率要比我们单一的执行SQL语句的效率要高,原因在于我们以前假设这两个SQL语句,Mysql的引擎会对这两个语句逐一的进行语法分析,逐一的进行编译再逐一的去执行,而我们采用了存储过程之后,只有在第一次才进行语法分析和编译,以后我们客户端再去调用直接调用编译的结果就可以了,这样就直接省略了两个环节,效率比以前要好。 存储过程的优点: 1.增强SQL语句的功能和灵活性(存储过程内 可以编写控制语句,有很强的灵活性,可以完成复杂的判断以及较复杂的运算) 2.实现较快的执行速度(如果有大量SQL语句逐句语法分析编译执行效率会很低,而存储过程第一次编译时会载入内存,之后客户端再调用存储过程的时候会直接从内存中来执行,调用第一次编译的结果) 3.减少了网络流量(单独发送SQL语句让服务器来执行的话,那么通过HTTP协议所提交的数据量较大,假设我们现在删除users表中id为3的记录,我们来想一下```DELETE FROM users where id=3;```,整个字符量大约要快30个,假设有一个过程是DELETE user,我们只需要调用它把id传过去就可以了,我们发现我们只需要传递存储过程的名字以及id就可以了。所以说它提交给服务器的字符数量相对较少,也减少了网络的流量。)
    查看全部
  • 一. 存储过程简介 存储过程 存储过程存储在数据库内,可以有应用程序调用执行,而且允许用户声明变量以及进行流程控制,存储过程可以接受参数,可以介绍输入类型的参数,也可以接受输出类型的参数,并且可以存在多个返回值。所以存储过程的效率要比我们单一的sql语句执行的效率要高,比如:假设我们写了两条sql的语句,mysql会对这两天语句逐一的进行分析、逐一的进行编译,在进行逐一的执行,而我们采用的存储过程以后,只有在第一次才进行语法分析和编译,以后我们客户端再去调用,会直接来调用执行的结果,其中就省略了再次的语法分析和编译过程。 存储过程的优点。 (一)、增加sql语句的功能和灵活性 因为在存储过程内可以写控制语句,name就有很强的灵活性,可以完成复杂的判断以及较复杂的运算 (二)、实现较快的执行速度。 如果执行某一个复杂的操作,包含大量的sql语句,那么这些语句都将被mysql的引擎执行语法分析、编译、以及执行的过程,所以执行效率相对较低。而存储过程是预编译的,当客户端第一次调用这个存储过程的时候,mysql的引擎将对它进行语法分析、编译等操作,然后把这个编译的结果存储到内存当中,所以,第一次的的执行效率适合以前一样。但是以后客户端再次调用这个存储过程的时候便直接从内存当中来执行,所以说效率比较高,速度比较快。 (三)、减少了网络流量 如果我们通过客户端每个单独发送sql语句让服务器来执行,那么通过http协议所提交的数据量相对而言比较大。假设我们准备删除user表中id为3的记录 delete from user where id=3;这句话的字符量大约超过了30个字符,如果我们把他存储成存储过程的话,假设有一个存储过程叫delete user,我们只需要调用delete user吧id传过去就可以完成了删除,所以我们会发现,我们只需要来传递存储过程的名字以及要删除的那个id的号码就可以了。所以他提交给服务器的数量就会少很多。减少了网络流量
    查看全部
  • 创建复合结构函数体: DELIMITER 修改分割符,DELIMITER // 结束时就需要输入//,而;就不管用了 CREATE FUNCTION ADD_USER(p_id SMALLINT,username VARCHAR(20)) ->RETURNS INT UNSIGNED ->BEGIN ->INSERT user(p_id,username) VALUES(p_id,username);(这里有分号) ->RETURN LAST_INSERT_ID();(也有分号) ->END ->//
    查看全部
  • 创建带参数的自定义函数: CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) ->RETURNS FLOAT(10,2) UNSIGNED ->RETURN(num1+num2); 删除函数: DROP FUNCTION fun_name;
    查看全部
  • SET NAMES gbk;//gbk编码只在MySQL客户端中需要,服务器中不受影响,只有在在客户端中文乱码的时候才修改。 例:创建函数f1,修改日期时间格式: CREATE FUNCTION f1()RETURNS VARCHAR(30) ->RETURN DATE_FORMAT(NOW(),'%y年%m月%d日 %h点:%i分:%s秒'); 调用:SELECT f1();
    查看全部

举报

0/150
提交
取消
课程须知
要想学习本课程,你只需要知道数据库是个什么东东就足够了,是不是很easy?!
老师告诉你能学到什么?
1、MySQL安装与配置 2、数据类型 3、流程控制与运算符 4、DDL、DCL、DQL、DML 5、常用函数 6、表类型(存储引擎) 7、图形化工具
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!