mysql函数

存储例程

陌路散爱 提交于 2020-03-21 03:25:52
存储例程是存储程序的一种类型,本质上也是封装了一些可执行的语句,只不过它的调用方式是:需要手动去调用!存储例程又可以分为存储函数和存储过程。 存储函数 创建存储函数 存储函数其实就是一种函数,只不过在这个函数里可以执行命令语句而已。函数它可以把处理某个问题的过程封装起来,之后直接调用函数就可以去解决同样的问题了。MySQL 中定义存储函数的语句如下: CREATE FUNCTION 存储函数名称([参数列表]) RETURNS 返回值类型 BEGIN 函数体内容 END 从这里可以看出,定义一个存储函数需要指定函数名称、参数列表、返回值类型以及函数体内容,如果该函数不需要参数,那参数列表可以被省略,函数体内容可以包括一条或多条语句,每条语句都要以分号 ; 结尾。里边的制表符和换行仅仅是为了好看,完全可以用空格代替。 mysql> delimiter $ mysql> create function avg_score(s varchar(100)) -> returns double -> begin -> return (select avg(score) from student_score where subject = s); -> end $ Query OK, 0 rows affected (0.01 sec) 定义了一个名叫 avg_score 的函数,它接收一个

Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

被刻印的时光 ゝ 提交于 2020-03-20 12:22:47
# Mysql数据库表引擎与字符集 ![](./imgs/752951346A5F4E7EBDE362FA97107707.png) ### 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:**客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。**那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?客户端可以向服务器发送增删改查各类请求,我们这里以比较复杂的查询请求为例来画个图展示一下大致的过程: ![image](./imgs/167f4c7b99f87e1c.png) > 虽然查询缓存有时可以提升系统性能,但也不得不因维护这块缓存而造成一些开销,比如每次都要去查询缓存中检索,查询请求处理完需要更新查询缓存,维护该查询缓存对应的内存区域。从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除。 ### 2.存储引擎 `MySQL`服务器把数据的存储和提取操作都封装到了一个叫`存储引擎`的模块里。我们知道`表`是由一行一行的记录组成的,但这只是一个逻辑上的概念,物理上如何表示记录,怎么从表中读取数据,怎么把数据写入具体的物理存储器上,这都是`存储引擎`负责的事情。为了实现不同的功能,`MySQL`提供了各式各样的`存储引擎`

MySQL用户

ぐ巨炮叔叔 提交于 2020-03-20 07:34:48
创建用户 在对 MySQL 的日常管理和实际操作中,为了避免用户恶意冒名使用 root 账号控制数据库,通常需要创建一系列具备适当权限的账号,应该尽可能地不用或少用 root 账号登录系统,以此来确保数据的安全访问。 可以使用 CREATE USER 语句来创建一个或多个 MySQL 账户,并设置相应的口令。 语法格式: CREATE USER <用户名> [ IDENTIFIED ] BY [ PASSWORD ] <口令> 语法说明如下: 1) <用户名> 指定创建用户账号,格式为 'user_name'@'host_name'。这里 user_name 是用户名, host_name 为主机名,即用户连接 MySQL 时所在主机的名字。若在创建的过程中,只给出了账户的用户名,而没指定主机名,则主机名默认为“%”,表示一组主机。 2) PASSWORD 可选项,用于指定散列口令,即若使用明文设置口令,则需忽略 PASSWORD 关键字;若不想以明文设置口令,且知道 PASSWORD() 函数返回给密码的散列值,则可以在口令设置语句中指定此散列值,但需要加上关键字 PASSWORD 。 3) IDENTIFIED BY子句 用于指定用户账号对应的口令,若该用户账号无口令,则可省略此子句。 4) <口令> 指定用户账号的口令,在 IDENTIFIED BY 关键字或

MySQL函数库

