mysql自定义函数

MySQL运行机制原理&架构

谁说胖子不能爱 提交于 2019-12-01 16:48:42
1.MySQL知识普及: MySQL是一个开放源代码的关系数据库管理系统。 MySQL架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。 2.MySQL逻辑架构: 1).Connectors MySQL首先是一个网络程序,其在TCP之上定义了自己的 应用层协议 。所以要使用MySQL,我们可以编写代码,跟MySQL Server建立TCP连接,之后按照其定义好的协议进行交互。当然这样比较麻烦,比较方便的办法是调用SDK,比如Native C API、JDBC、PHP等各语言MySQL Connector,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQL进行交互。 2).Connection Management 每一个基于TCP的网络服务都需要管理客户端链接,MySQL也不例外。MySQL会为每一个连接绑定一个线程,之后这个连接上的所有查询都在这个线程中执行。为了避免频繁创建和销毁线程带来开销,MySQL通常会缓存线程或者使用线程池,从而避免频繁的创建和销毁线程。 客户端连接到MySQL后,在使用MySQL的功能之前,需要进行认证,认证基于用户名、主机名、密码。如果用了SSL或者TLS的方式进行连接,还会进行证书认证。 3).SQL

C++操作Mysql数据库/Linux下

廉价感情. 提交于 2019-12-01 16:26:00
本文链接:https://blog.csdn.net/Tanswer_/article/details/72796570 想用C++写项目,数据库是必须的,所以这两天学了一下C++操作Mysql数据库的方法。也没有什么教程,就是在网上搜的知识,下面汇总一下。 连接MySQL数据库有两种方法:第一种是使用ADO连接,不过这种只适合Windows平台;第二种是使用MySQL自己的C API函数连接数据库。我是在Linux平台下开发,所以就采用第二种方法,有很多Api函数,但是常用的就几个,我也是就用到其中的几个。 API函数 1.mysql_real_connect() 连接一个mysql服务器 MYSQL *mysql_real_connect (MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) 如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同 2.mysql_query() 执行指定”以NULL终结的字符串”的SQL查询 返回一个结果表,假定查询成功,可以调用

mysql 自定义函数

梦想的初衷 提交于 2019-12-01 12:19:09
#获取job的时间详情DROP FUNCTION IF EXISTS `get_job_actual_work_time`;DELIMITER $$CREATE FUNCTION `get_job_actual_work_time`( in_job_id char(50), in_action char(50)) RETURNS INT(10)BEGIN DECLARE out_times INT(10) DEFAULT 0; DECLARE in_job_id_2 char(50); DECLARE in_action_2 char(50); SET in_job_id_2 = CONCAT('"', in_job_id, '"'); SET in_action_2 = CONCAT('"', in_action, '"'); SELECT sum((case when end_time > 0 then end_time else unix_timestamp(now()) end) - start_time) AS job_times INTO out_times FROM t_worker_timeline WHERE job_id COLLATE=utf8mb4_unicode_ci=in_job_id_2 AND action COLLATE=utf8mb4

PostgreSQL 与 MySQL 相比,优势何在?

我只是一个虾纸丫 提交于 2019-12-01 08:46:17
一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。 二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。 三、 PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。 四、PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。 五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。 六、 PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法

Mysql高手系列,连载中

核能气质少年 提交于 2019-12-01 07:23:49
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。 第1篇:mysql基础知识 第2篇:详解mysql数据类型(重点) 第3篇:管理员必备技能(必须掌握) 第4篇:DDL常见操作 第5篇:DML操作汇总(insert,update,delete) 第6篇:select查询基础篇 第7篇:玩转select条件查询,避免采坑 第8篇:详解排序和分页(order by & limit) 第9篇:分组查询详解(group by & having) 第10篇:常用的几十个函数详解 第11篇:深入了解连接查询及原理 第12篇:子查询 第13篇:细说NULL导致的神坑,让人防不胜防 第14篇:详解事务 第15篇:详解视图 第16篇:变量详解 第17篇:存储过程&自定义函数详解 第18篇:流程控制语句 第19篇:游标详解 第20篇:异常捕获及处理详解 第21篇:什么是索引? 第22篇:mysql索引原理详解 mysql系列大概有20多篇,喜欢的请关注一下,欢迎大家加我微信itsoku或者留言交流mysql相关技术! 来源: https://www.cnblogs.com/itsoku123/p/11668427.html

6-5 函数

