mysql函数

MySql-Binlog协议

守給你的承諾、 提交于 2020-01-02 00:28:34
MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看) MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据 canal 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流) MySql-Binlog协议详解-流程篇 MySql-Binlog在MySql主从不同方面发挥着不可或缺的作用,同时我们也能通过Binlog实时监控数据的变化。本系列就讲述了怎样接收并解析Binlog。本篇就主要对接收binlog的流程做了一下探讨。 Binlog发送接收流程,流程如下图所示: (1)第一步和上篇blog一样,通过HandShake协议进行Client和DB的握手认证 (2)握手成功以后

mysql c api

非 Y 不嫁゛ 提交于 2020-01-01 14:32:41
这里归纳了C API可使用的函数,并在下一节详细介绍了它们。 函数 描述 mysql_affected_rows() 返 回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。 mysql_autocommit() 切换 autocommit模式,ON/OFF mysql_change_user() 更改打开连接上的用户和数据库。 mysql_charset_name() 返 回用于连接的默认字符集的名称。 mysql_close() 关闭服务器连接。 mysql_commit() 提 交事务。 mysql_connect() 连接到MySQL服务器。该函数已不再被重视,使用 mysql_real_connect()取代。 mysql_create_db() 创建数据库。该函数已不再被重视,使用 SQL语句CREATE DATABASE取而代之。 mysql_data_seek() 在查询结果集中查找属性行编号。 mysql_debug() 用 给定的字符串执行DBUG_PUSH。 mysql_drop_db() 撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。 mysql_dump_debug_info() 让服务器将调试信息写入日志。 mysql_eof() 确 定是否读取了结果集的最后一行。该函数已不再被重视

mysql C api

陌路散爱 提交于 2020-01-01 14:32:20
1. 初始化一个链接结构。 2. 创建一个链接。 3. 执行查询。 4. 关闭链接。 MYSQL* conn; 首先,声明一个conn指针指向一个MYSQL结构体,这个结构体就是一个数据库连接句柄。 conn = mysql_init(NULL); 函数mysql_init将返回一个链接句柄。 if (conn == NULL) { printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); exit(1); } 函数mysql_real_connect建立一个到mysql数据库的链接。调用这个函数要提供 链接句柄、主机名、用户、密码等参数,最后四个参数依次是数据库名、端口、unix套接字和客户端标志。 mysql_query() 不能传二进制BLOB字段,因为二进制信息中的\0会被误判为语句结束。 mysql_real_query() 则可以。 另外 mysql_real_query() 会比mysql_query() 略快一点儿。因为它不去检查你的SQL语句长度是多少。 MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) 检索一个结果集合的下一行。当在mysql_store_result()之后使用时,如果没有更多的行可检索时,mysql_fetch_row()返回NULL

mysql c api

余生长醉 提交于 2020-01-01 14:32:03
这里归纳了C API可使用的函数,并在下一节详细介绍了它们。 函数 描述 mysql_affected_rows() 返 回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。 mysql_autocommit() 切换 autocommit模式,ON/OFF mysql_change_user() 更改打开连接上的用户和数据库。 mysql_charset_name() 返 回用于连接的默认字符集的名称。 mysql_close() 关闭服务器连接。 mysql_commit() 提 交事务。 mysql_connect() 连接到MySQL服务器。该函数已不再被重视,使用 mysql_real_connect()取代。 mysql_create_db() 创建数据库。该函数已不再被重视,使用 SQL语句CREATE DATABASE取而代之。 mysql_data_seek() 在查询结果集中查找属性行编号。 mysql_debug() 用 给定的字符串执行DBUG_PUSH。 mysql_drop_db() 撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。 mysql_dump_debug_info() 让服务器将调试信息写入日志。 mysql_eof() 确 定是否读取了结果集的最后一行。该函数已不再被重视

MySQL中rank函数如何实现

馋奶兔 提交于 2020-01-01 06:38:36
MySQL中不存在类似于SQL Server或Orcal中的rank()函数来得到排名。而在实际的工作中,常常需要将查询后排序得到的排名给记录下来。由于项目需要,不仅要对成绩进行排名,而且需要相同成绩的具有相同的排名。根据网上的提供的排名方法,进一步进行扩充,得到了下面的实现方式。 表:score,有三个字段,id,name,score 表中原始数据: SQL代码: select tmp.id,tmp.name,tmp.score, -- 顺序一直在变大 @j:=@j+1 as j, -- 只有在前后二次排序值不同时才会使用顺序号 @k:=(case when @pre_score=tmp.score then @k else @j end) as rank, @pre_score:=tmp.score as pre_score from ( -- 成绩排序 select * from score order by score desc ) tmp, -- @k 表示最终的排名(相同值时序号相同) -- @j 表示顺序排名 -- @pre_score上一次排序值 (select @k :=0,@j:=0, @pre_score:=0) sdcore 排序后的结果: 来源: https://www.cnblogs.com/bjwylpx/p/5345162.html

mysql字符串函数

