select user_id,min(date_time) min_time from ctoc_tb group by user_id
原因:这样查询出的数据date_time确实是对应的最早时间,但是显示出来的user_id信息,不是和最早时间date_time对应的。当你使用GROUP_CONCAT(user_id)就知道其中对应很多用户,只是mysql的机制只显示出最早查到的用户id
select GROUP_CONCAT(user_id),min(date_time) min_time from ctoc_tb group by user_id
查询如下,min_time 和user_id不是唯一对应的
正确写法修改如下
SELECT
A.*
ctoc_tb A,
SELECT
user_id,
min(date_time) min_time
ctoc_tb
GROUP BY
user_id
WHERE
A.user_id = B.user_id
AND A.date_time = B.min_time
查询结果如下:
同样在mysql中查询时间最大的一条记录,原理也是如此
MySQL支持的数据类型很多,选择正确的数据类型对于高性能至关重要。下面几个简单的原则都有助于做出更好的选择。
更小的通常更好
应该尽量使用可以正确储存数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。如果无法确定哪个数据类型时最好的,就选择你认为不会超过范围的最小类型。
简单数据类型的操作通常需要更少的CPU周期。例如,整形比字符操作代价更低,因为字符集和校对规则(排序规则)使字符比较比整形更复杂。比如用MySQ内建的类型而不是使用字符串来存储日期和时间、应该用整形存储IP地址。
尽量避免null
mysql 总结........................................................................................................................................6
1.1 数据库的种类...........................................................................................................6
1.1.1 关系型数据库介绍.................................................................................................6
1.1.2 非关系型数据库介绍.............................................................................................7
1.1.3 非关系型数据库种类.............................................................................................7
1.1.4 关系型数据库产品介绍.........................................................................................8
1.1.5 常用非关系型数据库产品介绍.............................................................................8
1.2 mysql 多实例安装实战......................................................................................................9
1.2.1 什么是 mysql 多实例? .........................................................................................9
1.2.2 mysql 的多实例结构图.........................................................................................10
1.2.3 实战安装 mysql 多实例需要的依赖包...............................................................10
1.2.4 安装编译 mysql 需要的软件...............................................................................10
1.2.5 安装 mysql 软件...................................................................................................11
1.2.6 创建存放两个 mysql 实例的数据目录...............................................................11
1.2.7 创建两个 mysql 多实例的配置文件...................................................................12
1.2.7.1 3306 的实例................................................................................................12
1.2.7.2 3307 的实例................................................................................................16
1.2.7.3 多实例本地登录 mysql .............................................................................20
1.2.7.4 远程连接登录 mysql 多实例....................................................................20
1.3 mysql 基础安全................................................................................................................21
1.3.1 启动程序设置 700,属主和用户组为 mysql .....................................................21
1.3.2 为 mysq 超级用户 root 设置密码........................................................................21
1.3.3 登录时尽量不要在命令行暴漏密码,备份脚本中如果有密码,给设置 700,
属主和用户组为 mysql 或 root......................................................................................21
1.3.4 删除默认存在的 test 库 .......................................................................................21
1.3.5 初始删除无用的用户,只保留 root 127.0.0.1 和 root localhost........................21
1.3.6 授权用户对应的主机不要用%,权限不要给 all,最小化授权,从库只给 select
权限.................................................................................................................................21
1.3.7 不要给一个用户管所有的库,尽量专库专用户...............................................21
1.3.8 清理 mysql 操作日志文件~/mysql_history.........................................................21
1.3.9 禁止开发获取到 web 连接的密码,禁止开发连接操作生产对外的库...........21
1.4.0 服务器禁止设置外网 IP ......................................................................................21
1.4.1 防 SQL 注入(WEB), php.ini 配置文件里面设置 ..........................................21
1.4.2 mysql 的备份的脚本给 700 的权限,并且属主和属组为 root..........................21
1.4 关于 mysql 的启动与关闭..............................................................................................21
1.4.1 单实例 MySQL 启动与关闭方法........................................................................21
1.4.2 多实例 MySQL 启动与关闭方法示例................................................................21
1.5 生产环境关闭 mysql 的命令..........................................................................................22
1.5.1 生产环境不能用强制命令关闭 mysql 服务 .......................................................22
1.5.2 下面来介绍优雅关闭数据库方法: ...................................................................22
1.6 登录 mysql 方法..............................................................................................................22
1.6.1 单实例 MySQL 登录的方法................................................................................22
1.6.2 多实例 MySQL 的登录方法................................................................................22
1.7 关于 mysql 管理员设置..................................................................................................22资源由 www.eimhe.com 美河学习在线收集分享
1.7.1 为管理员 root 用户设置密码并修改方法之一...................................................22
1.7.2 修改管理员 root 密码法二(sql 语句修改) .....................................................22
1.7.3 找回丢失的 mysql root 用户密码(单实例和多实例) ....................................23
1.8 SQL 结构化查询语言......................................................................................................23
1.8.1 什么是 SQL? ......................................................................................................23
1.8.2 SQL 语句最常见的分类一般就是 3 类 ...............................................................24
1.9 数据库的管理应用..........................................................................................................24
1.9.1 创建数据库...........................................................................................................24
1.9.2 查看库的字符集及校队规则...............................................................................24
1.9.3 企业场景创建什么字符集的数据库呢? ...........................................................26
1.9.4 显示数据库...........................................................................................................26
1.9.5 删除数据库...........................................................................................................26
1.9.6 进入数据库中指定的库.......................................................................................27
1.9.7 查看进入当前数据库的用户...............................................................................27
1.9.8 删除数据库多余的账号.......................................................................................27
1.9.9 查看数据库的用户...............................................................................................27
2.0.0 创建 MySQL 用户及赋予用户权限............................................................................27
2.0.1 使用语法:..............................................................................................................27
2.0.2 第一种创建用户及授权方法: ...........................................................................28
2.0.3 第二种创建用户及授权方法: ...........................................................................28
2.0.4 创建用户及授权哪个网段的主机可以连接 oldboy_gbk 库..............................29
2.0.4.1 第一种方法: .............................................................................................29
2.0.4.2 第二种方法: ............................................................................................29
2.0.5 关于 mysql 回收某个用户权限...........................................................................29
2.0.6 企业生产环境如何授权用户权限(mysql 主库) ............................................30
2.1 数据库表操作..................................................................................................................31
2.1.1 以默认字符集 latin1 建库....................................................................................31
2.1.2 建立表并查看表的结构.......................................................................................31
2.1.3 mysql 表的字符类型.............................................................................................32
2.1.3.1 数字类型.....................................................................................................32
2.1.3.2 日期和时间类型.........................................................................................32
2.1.3.3 字符串类型................................................................................................33
2.1.3.4 关于字符类型小结....................................................................................33
2.1.4 为表的字段创建索引...........................................................................................33
2.1.4.1 为表创建主键索引的方法........................................................................33
2.1.4.2 查看 student 表的结构 ..............................................................................34
2.1.4.3 怎么删除一个表的主键............................................................................34
2.1.4.4 利用 alter 命令修改 id 列为自增主键列..................................................34
2.1.4.5 建表后利用 alter 增加普通索引...............................................................34
2.1.4.6 对表字段的前 n 个字符创建普通索引....................................................36
2.1.4.7 为表的多个字段创建联合索引................................................................38
2.1.4.8 为表的多个字段的前 n 个字符创建联合索引........................................38
2.1.4.9 主键也可以联合多列做索引....................................................................39
2.1.5.0 统计一个字段列的唯一值个数................................................................40资源由 www.eimhe.com 美河学习在线收集分享
2.1.5.1 创建唯一索引(非主键) ........................................................................41
2.1.5.2 索引列的创建及生效条件........................................................................42
2.1.5 往表中插入数据...................................................................................................42
2.1.6 往表中删除一条数据...........................................................................................44
2.1.7 查询数据................................................................................................................44
2.1.7.1 查询表的所有数据行................................................................................44
2.1.7.2 查看 mysql 库的用户................................................................................45
2.1.7.3 根据指定条件查询表的部分数据............................................................45
2.1.7.4 根据固定条件查数据................................................................................46
2.1.7.5 指定固定条件范围查数据........................................................................46
2.1.7.6 根据顺序查看列数据................................................................................46
2.1.6.7 在表中根据条件导出数据至文件中........................................................47
2.1.8 多表查询...............................................................................................................47
2.1.8.1 创建学生表................................................................................................47
2.1.8.2 在学生表里插入数据.................................................................................47
2.1.8.3 创建课程表................................................................................................47
2.1.8.4 在课程表里插入数据................................................................................48
2.1.8.5 创建选课表................................................................................................48
2.1.8.6 联表查询命令............................................................................................49
2.1.9 使用 explain 查看 select 语句的执行计划..........................................................49
2.1.9.1 用查询语句查看是否使用索引情况........................................................49
2.1.9.2 为该列创建索引,再用查询语句查看是否走了索引............................50
2.2.0 使用 explain 优化 SQL 语句(select 语句)的基本流程..................................50
2.2.1 用命令抓取慢 SQL 语句,然后用 explain 命令查看查询语句是否走的索
引查询.....................................................................................................................50
2.2.2 设置配置参数记录慢查询语句...................................................................51
2.2.3 对抓取到的慢查询语句用 explain 命令检查索引执行情况 .....................51
2.2.4 对需要建索引的条件列建立索引...............................................................51
2.2.5 切割慢查询日志,去重分析后发给大家...................................................51
2.2.1 修改表中数据.......................................................................................................51
2.2.1.1 修改表中指定条件固定列的数据............................................................51
2.2.2 删除表中的数据...................................................................................................52
2.2.2.1 实践删除表中的数据................................................................................52
2.2.2.2 通过 update 伪删除数据...........................................................................53
2.2.3 增删改表的字段...................................................................................................53
2.2.3.1 命令语法及默认添加演示........................................................................53
2.2.4 更改表名...............................................................................................................55
2.2.5 删除表名...............................................................................................................56
2.2.6 mysql 数据库的备份与恢复.................................................................................56
2.2.6.1 备份单个数据库练习多种参数使用........................................................56
2.2.6.2 查看数据库 oldboy 的内容.......................................................................56
2.2.6.3 执行备份的命令........................................................................................57
2.2.6.4 查看备份的结果........................................................................................57
2.2.6.5 mysqldump 备份时加上-B 参数时的备份,然后比较不加-B 备份的不同资源由 www.eimhe.com 美河学习在线收集分享
.................................................................................................................................57
2.2.6.6 删除数据库中备份过的库 oldboy,然后将备份的数据重新导入数据库
.................................................................................................................................58
2.2.6.7 利用 mysqldump 命令对指定的库进行压缩备份...................................59
2.2.6.8 利用 mysqldump 命令备份多个库(-B 参数后可以指定多个库) ......59
2.2.6.9 分库备份(对 mysql、 oldboy、 oldboy_gbk、 wordpress 库进行备份)
.................................................................................................................................60
2.2.7.0 对一个库的多个表备份............................................................................60
2.2.7.1 备份多个表................................................................................................61
2.2.7.2 备份单个表................................................................................................61
2.2.7.3 关于 mysqldump 的参数说明...................................................................61
2.2.7.4 刷新 binglog 的参数..................................................................................62
2.2.7.5 生产场景不同引擎 mysqldump 备份命令...............................................62
2.2.8 恢复数据库实践...................................................................................................63
2.2.8.1 数据库恢复事项........................................................................................63
2.2.8.2 利用 source 命令恢复数据库 ...................................................................63
2.2.8.3 利用 mysql 命令恢复(标准) ................................................................64
2.2.8.4 针对压缩的备份数据恢复........................................................................66
2.2.9 实现和 mysql 非交互式对话...............................................................................66
2.2.9.1 利用 mysql –e 参数查看 mysql 数据库的库名........................................66
2.2.9.2 利用 mysql –e 参数查看 mysql 数据库的线程状态................................66
2.2.9.3 mysql sleep 线程过多的问题案例............................................................66
2.2.9.4 查看 mysql 配置文件有没有在数据库中生效 ........................................67
2.2.9.5 不重启数据库修改数据库参数................................................................68
2.2.9.6 不重启数据库更改数据库参数小结........................................................69
2.3.0 查看 mysql 状态的信息(利用 zabbix 可以监控其状态信息) .......................69
2.3.1 mysqladmin 的命令...............................................................................................75
2.3.2 mysql 工具 mysqlbinlog........................................................................................76
2.3.2.1 mysql 的 binlog 日志是什么? ..................................................................76
2.3.2.2 mysql 的 binlog 日志作用是什么? ..........................................................76
2.3.2.3 mysqlbinlog 工具解析 binlog 日志实践....................................................76
2.3.2.4 解析指定库的 binlog 日志........................................................................76
2.3.3 mysql 数据库的服务日志.....................................................................................77
2.3.3.1 错误日志(error log)介绍与调整..........................................................77
2.3.3.2 普通查询日志(general query log)介绍与调整(生产环境中不用) 77
2.3.3.3 慢查询日志介绍与调整............................................................................78
2.3.3.4 二进制日志介绍与调整............................................................................78
2.3.4 mysql 的 binlog 有三种模式.................................................................................78
2.3.4.1 row level......................................................................................................78
2.3.4.2 statement level(默认) ..................................................................................79
2.3.4.3 Mixed ..........................................................................................................79
2.3.5 企业场景如何选择 binlog 的模式.......................................................................79
2.3.6 设置 mysql binlog 的格式....................................................................................79
2.3.7 mysql 生产备份实战应用指南.............................................................................80资源由 www.eimhe.com 美河学习在线收集分享
2.3.7.1 全量备份....................................................................................................80
2.3.7.2 增量备份....................................................................................................80
2.3.7.3 企业场景和增量的频率是怎么做的? ....................................................81
2.3.7.4 mysql 增量恢复必备条件..........................................................................81
2.3.7.5 实战模拟凌晨 00 点对 oldboy库做个全备,早上 10 点左右删除了 oldboy
库,下面是其恢复过程.........................................................................................81
2.3.7.6 实战模拟凌晨 00 点对 oldboy库做个全备,早上 10 点左右更新了 oldboy
库的 test 表中所有字段数据,下面是其恢复过程(update 表中的数据的时候,
把表中的字段换成了一个相同的内容,这时候要停库) .................................83
2.3.8 mysql 的主从复制的结构图.................................................................................85
2.3.8.1 单向的主从复制图,此架构只能在 master 端进行数据写入(生产环境
可以使用) .............................................................................................................85
2.3.8.2 双向的主主同步逻辑图,此架构可以在 master1 端或 master2 端进行数
据写入(生产环境不建议使用) .........................................................................85
2.3.8.3 线性级联单向双主同步逻辑图,此架构只能在 master1 端进行数据写入
(生产环境可以使用) .........................................................................................86
2.3.8.4 环状级联单向多主同步逻辑图,任意一个都可以写入数据(生产环境
不建议使用) .........................................................................................................86
2.3.8.5 环状级联单向多主多从同步逻辑图,此架构只能在任意一个 master 端
进行数据写入(生产环境不建议使用) .............................................................86
2.3.9 mysql 主从复制的原理.........................................................................................86
2.4.0 mysql 主从复制的原理图.....................................................................................87
2.4.1 mysql 主从复制的实践.........................................................................................87
2.4.1.1 环境准备....................................................................................................87
2.4.1.2 分别查看 3306 和 3307 不同数据库有哪些库........................................87
2.4.1.3 全量备份 3306 数据库的库,然后到 3307 数据库中............................88
2.4.1.4 在 3306 数据库上授权用户可以到 3306 数据库上复制 binlog.............89
2.4.1.5 在 3307 数据库上开启复制 3306 的 binlog 开关,并查看是否处于同步
状态.........................................................................................................................89
2.4.1.6 在 3306 上创建数据库 zhangxuan,看 3307 上是否同步过来..............91
2.4.2 关于主从复制出现故障怎么解决.......................................................................92
2.4.3 主从复制延迟问题原因及解决方案...................................................................92
2.4.3.1 一个主库的从库太多,导致复制延迟....................................................92
2.4.3.2 从库硬件比主库差,导致复制延迟........................................................92
2.4.3.3 慢 SQL 语句过多 ......................................................................................92
2.4.3.4 主从复制的设计问题................................................................................93
2.4.3.5 主从库之间的网络延迟............................................................................93
2.4.3.6 主库读写压力大,导致复制延迟............................................................93
2.4.4 通过 read-only 参数让从库只读访问..................................................................93
2.4.5 web 用户专业设置方案: mysql 主从复制读写分离集群..................................93
2.4.6 让 mysql 从库记录 binlog 日志方法...................................................................94
2.4.7 mysql 主从复制集群架构的数据备份策略.........................................................94
2.4.8 mysql 一主多从,主库宕机,从库怎么接管.....................................................95
2.4.8.1 半同步从库(谷歌半同步插件 5.5 版本自带) .....................................95资源由 www.eimhe.com 美河学习在线收集分享
2.4.8.2 S1,啥也不干只做同步的从库, 500 台服务器,百度..........................95
2.4.8.3 皇帝驾崩现选(耽误事,容易被篡位) ................................................95
2.4.9 事务介绍...............................................................................................................97
2.4.9.1 事务的四大特性(ACID) ......................................................................97
2.4.9.2 事务的开启................................................................................................97
2.4.9.3 事物的实现................................................................................................98
2.5.0 mysql 引擎概述.....................................................................................................98
2.5.0.1 什么是存储引擎? ....................................................................................98
2.5.0.2 mysql 存储引擎的架构..............................................................................99
2.5.0.3 myisaw 引擎介绍 .......................................................................................99
2.5.0.4 myisaw 引擎特点 .......................................................................................99
2.5.1 myisaw 引擎调忧精要 ........................................................................................100
2.5.2 innodb 引擎..........................................................................................................100
2.5.2.1 什么是 innodb 引擎? .............................................................................100
2.5.2.2 innodb 引擎特点.......................................................................................101
2.5.2.3 innodb 引擎适应的生产业务场景...........................................................102
2.5.2.4 关于 innodb 引擎的一些参数设置.........................................................102
2.5.2.5 innodb 引擎调忧精要...............................................................................102
2.5.3 有关 mysql 引擎特别说明.................................................................................103
2.5.4 关于 mysql 的字符集.........................................................................................103
2.5.4.1 mysql 常见的字符集? ............................................................................103
2.5.4.2 mysql 如何选择合适的字符集? ............................................................103
2.5.4.3 如何查看字符集......................................................................................103
2.5.4.4 不同字符集参数的含义如下(要想数据库字符不乱码,下面几个字符
集要相同) ...........................................................................................................104
2.5.4.5 set names 字符集名,此命令有什么作用 .............................................105
2.5.4.6 根据配置文件更改客户端字符集..........................................................105
2.5.4.7 更改 mysql 服务端的字符集..................................................................106
2.5.4.8 怎么解决乱码问题..................................................................................106
2.5.4.9 插入数据不乱码的方法..........................................................................106
2.5.5.0 更改数据库的字符集..............................................................................106
2.5.5.1 更改表的字符集......................................................................................106
2.5.6 模拟将 latin1 字符集的数据库修改成 UTF8 字符集的实际过程 ..................107
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了。。。。。。。。。 下面先来看看例子: table id name
/*date_add(date,interval expr type)和date_sub(date,interval expr type)执行日期运算。 date 是一个 datetime 或date值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。 type 为关键词,它指示了表达式被...
Mysql常见函数**功能:**类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名**好处:**隐藏了实现细节,提高代码的重用性调用: select 函数名(实参列表) from 表;特点:叫什么(函数名) 干什么(函数功能)分类:一:单行函数如:concatlengthifnull等二:分组函数:功能:做统计使用,又称为统计函数,聚合函数,组函数。一:字符函数length 获取字...
展开全部1、首先最常用的32313133353236313431303231363533e4b893e5b19e31333431373233就是GETDATE了,如下图所示,直接获得当前最新的日期。2、接着还有Getshortdate,如下图所示,这个是后面的时分秒没有。3、获取到日期以后可能需要提取,那么就用CONVERT,其中23格式比较常用。4、然后120的格式也是非常常用的。5、接下来还有...
需求现有一需求,根据id/name/login_name/created_at字段查询结果后,需要将查询出来的记录根据id和name分组后,在组内选择时间created_at最小的那一个login_name根据id/name分组之后,login_name会有多个,组内时间也会不同;组内id/name相同。思路SQL1中查询出全部记录,并且根据id和created_at拼接为新的字段k,在SQL2中...
1. addtime()为日期加上指定秒数select addtime(now(),1); -- 加1秒2. adddate()有两种用法,第二个参数直接填数字的话是为日期加上指定天数,填interval的话是为日期加上指定的interval时间select adddate(now(),1); -- 加1天select adddate(now(), interval 1 day); -- 加1天s...
mysql获取当前时间,前一天,后一天
负责的项目中,使用的是mysql数据库,页面上要显示当天所注册人数的数量,获取当前的年月日,我使用的是 CURDATE(),
错误的sql语句
eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate
虽然 获取到的数量在测试环境中是正确的
CREATE TABLE IF NOT EXISTS `accesscards` (`id` int(11) NOT NULL AUTO_INCREMENT,`department` varchar(255) NOT NULL,`name` varchar(255) NOT NULL,`entrydates` datetime NOT NULL, PRIMARY KEY (`id`)) ENGIN...