mysql函数

mysql初始化与清理

那年仲夏 提交于 2019-12-15 23:54:48
Mysql提供给C++以下常见的接口来实现上下文类 MYSQL的创建和清理 MYSQL *mysql_init(MYSQL *mysql) int mysql library_init(int argc, char **argv, char **groups) void mysql_library_end(void) mysql_close(MYSQL *m) mysql_init 是一个线程不安全的,也就是说在多线程调用的时候可能会直接down掉 在多线程情况下,统一函数入口处执行一次 mysql library_init ,再进行各个线程用 mysql_init() 初始化每个mysql的连接。整个过程完成之后,执行 mysql_close 关闭。结束的时候执行 mysql_library_end 。 线程安全是指在多线程调用的时候不会直接down掉,但是具体数据处理还是可能会出问题。 三种使用使用方式 第一种调用方式 //初始化mysql上下文 //单线程下自动调用mysql_init,线程不安全 mysql_library_init ( 0 , 0 , 0 ) ; //这里的三个参数可以任意传,默认就0,0,0,只是为了兼容性 for ( ; ; ) { MYSQL * mysql = mysql_init ( 0 ) ; mysql_close ( mysql ) ; }

MySQL truncate()函数的使用说明

醉酒当歌 提交于 2019-12-15 21:14:26
1、TRUNCATE()函数介绍 TRUNCATE(X,D) 是MySQL自带的一个系统函数。 其中,X是数值,D是保留小数的位数。 其作用就是按照小数位数,进行数值截取(此处的截取是按保留位数直接进行截取,没有四舍五入)。 2、数值保留规则 规则如下: 1)当 D 大于0,是对数值 X 的小数位数进行操作; 2)当 D 等于0,是将数值 X 的小数部分去除,只保留整数部分; 3)当 D 小于0,是将数值 X 的小数部分去除,并将整数部分按照 D 指定位数,用 0 替换。 3、函数示例 示例如下: 1)当 X 为正数时: SELECT TRUNCATE(123.4567, 3); # 123.456 SELECT TRUNCATE(123.4567, 2); # 123.45 SELECT TRUNCATE(123.4567, 1); # 123.4 SELECT TRUNCATE(123.4567, 0); # 123 SELECT TRUNCATE(123.4567, -1); # 120 SELECT TRUNCATE(123.4567, -2); # 100 SELECT TRUNCATE(123.4567, -3); # 0 2)当 X 为负数时: SELECT TRUNCATE(-123.4567, 3); # -123.456 SELECT TRUNCATE(-123

mysql主从复制原理及实践

时光毁灭记忆、已成空白 提交于 2019-12-15 14:33:34
Mysql主从复制原理及实践 系统小说网 wap.kuwx.net mysql主从框架 MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从。可以防止单一主机的数据丢失,提高数据的安全性,务上可以实现读写分离,可以把一些读操作在从服务器上执行,减小主服务器的负担。 主从复制原理 mysql主从复制是指数据可以从一个mysql服务器节点复制到一台或者多台mysql服务器上,多个从服务器采用异步的方式更新主数据库的变化。MySQL主从同步是基于从库对主库binlog文件的增量订阅来实现,更新的事件类型写入到主库的binlog文件中,日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句,以“事件”的形式保存,它描述数据更改,它是以二进制的形式保存在磁盘中。以.000001的方式结尾,binlog文件大小和数字会不断增加,当mysql重启时,数字会不断递增。 主从复制的原理图: 对于每一个主从连接,都需要三个进程来完成,master(binlog dump thread)、slave(I/O thread 、SQL thread)。 主节点会为每一个当前连接的从节点建一个binary log dump 进程 从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin

mysql_fetch_array()/ mysql_fetch_assoc()/ mysql_fetch_row()/ mysql_num_rows等…期望参数1为资源或结果

房东的猫 提交于 2019-12-15 12:30:27
我正在尝试从 MySQL 表中选择数据,但收到以下错误消息之一: mysql_fetch_array()期望参数1为资源,给定布尔值 要么 mysqli_fetch_array()期望参数1为mysqli_result,给定布尔值 要么 在布尔值/非对象上调用成员函数fetch_array() 这是我的代码: $username = $_POST['username']; $password = $_POST['password']; $result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username'); while($row = mysql_fetch_array($result)) { echo $row['FirstName']; } 同样适用于类似 $result = mysqli_query($mysqli, 'SELECT ...'); // mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given while( $row=mysqli_fetch_array($result) ) { ... 和 $result = $mysqli->query($mysqli, 'SELECT ...'); //

mysql基础架构

