MySql
人间四月天美丽春色
这个作者很懒,什么都没留下…
展开
-
MySQL批量修改数据表和数据表中所有字段的字符集
由于Mysql的utf8是有缺陷的,不是真正的UTF-8,utf8mb4才是真正的UTF-8。对于一些老的项目要修改字符集,可以参照我的另外一篇文章:MySQL数据库字符集utf8如何转utf8mb4https://blog.csdn.net/vfsdfdsf/article/details/89672717本文使用的数据库版本是:5.7.17更改表编码(字符集)和表中所有字段的编码(字符集):ALTER TABLE TABLE_NAME CONVERT TO CHARAC...原创 2021-06-19 17:00:33 · 393 阅读 · 0 评论 -
MySQL多表关联更新及删除
一、 多表关联更新问题描述:现有tdb_goods表(含有具体信息)和tdb_goods_cates表(没有具体信息),需要查询tdb_goods表的所有记录,并且按"类别"分组,且将分组结果写入到tdb_goods_cates数据表。然后通过tdb_goods_cates数据表来更新tdb_goods表2 查询tdb_goods表的所有记录,并且按"类别"分组SELECT goods_cate ...转载 2018-06-01 16:52:54 · 2278 阅读 · 0 评论 -
MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考。案一:使用ignore关键字如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:INSERT IGNORE INTO `table_name` (`email`, `phone`,...转载 2018-03-14 11:02:37 · 160 阅读 · 0 评论 -
MYSQL数据库(六)- 外键约束的参照操作
一、外键引用约束的参照操作其实可以简单理解为:在使用外键时候可以参照的依赖关系,例如父类删除子类也跟着删除。二、4种外键约束1、cascade:从父表删除或者更新且自动删除或更新子表中匹配的行2、set null:从父表删除或更新行,并设置子表中的外键行为null,如果使用该选项,必须保证子表列没有指定not null3、restrict:拒绝对父表的删除或更新操作。4、no action:标准S...转载 2018-03-14 10:49:55 · 603 阅读 · 0 评论 -
MySQL执行SHOW STATUS查询服务器状态状态之Handler_read_* 详解
在MySQL里,我们一般使用SHOW STATUS查询服务器状态,语法一般来说如下:SHOW [GLOBAL | SESSION] STATUS [LIKE ‘pattern’ | WHERE expr]执行命令后会看到很多内容,其中有一部分是Handler_read_*,它们显示了数据库处理SELECT查询语句的状态,对于调试SQL语句有很大意义,可惜实际很多人并不理解它们的实际意义,本文简单...转载 2018-03-20 10:40:25 · 1393 阅读 · 0 评论 -
MySQL_插入更新 ON DUPLICATE KEY UPDATE
平时我们在设计数据库表的时候总会设计 unique 或者 给表加上 primary key 的限制条件.此时 插入数据的时候 ,经常会有这样的情况:我们想向数据库插入一条记录: 若数据表中存在以相同主键的记录,我们就更新该条记录。 否则就插入一条新的记录。逻辑上我们需要怎么写:$result = mysql_query('select * from xxx where id = 1');$r...转载 2018-03-14 09:59:01 · 143 阅读 · 0 评论 -
SQL语句多表查询例子
这里我们建几个SQL表,我们用个图来说明关系这里tid的值和教师表中的id相匹配,pid和院系表中的id相匹配,也就是说这样建表就把三张表的关系给建立起来了。学生表在最低层,院系表在最高层。 而这里我们就要讲一个外键的概念:外键是作为与主表的主键相关联的键值,外键可以有多个,同时有外键的表称作对应主键所在表的从表,那主键所在的表就作主表。图中,tid是教师表中id的外键,也就学生表是教师表的从表,...转载 2018-03-19 17:43:38 · 11819 阅读 · 0 评论 -
MySQL学习-------MySQL锁与事务
一、MySQL锁概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是...转载 2018-03-19 17:35:30 · 200 阅读 · 0 评论 -
MySQL查询缓存总结
可以通过下面的SQL查看当前查询缓存相关参数状态: SHOW VARIABLES LIKE '%query_cache%';输出结果类似下面: query_cache_type 查询缓存类型,有0、1、2三个取值。0则不使用查询缓存。1表示始终使用查询缓存。2表示按需使用查询缓存。 如果query_cache_type为1而又不想利用查询缓存中的数据,可以用下面的SQL: SEL...转载 2018-03-19 11:00:28 · 296 阅读 · 0 评论 -
MySql查询缓存
MySQL Query Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP TABLE, or DROP DATABASE等操作时,之前的缓存会无效并且删除。这样一定程度上也会影响我们数据库的性能。所以对一些频繁的变动表的情况开启缓存是不明智的。还有一种情况我们测试数据库性...转载 2018-03-19 10:28:13 · 161 阅读 · 0 评论 -
MySQL优化—工欲善其事,必先利其器之EXPLAIN
MySQL优化—工欲善其事,必先利其器之EXPLAIN最近慢慢接触MySQL,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器。最近我就打算了解下几个优化MySQL中经常用到的工具。今天就简单介绍下EXPLAIN。内容导航idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra 环境准备MySQL版本:创建测试表CREATE TABL...转载 2018-03-14 14:49:39 · 124 阅读 · 0 评论 -
分组查询最大/最小值sql
经典题目:查询每个班级的最高分,查询每种日志的最晚记录 1.查询每个班级的最高分(不考虑同一分数的) SQL语句: SELECT id,name,calssid,MAX(score) FROM (SELECT * FROM t_zhb ORDER BY score desc) A GROUP BY calssid; select * from(se...转载 2018-04-03 21:00:12 · 1698 阅读 · 0 评论 -
mysql常见的错误代码大全
0101 属于其他进程的专用标志。0102 标志已经设置,无法关闭。0103 无法再次设置该标志。0104 中断时无法请求专用标志。0105 此标志先前的所有权已终止。0106 请将软盘插入驱动器 %1。0107 后续软盘尚未插入,程序停止。0108 磁盘正在使用或已由其他进程锁定。0109 管道已经结束。0110 系统无法打开指定的设备或文件。0111 文...转载 2019-06-16 11:29:43 · 7615 阅读 · 1 评论 -
MYSQL索引
索引的类型索引优化应该是对查询性能优化最有效的手段了。 mysql只能高效地使用索引的最左前缀列。 mysql中索引是在存储引擎层而不是服务器层实现的B-Tree索引B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。图中根节点没有画出来。B-Tree对索引列是顺序组织存储的,索引很适合查找范围数据。B-T...转载 2019-06-15 19:41:00 · 170 阅读 · 0 评论 -
MySQL缓存命中率概述及如何提高缓存命中率
MySQL缓存命中率概述工作原理:查询缓存的工作原理,基本上可以概括为: 缓存SELECT操作或预处理查询(注释:5.1.17开始支持)的结果集和SQL语句; 新的SELECT语句或预处理查询语句,先去查询缓存,判断是否存在可用的记录集,判断标准:与缓存的SQL语句,是否完全一样,区分大小写;查询缓存对什么样的查询语句,无法缓存其记录集,大致有以下几类:1、 查询语句中加了SQL...转载 2018-12-10 11:46:05 · 816 阅读 · 0 评论 -
mysql配置文件参数详解
(一)[client]port = 3306socket = /tmp/mysql.sock[mysqld]port = 3306socket = /tmp/mysql.sockbasedir = /usr/local/mysqldatadir = /data/mysqlpid-file = /data/mysql/mysql.piduser = mysqlbind-a...转载 2018-12-10 11:44:56 · 159 阅读 · 0 评论 -
MySQL创建账户,修改密码,设置权限,删除用户
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户 1.1 登录MYSQL: @>mysql -u root -p @>密码 1.2 创建用户: 1》 mysql> insert into mysql.user(Host,User,Password) value...原创 2018-12-20 14:45:13 · 1533 阅读 · 0 评论 -
关于sql和MySQL的语句执行顺序(必看!!!)
今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序:sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from (3) join (2) on (4) where ...转载 2018-08-12 16:31:56 · 339 阅读 · 2 评论 -
MySQL的INFORMATION_SCHEMA数据库简介
大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库。information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章后,你就会对information_schema数据库有所了解。information_schema数据库是MySQL自带的,它提供了访问...转载 2018-07-19 18:51:03 · 169 阅读 · 0 评论 -
mysql获取每个分类下面的前五条数据
现在项目遇到个问题,我电商网站,商品有很多分类,我想取出每个分类下面的前五条数据,应该怎么做呢?数据结构如下:DROP TABLE IF EXISTS `products`;CREATE TABLE `products` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(200) COLLATE utf...转载 2018-05-25 11:43:35 · 17555 阅读 · 2 评论 -
总结的几个常用的sql例子
1, 利用case when then end 进行数据分类统计。 用法1:select case when type=1 then '数学' when type=2 then '英语' when type=3 then '语文' else '其他' end askemu,count(*) from `kechengbiao` group by when原创 2017-10-24 14:13:46 · 1285 阅读 · 0 评论 -
Mysql批量插入事务插入性能对比
Mysql批量插入事务插入性能对比。对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,可能每天花费在数据导入上的时间就会长达几个小时之久。因此,优化数据库插入性能是很有意义的。网络上的牛人很多,总会有一些手段可以提高insert效率,大家跟我一起分享一下吧:1. 一条SQL语句插入多条数据。我们常用的插入语句大都是一条一个i转载 2017-11-21 22:02:47 · 14115 阅读 · 1 评论 -
MySQL存储过程
存储过程简介SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用转载 2017-08-30 17:10:47 · 294 阅读 · 0 评论 -
mysql 赋给用户权限
1.新建用户。//登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));//刷新系统权限表mysql>flush privileges;这样就创建了一转载 2017-08-29 10:27:40 · 413 阅读 · 0 评论 -
mysql当插入重复数据的时候
第一种方法: 示例一:插入多条记录假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: Sql代码 INSERT INTO clients (client_id,client_name,client_type) SELECT supplier_id,supplier_name,'advertising' FROM sup转载 2017-08-04 16:55:15 · 2191 阅读 · 0 评论 -
MySQL的Query Cache原理分析
QueryCache(下面简称QC)是根据SQL语句来cache的。一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使用QC。每个Cache都是以SQL文本作为key来存的。原理 QueryCache(下面简称QC)是根据SQL语句来cache的。一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使用QC。每个Cache都是以SQL文本作为key来转载 2017-07-14 23:53:59 · 306 阅读 · 0 评论 -
addslashes和mysql_escape_string,mysql_real_escape_string的区别
首先:不要使用mysql_escape_string,它已被弃用,请使用mysql_real_escape_string代替它。mysql_real_escape_string和addslashes的区别在于:区别一:addslashes不知道任何有关MySQL连接的字符集。如果你给所使用的MySQL连接传递一个包含字节编码之外的其他编码的字符串,它会很愉快地把所有值为转载 2017-07-13 17:49:47 · 704 阅读 · 0 评论 -
PDO防注入原理分析以及使用PDO的注意事项
我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题:为什么要使用PDO而不是mysql_connect?为何PDO能防注入?使用PDO防注入的时候应该特别注意什么? 一、为何要优先使用PDO?PHP手册上说得很清楚:Prepared statements and stored proceduresMany of the mo转载 2017-07-13 17:46:12 · 258 阅读 · 0 评论 -
事物与索的关系
mysql数据库的存储引擎为INNODB的时候才支持事物,INNODB的锁机制是行级索,一般情况下语句的执行都会隐式的开启事物自动提交。执行update语句的时候会加行级锁【写锁也叫排它锁】,自动提交(commit)的时候锁被释放,所以当执行一条语句update语句的时候,这时候如果也有其他的update语句需要更新相同的行数据,则需要等前面的update更新完,锁释放,后面的update语句才会原创 2017-07-12 17:58:19 · 252 阅读 · 0 评论 -
实例说明optimize table在优化mysql时很重要
实例说明optimize table在优化mysql时很重要张映 发表于 2011-03-07分类目录: mysql标签:mysql, optimize table, 优化今天在看CU的时候,发现有人问有关optimize来表优化的问题,当年因为这个问题,困扰我很长一段时间,今天有空我把这个问题,用实际数据来展示出来,让大家可以亲眼来看看,opt转载 2017-06-21 00:27:53 · 424 阅读 · 0 评论 -
搜索引擎Sphinx在windows下安装使用
Sphinx 在 windows 下安装使用前一阵子尝试使用了一下 Sphinx ,一个能够被各种语言 (PHP/Python/Ruby/etc) 方便调用的全文检索系统。网上的资料大多是在 Linux 环境下的安装使用,当然,作为生产环境很有必要部署在 *nix 环境下,作为学习测试,还是windows 环境比较方便些。本文旨在提供一种便捷的方式让 Sphinx 在 windows 下安转载 2017-05-20 20:30:23 · 403 阅读 · 0 评论 -
MySql高级—视图、函数、存储过程、触发器
目录一、视图 11、视图的定义 12、视图的作用 1(1)可以简化查询。 1(2)可以进行权限控制, 33、查询视图 44、修改视图 45、删除视图 46、查看视图结构 47、查看所有视图 48、视图与表的关系 59、视图算法 6二、SQL 编程 71、变量声明转载 2017-08-30 17:14:59 · 548 阅读 · 0 评论 -
MySQL 第九天(核心优化三)
一.昨天内容回顾索引设计依据与数据表有关系的sql语句都统计出来where order by or等等条件的字段适当做索引原则:频率高的sql语句执行时间长的sql语句业务逻辑重要的sql语句 什么样子字段不适合做索引?内容比较单调的字段不适合做索引前缀索引一个字段只取前边的几位内容做索引好处:索引空间比较少、运行速度快前n位做索转载 2017-08-30 17:16:36 · 213 阅读 · 0 评论 -
MySQL 第八天(核心优化二)
一.昨天内容回顾存储引擎保存数据的格式(技术),不同格式体现特性不一样myisam① 结构、数据、索引 文件单独存储② 存入数据顺序(不考虑主键顺序) ,写入数据速度快③ 并发性,低,锁整张表④ 压缩机制innodb① 结构有单独文件,数据和索引合并到一个文件中(通过设置,可以给每个表设置一个"数据/索引"文件)② 存入数据顺序(给考虑主键值的先转载 2017-08-30 17:19:27 · 216 阅读 · 0 评论 -
MySQL SQL_MODE详解
SQL_MODE:通过对其正确的设置可以完成一些约束检查的工作,设置时,可在配置文件my.cnf或my.ini中进行,也可在客户端中进行,并可分别进行全局的设置或当前会话的设置。查看SQL_MODE设置情况:mysql>SHOW VARIABLES LIKE'SQL_MODE';+---------------+---------------------------转载 2017-11-09 17:01:40 · 409 阅读 · 0 评论 -
MySQL字符集详解
MySQL字符集详解一、字符集和校验规则字符集是一套符合和编码,校验规则(collation)是在字符集内用于比较字符的一套规则,即字符集的排序规则。MySQL可以使用对种字符集和检验规则来组织字符。MySQL服务器可以支持多种字符集,在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以指定使用不同的字符集,相比oracle等其他数据库管理系统,在同一个数据库只能使用相同的字转载 2017-11-08 17:11:06 · 2702 阅读 · 2 评论 -
MySQL 第三天
回顾 字段类型(列类型): 数值型, 时间日期型和字符串类型 数值型: 整型和小数型(浮点型和定点型) 时间日期型: datetime, date,time,timestamp, year字符串类型: 定长, 变长, 文件字符串(text和blob), 枚举和集合Mysql记录长度: 65535个字节, varchar达不到理论长度, NULL占用一转载 2017-08-30 17:27:25 · 333 阅读 · 0 评论 -
MySQL 第四天
列属性: 主键, 自增长, 唯一键 关系: 一对一,一对多和多对多 范式: 三层范式 1NF: 字段设计必须符合原子性 2NF: 不存在部分依赖(没有复合主键) 3NF: 不存在传递依赖(实体单独建表) 逆规范化: 效率与磁盘空间的博弈 高级数据操作 新增操作: 主键冲突(更新和替换), 蠕虫复制 更新操作: 限制更新数量: limit 删除转载 2017-08-30 17:26:16 · 261 阅读 · 0 评论 -
MySQL 第五天
连接查询: 多张表连接到一起,不管记录数如何,字段数一定会增加.分类: 内连接,外连接,自然连接和交叉连接交叉连接: cross join(笛卡尔积)内连接: inner join, 左右两张表中有连接条件匹配(不匹配的忽略)外连接: outer [left/right] join, 主表有的记录一定会存在, 匹配了就保留副表字段数据,没匹配到副表字段置空自然连转载 2017-08-30 17:25:05 · 309 阅读 · 0 评论 -
MySQL 第六天
外键: 关联关系(表与表之间:表中字段指向另外一张表的主键)外键条件: 字段类型必须一致,存储引擎必须为innodb外键约束:子表约束: 不能插入父表不存在的记录父表约束: 三种约束模式(district, cascade,set null), on delete set null on update cascade 联合查询: union, 多表合并和转载 2017-08-30 17:23:47 · 357 阅读 · 0 评论