淺唱寂寞╮ 提交于 2020-01-01 05:32:05
原文来自:http://www.cnblogs.com/zdz8207/p/3765073.html MySQL 字符串截取函数:ORD(),cast(),left(), right(), substring(), substring_index(), mid(), substr()。其中,mid(), substr() 等价于substring() 函数,substring() 的功能非常强大和灵活。 ORD:用于返回字符串第一个字符的ASCII码。 CAST(12,AS CHAR): 将12转换成char类型。 IFNULL(exp1,exp2):如果exp1不为null时返回exp1,位null时返回exp2。 1. 字符串截取:left(str, length) mysql> select left('example.com', 3); +-------------------------+ | left('example.com', 3) | +-------------------------+ | exa | +-------------------------+ 2. 字符串截取:right(str, length) mysql> select right('example.com', 3); +--------------------------+ | right

64位 windows10,安装配置MYSQL8.0.13

戏子无情 提交于 2020-01-01 03:00:41
MySQL的安装配置过程,一查网上一大堆,但是每个人在安装配置的过程中都会碰到一些问题,因为安装的版本不一样,有些命令可能就不适用了。所以安装之前一定先确认好你的版本号。 下面开始安装MYSQL8.0.13。 第一步: 先去官网下载安装包:官网下载地址: https://dev.mysql.com/downloads/mysql/ 这是我下载的windows(x86 64位)的MySQL8.0.13的zip包。下载完毕以后,解压到你想要安装的位置,我放到了这个位置:D:\MyPrograms\mysql-8.0.13-winx64 第二步 ,配置MYSQL环境变量,设置mysql命令全局使用。 如下图1的路径,打开【系统】,点击2【高级系统设置】,打开系统属性,选择3【环境变量】弹出窗口,选择系统变量中的4【新建】,弹窗,变量名为:MYSQL_HOME,路径是刚刚解压的路径,确定以后如图中5。 在系统变量中找到path,点击【编辑】添加%MYSQL_HOME%\bin\ 如下图 确定以后,mysql的命令就设置为全局的了,在任何地方都可以使用mysql的命令 第三步: 生成存放数据库的文件夹data 以管理员身份运行cmd,在任意路径下执行命令:mysqld --initialize-insecure --user=mysql 都会在我们解压的路径下产生data文件夹。

补充: canal

夙愿已清 提交于 2020-01-01 01:46:28
1. 作用: 同步mysql;做拉链表;更新redis 某些情况无法从日志中获取信息,而又无法利用sqoop等ETL工具对数据实时的监控 2. canal的工作原理: canal的工作原理很简单,就是把自己伪装成slave,假装从master复制数据。 3. mysql的binlog   MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的 DDL 和 DML (除了数据查询语句)语句,以 事件形式记录 ,还包含 语句所执行的消耗的时间 , MySQL的二进制日志是事务安全型的。 一般来说开启二进制日志大概会有1%的性能损耗 。二进制有两个最重要的使用场景:   其一: MySQL Replication 在 Master 端开启 binlog , Master把它的二进制日志传递给slaves来达到master-slave数据一致的目的 。   其二:自然就是数据恢复了,通过使用 mysqlbinlog 工具来使恢复数据。 二进制日志包括两类文件: 二进制日志索引文件 (文件名后缀为 .index )用于记录所有的二进制文件, 二进制日志文件(文件名后缀为.00000*) 记录数据库所有的DDL和DML(除了数据查询语句)语句事件。 4. 分类 mysql binlog的格式,是有三种,分别是 STATEMENT , MIXED , ROW

Mysql主从同步

心不动则不痛 提交于 2020-01-01 00:53:49
数据文件 /var/lib/mysql/ 配置文件 /etc/my.conf 日志文件 /var/log/mysql.log 【主库】 停止 mysql 服务 service mysqld stop 编辑配置文件 vim /etc/my.conf [mysqld] ## 定义 binlog 的前缀 log_bin=mysql-bin ## 定义 binlog 的模式 bin_log_format=row ## 定义唯一值 server-id=130 启动 mysql 服务 service mysqld start 这时可以在 /var/lib/mysql 目录看到以 mysql-bin 开头的文件 【从库】 [mysqld] server-id=60 relay-log=slave-relay-bin relay-log-index=slave-relay-bin.index read_only=1 执行同步 mysql> stop slave; Mysql > change master to master_host='192.168.101.130', master_port=3306 , master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos

mysql json 使用 类型 查询 函数

为君一笑 提交于 2020-01-01 00:10:23
一,对记录的操作 1.创建有json字段的表 -- 创建表 CREATE TABLE t_json(id INT PRIMARY KEY, sname VARCHAR(20) , info JSON); 2.插入记录 -- 插入含有json数组的记录 INSERT INTO t_json(id,sname,info) VALUES( 1, 'name1', JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME())); -- 插入含有json对象的记录 INSERT INTO t_json(id,sname,info) VALUES( 2, 'name2', JSON_OBJECT("age", 20, "time", now())); INSERT INTO t_json(id,sname,info) VALUES( 3, 'name3', '{"age":20, "time":"2018-07-14 10:52:00"}'); 3.查询记录 -- 查询记录 SELECT sname,JSON_EXTRACT(info,'$.age') FROM t_json; SELECT sname,info->'$.age' FROM t_json; -- 查询key SELECT id,json_keys(info) FROM t_json; 4.修改记录 -