自闭症网瘾萝莉.ら 提交于 2019-12-15 09:40:27
基础架构 平时我们使用数据库,看到的通常都是一个整体, 例如下面: mysql> select * from t where id=1; 我们看到的只是输入一条语句,返回一个结果,那么这条语句在MySQL内部的执行过程是如何的呢? 下面是 mysql 的经典架构图 大致可以分为4层: 连接层 最上层是一些客户端和连接服务,包含本地socket和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信,主要完成一些类似连接处理,授权认证,及相关的安全方案,在该层引入线程池的概念,为通过认证安全接入的客户端提供线程,同样在该层上可以实现基于SSL的安全链接,服务器也会为安全接入的每个客户端验证它所具备的操作权限。 服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存查询,SQL的分析和优化及部分内置函数的执行,所有跨存储引擎的功能也在这一层实现,如过程,函数等,在该层,服务层会解析查询并创建相应的内部解析树,并对其完成响应的优化确认查询表的顺序,是否利用索引等,最后生成相应的执行操作,如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大,这样就解决大量读操作的环境中能够很好的提供系统性能。 存储引擎层 存储引擎层,存储引擎真正负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有的功能不同

MYSQL查看存储过程函数

不羁岁月 提交于 2019-12-15 08:39:49
查询数据库中的存储过程和函数 select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存储过程 select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函数 show procedure status; //存储过程 show function status; //函数 查看存储过程或函数的创建代码   show create procedure proc_name;   show create function func_name; 查看视图   SELECT * from information_schema.VIEWS //视图   SELECT * from information_schema.TABLES //表 查看触发器   SHOW TRIGGERS [FROM db_name] [LIKE expr]   SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G 来源: CSDN 作者: 运维自动化&云计算 链接: https://blog.csdn.net/h106140873/article/details

MySQL之分组统计

笑着哭i 提交于 2019-12-15 06:35:56
分组统计 1.语法 : select 查询内容 from 表名 [where 条件] [group by 分组字段名1,分组字段名2…] [order by 字段名 asc|desc] [limit] 2.使用举例 a.求每个部门的人数 select deptno,count(*) from emp group by deptno; b.求每个部门的平均工资 select deptno,avg(sal) from emp group by deptno; c.求每个部门中最高工资和人数 select deptno,max(sal),count(*) from emp group by deptno; d.求每个岗位的人数 select job,count(*) from emp group by job e.显示每个部门不同岗位的人数 select deptno,job,count(*) from emp group by deptno,job 3.注意 a.查询字段,如果没有在多行函数中包含,则必须是分组字段 select ename,job,sum(sal) from emp group by job; b.如果没有group by ,查询字段不能与多行函数一起查询 select sal,empno from emp; 合法 select sum(sal),empno from

MySQL优化20条经验(二)

强颜欢笑 提交于 2019-12-14 11:57:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 11.尽可能使用NOT NULL 除非必要,否则尽可能保持字段NIOT NULL; NULL需要额外的空间,并且在比较的时候程序会更复杂。 12.使用Prepared Statements Prepared Statements很想存储过程,是一个中运行在后台的SQL语句集合。 好处:在安全性方面,他可以检查一下你绑定好的变量,这样可以保护程序不受到"SQL注入式"攻击(程序员很容易忘记去手动检查);在性能方面,当使用一个相同的查询的时候,你可以给Prepared Statements定义一些参数,而MSQL只会解析一次;另外,最新版本的MySQL在传输Prepared Statements是使用二进制形式,效率非常高。 例: //创建prepared statement if ($stmt = $mysqli ->prepare("SELECT username FROM user WHERE state=?")){ $stmt ->bind_param("s",$state); //绑定参数 $stmt ->execute(); //执行 $stmt ->bind_result($username); //绑定结果 $stmt ->fetch(); //移动游标 printf("$s is from %s

mysql主从复制原理及实践

北城余情 提交于 2019-12-14 10:58:56
Mysql主从复制原理及实践 mysql主从框架 MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从。可以防止单一主机的数据丢失,提高数据的安全性,务上可以实现读写分离,可以把一些读操作在从服务器上执行,减小主服务器的负担。 主从复制原理 mysql主从复制是指数据可以从一个mysql服务器节点复制到一台或者多台mysql服务器上,多个从服务器采用异步的方式更新主数据库的变化。MySQL主从同步是基于从库对主库binlog文件的增量订阅来实现,更新的事件类型写入到主库的binlog文件中,日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句,以“事件”的形式保存,它描述数据更改,它是以二进制的形式保存在磁盘中。以.000001的方式结尾,binlog文件大小和数字会不断增加,当mysql重启时,数字会不断递增。 主从复制的原理图: 对于每一个主从连接,都需要三个进程来完成,master(binlog dump thread)、slave(I/O thread 、SQL thread)。 主节点会为每一个当前连接的从节点建一个binary log dump 进程 从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I

MySQL case when then else end用法

孤街醉人 提交于 2019-12-14 07:27:38
case具有两种格式,简单case函数和case搜索函数。 1.简单case函数 case sex when '1' then '男' when '2' then '女' else '其他' end 2.case搜索函数 case when sex = '1' then '男' when sex = '2' then '女' else '其他' end 两种比较:简单case函数更简洁,case搜索函数适用性更广,有些复杂的 来源: CSDN 作者: 李小智_数据分析 链接: https://blog.csdn.net/zhide2011bgs3/article/details/103495838