
数据库_MySQL基础知识
高达一号
这个作者很懒,什么都没留下…
展开
-
MySQL_MySQL引擎_MyISAM与InnoDB 的区别(9个不同点)
区别1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;3. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效...转载 2020-06-18 09:47:44 · 284 阅读 · 0 评论 -
MySQL_基础结构_B(B-)/B+ 树
参考文章:1.B+树总结https://www.jianshu.com/p/71700a464e972.B-Tree Hash b+Tree三种索引特点对比https://blog.youkuaiyun.com/weixin_42540340/article/details/888350233.MySQL索引的原理,B+树、聚集索引和二级索引的结构分析https://www.cnblogs.com/yuanrw/p/10225659.html4.MySQL数据库中索引...原创 2020-06-17 23:08:02 · 654 阅读 · 0 评论 -
MySQL_Innodb引擎_聚集索引,B+ 索引
1.mysql关于聚集索引、非聚集索引的总结http://blog.itpub.net/30126024/viewspace-2221485/2.mysql-聚集索引https://www.cnblogs.com/happyflyingpig/p/7652553.htmlB+ 索引MySQL 的 innodb 引擎使用的是 B+ 树作为索引的组织结构什么是B+树,B+树与B树之间有什么差异,请参考我的博文 :以上图片就是一颗B+树,通过以上B+树的截图...原创 2020-06-17 22:15:07 · 339 阅读 · 0 评论 -
MySQL_避免重复插入_IGNORE
MySQL 提供了Ignore 用来避免数据的重复插入.IGNORE :若有导致unique key 冲突的记录,则该条记录不会被插入到数据库中.示例:INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com', '99999', '9999');原创 2017-01-12 21:10:08 · 20183 阅读 · 0 评论 -
MySQL_插入更新 ON DUPLICATE KEY UPDATE
平时我们在设计数据库表的时候总会设计 unique 或者 给表加上 primary key 的限制条件.此时 插入数据的时候 ,经常会有这样的情况:我们想向数据库插入一条记录: 若数据表中存在以相同主键的记录,我们就更新该条记录。 否则就插入一条新的记录。逻辑上我们需要怎么写:$result = mysql_query('select * from x原创 2017-01-12 20:49:09 · 80348 阅读 · 6 评论 -
MySQL_级联主从复制_log-slave-update
原文 : http://blog.itpub.net/12679300/viewspace-1319263/说明:最近部署了mysql的集群环境,详细如下M01和M02为主主复制,M01和R01为主从复制;在测试的过程中发现了以下问题:1、M01和M02的主主复制是没有问题的(从M01写入数据能同步到M02,从M02写入数据能够同步到M01);2、主从同步的转载 2016-11-25 11:36:58 · 4898 阅读 · 0 评论 -
MySQL_高阶_主从架构的复制原理及配置详解
http://blog.youkuaiyun.com/hguisu/article/details/7325124/ 温习《高性能MySQL》的复制篇.1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新转载 2016-11-25 11:07:31 · 519 阅读 · 0 评论 -
MySQL_MySQL索引_索引的创建
创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度。创建索引有3种方式,这3种方式分别是创建表的时候创建索引、在已经存在的表上创建索引和使用ALTER TABLE语句来创建索引。本节将详细讲解这3种创建索引的方法。7.2.1 创建表的时候创建索引(1)创建表时可以直接创建索引,这种方式最简单、方便。其基本形式如下:CREATE TABLE 表名转载 2016-06-05 16:23:22 · 372 阅读 · 0 评论 -
数据库_MySQL_简单的存储过程 创建_调用_查找
创建存储过程并调用(附带表的创建,数据的插入等)示例创建过程DROP TABLE IF EXISTS good;CREATE TABLE good( id INT PRIMARY KEY auto_increment, price FLOAT);INSERT INTO good(price) VALUES(2.3),(2.6),(2.7);CREATE P原创 2016-01-11 14:44:48 · 5036 阅读 · 0 评论 -
MySQL_替换更新_REPLACE
REPLACE INTO `table_name`(`col_name`, ...) VALUES (...);REPLACE INTO `table_name` (`col_name`, ...) SELECT ...;说明:REPLACE的运行与INSERT很相像,但是如果旧记录与新记录有相同的值,则在新记录被插入之前,旧记录被删除.即:尝试把新行插入到表中原创 2017-01-12 21:17:41 · 3178 阅读 · 0 评论 -
MySQL EXISTS /NOT EXISTS
原文地址:http://blog.youkuaiyun.com/qsyzb/article/details/12523051参考文章 : http://www.cnblogs.com/rainwang/p/4389282.html准备数据我们先介绍下使用的3个数据表:student数据表:course数据表:sc数据表:转载 2017-05-11 14:21:48 · 26869 阅读 · 6 评论 -
MySQL_MySQL数据类型:UNSIGNED注意事项
原文地址:http://www.cnblogs.com/blankqdb/archive/2012/11/03/blank_qdb.html1. UNSIGNEDUNSIGNED属性就是将数字类型无符号化,与C、C++这些程序语言中的unsigned含义相同。例如,INT的类型范围是-2 147 483 648 ~ 2 147 483 647, INT UNSIGNED的范转载 2017-11-27 11:33:35 · 5522 阅读 · 0 评论 -
SQL_MySQL having 与 where 的区别 与 执行时机
参考文章地址 : http://blog.youkuaiyun.com/jdjh1024/article/details/76647866聚合函数是比较where、having 的关键。 开门见山。where、聚合函数、having 在from后面的执行顺序:where>聚合函数(sum,min,max,avg,count)>having列出group by来比原创 2017-12-26 14:18:56 · 926 阅读 · 0 评论 -
MySQL_SQL中的case when then else end用法
原文地址https://www.cnblogs.com/prefect/p/5746624.htmlCase具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END--Case搜索函数CASE WHEN sex = '1' THEN '...转载 2018-05-17 17:09:55 · 640 阅读 · 0 评论 -
MySQL_MySQL创建用户与授权方法
一, 创建用户:命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该...转载 2018-05-15 11:57:55 · 269 阅读 · 0 评论 -
MySQL _ MySQL 脚本中的变量赋值 与 使用
MySQL 中普通变量的 声明 与赋值。我们在日常工作中,免不了要编写 一些查询脚本,那么是脚本 基本就离不开 变量。 例如 如下需求: 删除 所有统计表 (共计8张表) 2018-07-23 的 数据,但是如果这个脚本 在之后的需求 中 可能是 删除 2018-07-24 号 的数据该怎么办呢, 此时 最好将 用到的语句 写为 脚本, 并最好将 日期设...转载 2018-07-23 11:56:56 · 12101 阅读 · 0 评论 -
MySQL_Windows下搭建MySQL Master Slave
一、背景服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用keepalived这个HA工具,但是我们可以接受人工进行切换,有什么好的方案呢? 二、几种Master/Slave逻辑架构图(Figure1:单Master-单Slave)(Figure2:单Master-多Slave)...转载 2016-05-13 15:59:10 · 613 阅读 · 0 评论 -
MySQL_Centos7 下安装 MySQL 5.7
参考文章地址 :https://www.linuxidc.com/Linux/2018-05/152574.htmCentos 7 本身的 yum 源不再支持 mysql , 现在默认内嵌的数据库 是mariadb,背景介绍:MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将...原创 2019-07-31 21:27:46 · 932 阅读 · 0 评论 -
数据库_MySQL_由浅入深理解索引的实现
这篇文章是介绍MySQL数据库中的索引是如何根据需求一步步演变最终成为B+树结构的以及针对B+树索引的查询,插入,删除,更新等操作的处理方法。Oracle和DB2数据库索引的实现基本上也是大同小异的。文章写得很通俗易懂,就转在这了。关于B+树和索引内部结构可以参考:《B 树、B- 树、B+ 树和B* 树》和《深入理解DB2索引(Index)》。00 – 背景知识-转载 2016-06-02 07:59:56 · 5474 阅读 · 0 评论 -
MySQL_MySQL 联合索引详解 以及注意事项
联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。两个或更多个列上的索引被称作复合索引。利用索引中的附加列,您可以缩小搜索的范围,但转载 2016-06-02 07:52:02 · 13779 阅读 · 0 评论 -
数据库_MySQL_常用DDL、DML、DCL语言整理(附样例)
在介绍这些SQL语言之前,先罗列一下mysql的常用数据类型和数据类型修饰,供查询参考后面的带数字表示此类型的字段长度 数值型:TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ,INT 4,BIGINT 8,DECIMAL,FLOAT 4,DOUBLE 8,BIT 字符串型CHAR,VARCHAR,BINARY,VBINA转载 2016-05-24 14:02:33 · 1250 阅读 · 0 评论 -
数据库_MySQL_导入.sql文件与常用指令
MySQL导入.sql文件及常用命令在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令:mysql> source d:/myprogram/database/db.sql;另附mysql常用命令:一) 连接MYSQL: 格式: my转载 2015-11-17 09:48:15 · 817 阅读 · 0 评论 -
数据库__SQL的主键和外键约束_级联更新_级联删除
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值。(1)插入非空值时,如果主键表中没有这个值,则不能插入。(2)更新时,不能改为主键表中没有的值。(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。(4)更新主键记录时,同样有级联更新和拒绝执行的选择。简而言之,SQL的主键和外键就是起约束作用。转载 2015-11-25 10:02:19 · 8780 阅读 · 0 评论 -
数据库_MySQL limit,offset 区别
Sql代码 SELECT keyword FROM keyword_rank WHERE advertiserid='59' order by keyword LIMIT 2 OFFSET 1; 比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取原创 2015-12-28 10:11:22 · 9107 阅读 · 0 评论 -
数据库_MYSQL获取自增主键【4种方法】 ,推荐方法3
MYSQL获取自增主键【4种方法】 通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键。本文将介绍java环境下的4种方法获取insert后的记录主键auto_increment的值: 通过JDBC2.0提供的insertRow()方式通过JDBC3.0提供的getGeneratedKeys()方式通过SQL selec转载 2015-11-27 09:41:37 · 1213 阅读 · 0 评论 -
数据库_MySQL_uuid()
我唯一还算熟悉的数据库就算是MySQL了,大概使用MySQL的人,百分之九九以上的人会使用Autoincrement ID做主键,这是可以理解的,因为MySQL的自增ID效率很高,使用也很方便。那么剩下的百分之一的人使用什么做主键呢?可能是自己做的KeyGenerator,也可能是我们下面要说的UUID。据说在Oracle的圈子里,如果谁用自增ID做主键是要被鄙视的,主键最自然的选择就是U转载 2015-11-27 10:25:37 · 1467 阅读 · 0 评论 -
数据库_MySQL UUID函数的详解
文章来源:http://www.mysqlops.com/2011/03/01/mysql-uuid.htmlMySQL UUID函数的详解MySQL中可以有二类用于生成唯一值性质的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点:l 都可以实现生成唯一值的功能;l UUID是可以生成时间、空间上都独一无二的值;自增转载 2015-11-27 10:26:32 · 1258 阅读 · 0 评论 -
数据库_Mysql_mysql中char,varchar与text类型的区别和选用
关于char,varchar与text平时没有太在意,一般来说,可能现在大家都是用varchar。但是当要存储的内容比较大时,究竟是选择varchar还是text呢?不知道。。。。。。于是去查阅了一些资料,顺便将这三种类型做个比较:(1)char: char不用多说了,它是定长格式的,但是长度范围是0~255. 当你想要储存一个长度不足255的字符时,mysql会用空格来填充剩下转载 2015-12-19 14:21:33 · 1824 阅读 · 0 评论 -
数据库_MySQL_添加自增长_ auto_increment
如何实现MySQL设置自增字段是许多人都问到的问题,下面就为您介绍MySQL设置自增字段的相关知识,希望对您学习MySQL数据库能有所启迪。示例:DROP TABLE IF EXISTS good;CREATE TABLE good( id INT PRIMARY KEY auto_increment, price FLOAT);MySQL设置自增字段的相转载 2016-01-11 14:11:21 · 1774 阅读 · 0 评论 -
数据库_MySQL_MySQL中的begin-end流程控制语句与局部变量
通常begin-end用于定义一组语句块,在各大数据库中的客户端工具中可直接调用,但在mysql中不可。begin-end、流程控制语句、局部变量只能用于函数、存储过程内部、游标、触发器的定义内部。以下的'[]'表示可选内容。1、begin-end: [begin_label:] BEGIN [statement_list]END [end_label]如:转载 2016-01-12 11:51:52 · 29484 阅读 · 1 评论 -
数据库_MySQL_mysql中insert into select from的使用
如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:1. INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name转载 2016-01-12 13:56:16 · 953 阅读 · 0 评论 -
数据库_MySQL_MySQL的计划任务(相当于定时器的功能)
MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。一 开启MySQL EVENT特性支持在使用这个功能的时候首先要确保MySQL已经开定时任务功能,可以执行以下查询:#查询MySQL计划任务支持是否开启show var原创 2016-01-22 17:07:45 · 3792 阅读 · 0 评论 -
数据库_MySQL_ SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到转载 2016-02-18 11:33:33 · 4686 阅读 · 0 评论 -
数据库_MySQL 游标的使用和结果集的遍历
以前一直不知道游标的作用,之前的结果集遍历 博主一直用的是记录查询出来的记录总数并一条条用LIMIT 1 OFFSET index 进行查找,并进行处理的。现在终于会使用游标了,献上一个小例子供大家参考。其中的MySQL handler触发器请大家参考以下博文 : http://blog.itpub.net/26952448/viewspace-731331/原创 2016-02-22 14:41:05 · 31380 阅读 · 2 评论 -
数据库_MySQL_SQL语句的组装顺序 和 GROUP BY的SELECT语句中显示COUNT()为0的结果
在SQL Server数据库查询中,为了对查询结果进行对比、分析,我们经常会用到GROUP BY子句以及COUNT()函数来对查询结果进行分类、统计等。但是我们在使用的过程中往往会存在一些问题,本文我们就介绍了一个问题,并给出了它的解决方案,接下来就让我们来一起了解一下这部分内容吧。1.问题:如下ExampleTable表,求各种类(CategoryID)满足Flag等于1的记录数转载 2016-02-24 21:47:20 · 1662 阅读 · 0 评论 -
数据库_基础知识_MySQL_UpdateSelect(根据查询出来的结果批量更新)
样例有两个表:spec1、tmpdotspec1 表 有一列:hightmpdot 表 共有两个列:old、new两个表的内容大概如下:spec1 表:high A B A C B D tmpdot 表:old new A newA B newB C newC 方法一UPDATEaSET ...原创 2016-02-26 11:45:18 · 14556 阅读 · 0 评论 -
数据库_MySQL_MySQL日期转换函数
MySQL中常用的日期转换函数和示例对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(转载 2016-02-26 14:05:45 · 726 阅读 · 0 评论 -
数据库_MySQL_查询时强制区分大小写的方法
MySQL查询时强制区分大小写的方法2012-09-21 0 个评论 作者:snowolf收藏 我要投稿MySQL查询时强制区分大小写的方法 平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写。但作为用户信息,一旦用户名重复,又会浪费很多资源。再者,李逵、李鬼的多起来,侦辨起来很困难。要做到这一点,要么在建表时...转载 2015-10-16 11:55:20 · 995 阅读 · 0 评论