江枫思渺然 提交于 2020-03-20 07:33:00
MySQL函数库,这个函数库是一个外部函数库!这个函数提供了对于MySQL数据库进行操作的常用函数,如连接MySQL服务器、打开数据库、执行SQL语句等。所以这个函数库的功能对于我们来说是非常重要的! 其实,MySQL数据库是整个程序开发的最底层,我们在程序开发时,就必须为其添加一层漂亮的外衣,这层漂亮的外衣就是图形化用户界面(Graphical User Interface,简称GUI,又称图形用户接口),也就是使用者只需要具体基本的计算机知识,然后通过鼠标,就可以实现某些复杂的功能!其实,我们现在所使用的Windows操作系统就是典型的GUI! 1. mysql_connect 功能:建立到MySQL服务器的连接 语法:[$变量名称=]mysql_connect(“服务器名称:端口”,”用户名”,”密码”); 如果正确的连接到了MySQL服务器,则返回值的数据类型为资源(resource),否则将返回布尔型false 2. mysql_select_db 功能:打开指定数据库 语法:[$变量名称=]mysql_select_db(“数据库名称”[,连接标识符]); 如果省略连接标识符,则默认情况下使用刚刚打开的服务器连接 3. mysql_query 功能:执行MySQL命令 语法:[$变量名称=]mysql_query(“SQL命令”[,连接标识符]); 如果省略连接标识符

mysql、sql server、oracle数据库分页查询及分析(操作手册)

南笙酒味 提交于 2020-03-20 06:51:49
1、mysql分页查询 方式1: select * from table order by id limit m, n;   该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录。无疑该查询能够实现分页功能,但是如果 m的值越大,查询的性能会越低 (越后面的页数,查询性能越低),因为MySQL同样需要扫描过m+n条记录。 方式2: select * from table where id > #max_id# order by id limit n;   该查询每次会返回n条记录,却无需像方式1扫描过m条记录,在大数据量的分页情况下,性能可以明显好于方式1,但该分页查询必须要每次查询时拿到上一次查 询(上一页)的一个最大id(或最小id)。该查询的问题就在于,我们有时没有办法拿到上一次查询(上一页)的最大id(或最小id),比如当前在第3 页,需要查询第5页的数据,该查询方法便爱莫能助了。 方式3:   为了避免能够实现方式2不能实现的查询,就同样需要使用到limit m, n子句,为了性能,就需要将m的值尽力的小,比如当前在第3页,需要查询第5页,每页10条数据,当前第3页的最大id为#max_id#: select * from table where id > #max_id# order by id limit 20, 10;  

【mysql必知必会】第十二章 汇总数据