巧了我就是萌 提交于 2019-12-01 06:55:35
一 函数 MySQL中提供了许多内置函数,例如: 一、数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。 二、聚合函数(常用于GROUP BY从句的SELECT查询中) AVG(col)返回指定列的平均值 COUNT(col)返回指定列中非NULL值的个数 MIN(col)返回指定列的最小值 MAX(col)返回指定列的最大值 SUM(col)返回指定列的所有值之和 GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果 三、字符串函数 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。 CONCAT(str1,str2,...) 字符串拼接 如有任何一个参数为NULL ,则返回值为 NULL。 CONCAT_WS(separator,str1,str2,...) 字符串拼接(自定义连接符) CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。 CONV(N,from_base,to_base) 进制转换 例如: SELECT CONV('a',16,2); 表示将 a 由16进制转换为2进制字符串表示 FORMAT(X,D) 将数字X 的格式写为'

数据库中的视图

删除回忆录丶 提交于 2019-12-01 06:14:31
视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。 SELECT * FROM ( SELECT nid, NAME FROM tb1 WHERE nid > 2 ) AS A WHERE A. NAME > 'alex'; 临时表搜索 1、创建视图 --格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS SELET nid, name FROM A WHERE nid > 4 View Code 2、删除视图 --格式:DROP VIEW 视图名称 DROP VIEW v1 View Code 3、修改视图 -- 格式:ALTER VIEW 视图名称 AS SQL语句 ALTER VIEW v1 AS SELET A.nid, B. NAME FROM A LEFT JOIN B ON A.id = B.nid LEFT JOIN C ON A.id = C.nid WHERE A.id > 2 AND C.nid < 5 View Code 4、使用视图 使用视图时,将其当作表进行操作即可,由于视图是虚拟表,所以无法使用其对真实表进行创建、更新和删除操作,仅能做查询用。 select * from v1 View Code

MySQL数据库学习

百般思念 提交于 2019-12-01 04:47:22
虽然笔者从事的是Android客户端的开发,平时和数据库打的交道并不多,但是我们对于数据库这一块的学习还是很重要的,今天笔者想总结下MySQL关系型数据库的一些常用知识点 数据库概述 一、常见的概念 数据库(DataBase):数据库是按照数据结构来组织、存储和管理数据的仓库。数据库管理系统(Database Management SystemDBMS):是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。 二、发展历程 我们一般说的数据库,就是指的DBMS: 数据库服务器。数据库技术发展历程如下: 层次数据库和网状数据库技术阶段:使用指针来表示数据之间的联系。 关系数据库技术阶段:经典的里程碑阶段。代表DBMS有Oracle、DB2、MySQL、SQL Server等。 后关系数据库技术阶段:关系型数据库存在数据模型,性能,拓展伸缩性的缺点,出现了: ORDBMS:面向对象数据库技术。 NoSQL :结构化数据库技术。 随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速,产生了一系列出色的NoSQL数据库。 常见的NoSQL数据库分为四大类 键值存储数据库:Oracle BDB,Redis,BeansDB 列式储数数据库

mysql 技术总结

余生颓废 提交于 2019-12-01 04:09:02
linux 系统 安装mysql 5.7推荐文章 http://www.cnblogs.com/gaojupeng/p/5727069.html 以前自己的保存的技术文档,都在自己的硬盘上,后来硬盘出错4年积累的功能技术文档,项目代码全部都不存在了,于是思前想后决定,以后将自己的技术都分享出来,这样既可以帮助别人又可以永久保存,双赢。因为我用到的mysql技术会不断的深入,本文档会持续的更新。 一、Linux 下的使用: 查询mysql的安装情况:rpm -qa|grep -i Mysql 只显示mysql的安装程序,不加i有其他的 1、安装服务 MySQL-server-5.6.23-1.linux_glibc2.5.x86_64.rpm 2、安装客户端 MySQL-client-5.6.23-1.linux_glibc2.5.x86_64.rpm 3、刚安装没有密码 提示 You must SET PASSWORD before executing this statement mysql>SET PASSWORD = PASSWORD('123456'); 绿色版:window下的。设置path后   mysql -u root    mysql> use mysql;    mysql> UPDATE user SET Password = PASSWORD(

MySQL Explain详解

拟墨画扇 提交于 2019-11-30 13:20:09
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。 -- 实际SQL,查找用户名为Jefabc的员工 select * from emp where name = 'Jefabc'; -- 查看SQL是否使用索引,前面加上explain即可 explain select * from emp where name = 'Jefabc'; expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra 概要描述: id:选择标识符 select_type:表示查询的类型。 table:输出结果集的表 partitions:匹配的分区 type:表示表的连接类型 possible_keys:表示查询时,可能使用的索引 key:表示实际使用的索引 key_len:索引字段的长度 ref:列与索引的比较 rows