mysql数据库

阿里云CentOS6.5搭建服务器JDK+tomcat+MySQL

这一生的挚爱 提交于 2020-03-24 01:57:51
阿里云ECS,计划安装jdk;MySQL;tomcat; 一、yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 二、安装JDK,path之类的已经自动设置好了(无需自己设置) yum list Java * yum list java-1.8* yum install java-1.8.0-openjdk* -y 三、安装mysql; #我喜欢在home目录操作命令 cd /home #查看所有以mysql开头的软件 yum list mysql* #安装mysql yum install mysql-server* -y #启动mysql /etc/init.d/mysqld start #设定mysql自动启动,我亲自重启了ECS,确实ok chkconfig mysqld on #复制mysql的配置文件到etc目录,提示是否覆盖,选择y cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #重新设定mysql密码,默认密码是【空】,输入新密码,注意提问,是否删除匿名账户?【y

一条update语句的执行过程

别说谁变了你拦得住时间么 提交于 2020-03-24 01:56:28
3 月,跳不动了?>>> 以前有过一篇关于 MySQL查询语句的执行过程 ,这里总结一下update语句的执行过程。由于update涉及到数据的修改,所以,很容易推断,update语句比select语句会更复杂一些。 1,准备 创建一张test表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) NOT NULL DEFAULT '0' COMMENT '数值', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表'; 插入三条数据 INSERT INTO `test` (`c`) VALUES (1), (2), (3); 2,测试 加入我要把第一条数据的 c 值 加 1,则 UPDATE `test` SET `c` = `c` + 1 WHERE `id` = 1; 按照我们平常的思路,就是找出这条记录,把它的值改好,保存就OK了。 但我们追究一下细节,由于涉及到修改数据,所以涉及到日志了。 3 操作顺序 3.1 查找记录:执行器先找引 擎取 id=1这一行。ID是主键,引擎直接用树搜索找到这一行。如果id=1这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存

图解MySQL索引--B-Tree(B+Tree)

谁说我不能喝 提交于 2020-03-23 22:45:28
本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https://mp.weixin.qq.com/s/osB-BOl6W-ZLTSttTkqMPQ 看了很多关于索引的博客,讲的大同小异。但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问! 索引是什么? 索引是帮助MySQL高效获取数据的数据结构。 索引能干什么? 提高数据查询的效率。 索引:排好序的快速查找数据结构!索引会影响where后面的查找,和order by 后面的排序。 一、索引的分类 1️⃣从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。 2️⃣从应用层次来分:普通索引,唯一索引,复合索引 3️⃣根据中数据的物理顺序与键值的逻辑(索引)顺序关系:聚集索引,非聚集索引。 1️⃣中所描述的是索引存储时保存的形式,2️⃣是索引使用过程中进行的分类,两者是不同层次上的划分。不过平时讲的索引类型一般是指在应用层次的划分。 就像手机分类:安卓手机,IOS手机

图解MySQL索引--B-Tree(B+Tree)

拜拜、爱过 提交于 2020-03-23 22:11:31
3 月,跳不动了?>>> 【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 看了很多关于索引的博客,讲的大同小异。但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问! 索引是什么? 索引是帮助MySQL高效获取数据的数据结构。 索引能干什么? 提高数据查询的效率。 索引:排好序的快速查找数据结构!索引会影响where后面的查找,和order by 后面的排序。 一、索引的分类 1️⃣从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。 2️⃣从应用层次来分:普通索引,唯一索引,复合索引 3️⃣根据中数据的物理顺序与键值的逻辑(索引)顺序关系:聚集索引,非聚集索引。 1️⃣中所描述的是索引存储时保存的形式,2️⃣是索引使用过程中进行的分类,两者是不同层次上的划分。不过平时讲的索引类型一般是指在应用层次的划分。 就像手机分类:安卓手机,IOS手机 与 华为手机,苹果手机,OPPO手机一样。 普通索引 :即一个索引只包含单个列,一个表可以有多个单列索引 唯一索引 :索引列的值必须唯一,但允许有空值 复合索引 :即一个索引包含多个列 **聚簇索引

MySQL——pymysql的使用

筅森魡賤 提交于 2020-03-23 19:46:34
MySQL——python对mysql操作 pymysql 模块 # 1.模块的安装:pip install pymysql 或者进入setting # 2.代码连接 import pymysql # 连接 conn = pymysql.connect( host="127.0.0.1", port=3306, user="root", password='', database="day41", charset = "utf8" ) # 游标操作 cursor = conn.cursor()# 默认以元组的形式返回是返回 # cursor = conn.cursor(pymysql.cursors.DictCursor)# 参数规定以字典形式返回 3.对数据库的操作 res = cursor.excute('select * from class') # 发送指令到mysql print(res) # 查询到数据的总调条数不是所有详细信息(rows) print (cursor.fetchone()) # 获取一个查询的结果,同时游标往后移动一个 print (cursor.fetchone()) cursor.scroll(1,"absloute") # 绝对位置,参照开始位置1 # cursor.scroll(1,"relative") # 相对位置 print

读懂MySQL执行计划