佐手、 提交于 2020-03-19 09:16:10
1、聚集函数(aggregate function):运行在行组上,计算和返回单个值得函数。   AVG()  返回某列的平均值   COUNT()  返回某列的行数   MAX()  返回某列的最大值   MIN()  返回某列的最小值   SUM()  返回某列值之和 2、AVG()函数   输入:   SELECT AVG(prod_price) AS avg_price   FROM products;   输出:   avg_price   16.133   分析:从products表取出prod_price列求出平均值,为新列命名为avg_price.      注:AVG()可以确定特定列特定行的平均值   输入:   SELECT AVG(prod_price) AS avg_price   FROM products;   WHERE vend_id = 1003;   输出:   avg_price   13.21   分析:从products表,取出prod_price列中vend_id = 1003的行,求出平均值,为新列命名为avg_price.   注:   1、AVG()只能用于单个列,要求多个列的平均值要用多个AVG()函数?   2、AVG()函数忽略值为null的行。 3、COUNT()函数   COUNT(

MySQL笔记

淺唱寂寞╮ 提交于 2020-03-19 08:04:55
1、查询条件分类 查询总结SELECT 查询列表 7FROM 表1 别名 1连接类型 JOIN 表2 别名 2ON 连接条件 3WHERE 分组前筛选条件 4GROUP BY 分组列表 5 HAVING 分组后筛选条件 6ORDER BY 排序列表 8LIMIT 起始条目,条目数 9 SELECT 查询列表 FROM 表名 WHERE 筛选条件 条件分类 1、<,>, =, !=, <>, <=, >= 2、逻辑运算符 && || ! AND OR NOT WHERE Id > 5 AND Id < 7 等价于 WHERE NOT (Id >=5 AND Id <=7) 3、模糊查询 LIKE 通配符 %任意个字符包含0个字符 _ 任意单个字符 /* LIKE '_$_%' ESCAPE '$' 意思是用$符号当做转义字符使用 '_\_%' ESCAPE '\'; 以一个字符开头,第二个字符是下划线的*/ BETWEEN 小值 AND 大值 IN (opt1,opt2) IS NULL 字段 IS NOT NULL 安全等于<=>NULL 和数值 LENGTH('john') =4 ORDER BY ID ASC, salary DESC; 先按ID升序,再按salary降序 2、sql函数 函数 1、单行函数 CONCAT(),LENGTH(),IFNULL(exp1,exp2)

mysql常用的分组函数

╄→гoц情女王★ 提交于 2020-03-19 06:14:24
/* 功能:用作统计使用,又称为聚合函数或统计函数或组函数 分类: sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数 特点: 1、sum、avg一般用于处理数值型 max、min、count可以处理任何类型 2、以上分组函数都忽略null值 3、可以和distinct搭配实现去重的运算 4、count函数的单独介绍 一般使用count(*)用作统计行数 5、和分组函数一同查询的字段要求是group by后的字段 */ 举例: #1、简单 的使用 SELECT SUM(salary) FROM employees; SELECT AVG(salary) FROM employees; SELECT MIN(salary) FROM employees; SELECT MAX(salary) FROM employees; SELECT COUNT(salary) FROM employees; SELECT SUM(salary) 和,AVG(salary) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数 FROM employees; SELECT SUM(salary) 和,ROUND(AVG(salary),2) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT

MySQL基础笔记(三) 复杂查询

橙三吉。 提交于 2020-03-19 05:54:18
所谓复杂查询,指涉及多个表、具有嵌套等复杂结构的查询。这里简要介绍典型的几种复杂查询格式。 一、连接查询 连接 是区别关系与非关系系统的最重要的标志。通过连接运算符可以实现多个表查询。连接查询主要包括内连接、外连接等。 假设有 Student 和 Grade 两个表如下: +-----+--------+-------+ +-----+------------+--------+ | sID | sName | sDept | | gID | gCourse | gScore | +-----+--------+-------+ +-----+------------+--------+ | 1 | Paul | CS | | 1 | Math | 87 | | 2 | Oliver | MS | | 2 | English | 95 | | 3 | Jack | SE | | 3 | Physics | 76 | | 4 | Robin | CS | | 7 | Philosophy | 76 | +-----+--------+-------+ +-----+------------+--------+ 1.1 内连接 内连接(INNER JOIN) 使用比较运算符进行表间列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录。 当比较操作符是 = 时

mysql组合查询

狂风中的少年 提交于 2020-03-19 03:21:04
使用UNION 多数 SQL 查询都只包含一个或多个表中返回数据的单条 SELECT 语句。 MySQL 也允许执行多个查询(多条 SELECT 语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并( union ) 有两种情况需要使用组合查询: 在单个表查询中从不同的表返回类似结构的数据; 对单个表执行多个查询,按单个查询返回数据。 组合查询和多个 WHERE 条件:多数情况下,组合相同表的两个查询完成的工作与具有多个WHERE子句条件的单条查询完成的工作相同。 可用 UNION 操作符来组合数条 SQL 查询,所需要做的就是给出每条 SELECT 语句,在各条语句之间放上关键字 UNION 例如: ​ 假设需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品,当然可以利用 WHERE 子句来完成,不过这里我们使用 UNION 这里是两条语句的组合 SELECT vend_id, prod_id, prod_price FROM products WHERE prod_price <= 5; SELECT vend_id, prod_id, prod_price FROM products WHERE vend_id IN (1001, 1002); 可以使用下面的语句 SELECT vend_id, prod_id, prod