MySQL
SilentAssassin
If you wish for peace, prepare for war
展开
-
MyISAM 和 InnoDB 的区别
对比项 MyISAM InnoDB 主外键 不支持 支持 事务 不支持 支持 锁 表锁,操作一条记录也会锁住整个表,不适合高并发 行锁,操作只锁一行,不影响其他行,适合高并发 缓存 只缓存索引,不缓存数据 缓存索引和数据,对内存要求高 表空间 小 大 关注点 性能 事务关键...原创 2018-07-19 22:28:02 · 181 阅读 · 0 评论 -
MySQL触发器
按照《MySQL必知必会》的例子创建触发器,结果报错 因为在触发器中允许调用存储过程、执行INSERT,UPDATE,DELETE等操作,但却唯独不允许返回任何结果,仔细一查,原来是版本变更导致的问题。创建成功的代码(先定义用户变了@a): 或者是这样的形式:CREATE TRIGGER my AFTER INSERT ON products FOR EACH ROW sele...原创 2018-07-16 09:27:52 · 116 阅读 · 0 评论 -
MySQL中的循环
loop循环从这个问题发现了国内的资料真是抄来抄去,网上总是那几篇,连最重要的东西都没讲到。查了stackoverflow才发现loop只能在存储过程、函数中使用:MySQL supports the IF, CASE, ITERATE, LEAVE LOOP, WHILE, and REPEAT constructs for flow control within stored progra...原创 2018-07-16 09:27:15 · 3428 阅读 · 0 评论 -
MySQL中的事件
MySQL中的事件(event)是用于执行定时或周期性的任务,类似Linux中的crontab,但是后者只能精确到分钟,事件可以精确到秒。既然MySQL自身能实现定时性任务,那么就不必在应用层实现了。事件由一个特定的线程来管理的,也就是所谓的事件调度器,但是事件不能直接调用。MySQL中调度器event_scheduler负责调用事件,也就是由全局变量event_scheduler的状态决定,...原创 2018-07-16 09:26:54 · 3530 阅读 · 0 评论 -
MySQL中的函数
UNIX_TIMESTAMP无参数调用:UNIX_TIMESTAMP() 返回值:自’1970-01-01 00:00:00’的到当前时间的秒数差SELECT UNIX_TIMESTAMP():1531275108有参数调用:UNIX_TIMESTAMP(date)其中date可以是一个DATE字符串,一个DATETIME字符串,一个TIMESTAMP或者一个当地时间的...原创 2018-07-16 09:26:16 · 421 阅读 · 0 评论 -
MySQL的C/C++的API接口
项目操作MySQL用的是现有的接口,是将MySQL语句封装在动态库里的,今天看了看最底层的情况,才发现操作MySQL不是用Qt,而是它自带的C++ API,之前没直接用过原生API,今天记录一下。代码连接数据库用的函数是MyConnection::connect_in(),用到的函数是mysql_init, mysql_real_connect, mysql_close, mysql_sele...原创 2018-07-16 09:25:46 · 5699 阅读 · 2 评论 -
MySQL难点汇总(基于《MySQL必知必会》
根据《MySQL必知必会》几个表进行操作 注意MySQL Workbench 自动生成的关系图可能有错误,几个表的列关系不对。 有表orderitems如下图: 现在要求根据order_num进行分组,每组列出对应的prod_id,用逗号分开,如下图 这个问题需要用到分组聚合函数group_concat(X,Y),X是每组对应的条目,如果没有Y,那么每项按逗号分开。Y可...原创 2018-07-16 09:25:09 · 1331 阅读 · 0 评论 -
解决MySQL多行模式问题和分隔符问题
在执行多行命令编辑的时候,难免会有各种失误,经常不知道如何解决,其实了解一下MySql命令行的一些参数和提示的信息就能解决。比如下图的错误,按Ctrl+C也未能退出: 需要了解一下多行命令行下,MySQL会给出的各种提示符的作用: 提示符 含义 mysql> 准备好接受新命令。 -> 等待多行命令的下一行。 输入\c退出‘&...原创 2018-07-16 09:24:30 · 1599 阅读 · 1 评论 -
MySQL的主键和外键
使用《MySQL必知必会》中的表,向表products插入数据出错: 从报错信息看,应当是表的主键和外键的问题,先用show create table products查看表products的创建信息: 外键关系涉及一个包含中心数据值的父表,以及一个具有相同值的子表,指向其父表。这里的子表是product,父表是vendors,对应列是vend_id。外键子句在子表中指定,如果在父表中...原创 2018-07-16 09:23:50 · 5500 阅读 · 1 评论 -
MySQL存储过程与各种变量
局部变量局部变量只在BEGIN和END的代码块中有效,执行完该代码块,变量就消失,在存储过程中最为常见。DECLARE语句专门用于定义局部变量,可以使用DEFAULT语句来指明默认值。定义多个变量:DECLARE x, y INT DEFAULT 0。赋值用的是SET或SELECT语句:DECLARE total_count INT DEFAULT 0SET total_count ...原创 2018-07-16 09:23:18 · 14788 阅读 · 0 评论 -
MySQL常用命令总结
命令 功能 net start mysql 启动(windows) net stop mysql 停止(windows) service mysqld start 启动(Linux) service mysqld stop 停止(Linux) service mysqld restart 重启(Linux) ser...原创 2018-07-15 18:32:45 · 199 阅读 · 0 评论 -
(转载) MySQL索引简述
概述用来加快查询的技术很多,其中最重要的是索引。通常索引能够快速提高查询速度。如果不适用索引,MYSQL必须从第一条记录开始读完整个表,直到找出相关的行。表越大,花费的时间越多。但也不全是这样。本文讨论索引是什么,如何使用索引来改善性能,以及索引可能降低性能的情况。索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以...转载 2018-07-15 18:32:12 · 290 阅读 · 0 评论 -
MySQL的逻辑架构
MySQL的逻辑结构图将整个MySQL分成四层,图如下: 1.连接层最上层是一些客户端和连接服务,包含本地scoket同学和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信,主要完成一些类似连接处理,授权认证,及相关的安全方案,在该层引入线程池的概念,为通过认证安全接入的客户端提供线程,同样在该层上可以实现基于SSL的安全链接,服务器也会为安全接入的每个客户端验证它所具备的...转载 2018-07-22 10:37:39 · 1182 阅读 · 0 评论