让人想犯罪 __ 提交于 2020-03-23 18:51:14
原文:https://mp.weixin.qq.com/s/-BlLvBKcF-yalELY7XkqaQ 前言 在之前的面试过程中,问到执行计划,有很多童鞋不知道是什么?甚至将执行计划与执行时间认为是同一个概念。今天我们就一起来了解一下执行计划到底是什么?有什么用途? 执行计划是什么? 执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。在MySQL中使用 explain 关键字来查看。如下所示: 1.查询t_base_user select * from t_base_user where name="andyqian"; 2.查看上述语句的执行计划 explain select * from t_base_user where name="andyqian"; 执行查看上述2语句后,我们可以得出以下执行计划 上面这个执行计划给到的信息是: 这是一个简单的SQL,全表扫描,共扫描1行,Using where条件在t_base_user表中筛选出记录。发现该语句并没有走索引,为什么是这样的呢?别急,我们紧接着看下一节。上面执行计划是什么意思呢?有什么参考价值呢? 读懂执行计划 通过上面,我们知道了什么是执行计划,也看到了执行计划到底是什么东西,现在我们来具体了解一下,MySQL执行计划中,每个属性代表的是什么意思? 我们一一来介绍

MySQL的explain

早过忘川 提交于 2020-03-23 18:46:59
Select_type:所使用的查询类型,主要有以下这几种查询类型。 DEPENDENT SUBQUERY:子查询内层的第一个SELECT,依赖于外部查询的结果集。 DEPENDENT UNION:子查询中的UNION,且为UNION中从第二个SELECT开始的后面所有SELECT,同样依赖于外部查询的结果集。 PRIMARY:子查询中的最外层查询,注意并不是主键查询。 SIMPLE:除子查询或UNION之外的其他查询。 SUBQUERY:子查询内层查询的第一个SELECT,结果不依赖于外部查询结果集。 UNCACHEABLE SUBQUERY:结果集无法缓存的子查询。 UNION:UNION语句中第二个SELECT开始后面的所有SELECT,第一个SELECT为PRIMARY。 UNION RESULT:UNION 中的合并结果。 Table:显示这一步所访问的数据库中的表的名称。 Type:告诉我们对表使用的访问方式,主要包含如下集中类型。 all:全表扫描。 const:读常量,最多只会有一条记录匹配,由于是常量,实际上只须要读一次。 eq_ref:最多只会有一条匹配结果,一般是通过主键或唯一键索引来访问。 fulltext:进行全文索引检索。 index:全索引扫描。 index_merge:查询中同时使用两个(或更多)索引,然后对索引结果进行合并(merge)

如果有一个特别大的访问量到数据库上,怎么做优化?主从复制、读写分离

余生颓废 提交于 2020-03-23 17:07:34
第一个就是使用优化查询的方法。这个在前期的内容中有具体说明,这里不再做说明。 第二、这里简要说明一个以下几个方法:    主从复制、读写分离、负载均衡    目前,大部分的主流关系型数据库都提供了主从复制的功能,通过配置两台(或多台)数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站可以利用数据库的这一功能, 实现数据库的读写分离,从而改善数据库的负载压力。 一个系统的读操作远远多于其写操作,因此写操作发向master,读操作发向slaves进行操作(简单的轮循算法来决定使用哪个slave)。   利用数据库的读写分离,web服务器在写数据的时候,访问著数据库(Master),主数据库通过主从复制机制将数据更新同步到从数据库(Slave),这样web服务器读数据的时候,就可以通过从数据库获得数据。这一方案使得在大量读操作的web应用可以轻松地读取数据,而主数据库也只会承受少量的写入操作,还可以实现数据热备份,可谓是一举两得的方案。 1.复制的基本原则    MySQL复制是异步的且串行化的;   每个Slave只有一个Master;   每个Slave只有一个唯一的服务器ID;   每个Master可以有多个Slave; 2.一主一从常见配置:   MySQL版本一致且后台以服务运行;   主从都配置在[mysqld]结点下,都是小写,主机修改my

MySql8新增用户

我怕爱的太早我们不能终老 提交于 2020-03-23 14:44:06
Mysql的版本是8.0.18,其他版本未验证 1. 新增用户 // 切换数据库到mysql mysql> use mysql // testUser:新增的用户名;localhost:仅本地访问,也可以是%(不限制)或者ip地址;123456:用户密码 mysql> create user 'testUser'@'localhost' identified by '123456'; 2. 刷新权限 mysql> flush privileges; 3. 赋予权限 mysql> grant all privileges on *.* to 'testUser'@'localhost' with grant option; 4. 查看 mysql> select Host,User from user; 来源: 51CTO 作者: pannijingling 链接: https://blog.51cto.com/1197822/2481013

MYSQL常见运算符和函数

最后都变了- 提交于 2020-03-23 13:02:45
字符函数 (1)CONCAT():字符连接 SELECT CONCAT(‘IMOOC’,’-‘,’ MySQL ’);//IMOOC-MySQL SELECT CONCAT (first_name,last_name) AS fullname FROM test; (2)CONCAT_WS():使用指定的分隔符进行字符连接,(第一个位置指定分隔符,后面的为分割的内容) SELECT CONCAT_WS(‘%’,’abc’,’def’); //第一个是指定的分隔符;//abc%def (3)FORMAT():数字格式化 SELECT FORMAT(123560.75,2); //123,560.75;第二个参数若为0(四舍五入),显示整数 (4)LOWER():转化小写 (5)UPPER():转换大写 SELECT UPPER(‘mysql’);//MYSQL (6)LEFT():获取左侧字符 (7)RIGHT():获取右侧字符 SELECT LEFT (‘MYSQL’,2); //MY SELECT LOWER(LEFT(‘mYsql’,2)); //函数嵌套;//my (8)LENGTH():取得字符串长度 LENGTH(‘MYSQL ’);//6;最后加了个空格 (9)LTRIM():清空字符串前面(左端)空格 (10)RTRIM():清空字符串末尾(右端)空格 (11