mysql高级内容学习总结】的更多相关文章

创建索引 create [unique] index indexname on tablename(columnname(length)) alter tablename add [unique] index [indexname] on (columnname(length)) '删除' drop index [indexname] on tablename '显示表的所有索引' show index from tablename '该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NU…
Mysql高级操作 索引概述: 索引是高效获取数据的数据结构 索引结构: B+Tree() Hash(不支持范围查询,精准匹配效率极高) 树的区别: 二叉树:可能产生不平衡,顺序数据可能会出现链表结构 平衡二叉树:插入需要自旋,性能根据层级而定,性能不稳定 b+tree: 主键聚簇叶子节点存放数据,非叶子节点存放索引, 二级索引非叶子节点存放索引,叶子节点存放主键 索引优缺点: 优点: 大大加快查询速度 使用分组和排序时候可以显著减少分组和排序时间 唯一索引可以保证字段唯一 可以加速表与表之间的…
一. 简介 实体与实体之间有3种对应关系,这些关系也需要存储下来 在开发中需要对存储的数据进行一些处理,用到内置的一些函数 视图用于完成查询语句的封装 事务可以保证复杂的增删改操作有效 二. 关系 创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生表引用过来,关系也是一条数据:根据范式要求应该存储学生的编号,而不是学生的姓名等其它信息 同理,科目表也是关系列,引用科目表中的数据 创建表的语句如下 create…
MyISAM 和 MEMORY 存储引擎支持表级锁定(table-level locking),InnoDB 存储引擎支持行级锁定(row-level locking),BDB 存储引擎支持页级锁定(page-level locking). 锁定语句 MySQL 的锁定语句主要有两个 Lock 和 unLock,Lock Tables 可用于锁定当前线程的表,就跟 Java 语法中的 Lock 锁的用法是一样的,如果表锁定,意味着其他线程不能再操作表,直到锁定被释放为止. ========>lo…
前言:本来小表驱动大表的知识应该在前面就讲解的,但是由于之前并没有学习数据批量插入,因此将其放在这里.在查询的优化中永远小表驱动大表. 1.为什么要小表驱动大表呢 类似循环嵌套 for(int i=5;.......) { for(int j=1000;......) {} } 如果小的循环在外层,对于数据库连接来说就只连接5次,进行5000次操作,如果1000在外,则需要进行1000次数据库连接,从而浪费资源,增加消耗.这就是为什么要小表驱动大表. 2.数据准备 根据MySQL高级知识(十)—…
前言:前面学习了表锁的相关知识,本篇主要介绍行锁的相关知识.行锁偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度小,发生锁冲突的概率低,但并发度高. 0.准备 #1.创建相关测试表tb_innodb_lock,注意数据库引擎为InnoDB. drop table if exists test_innodb_lock; CREATE TABLE test_innodb_lock ( a ), b ) ) ENGINE INNODB DEFAULT charset = utf8; ,'…
前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析. 0.准备 首先创建三张表:tb_emp(职工表).tb_dept(部门表)和tb_desc(描述表) 1)tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABLE `tb_emp` ( `id` ) NOT NULL AUTO_INCREMENT, `username` ) NOT NULL, `deptid` int(11) NOT NULL,…
前言:MySQL高级知识主要来自尚硅谷中MySQL的视频资源.对于网上视频资源来说,尚硅谷是一个非常好的选择.通过对相应部分的学习,笔者可以说收益颇丰,非常感谢尚硅谷. 1.关于MySQL的一些文件 MySQL如何安装.如何配置自启动,这里不进行讲述,可自行搜索相关安装教程进行处理.这里主要介绍MySQL的主要配置文件. ①二进制日志log-bin:用于主从复制. ②错误日志log-error:默认关闭,记录严重的警告和错误信息,每次启动和关闭的详细信息等. ③查询日志show-log:默认关闭…
七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等).以下为书籍简介,送书福利请见文末哦~ 1. 书名:玩转Python网络爬虫出版单位:清华大学出版社 内容提要: 本书站在初学者的角度,从原理到实践,循序渐进地讲述了使用Python开发网络爬虫的核心技术.全书从逻辑上可分为基础篇.实战篇和爬虫框架篇三部分.基础篇主要介绍了编写网络爬虫所需的基础知识…
上一篇文章<万字总结:学习MySQL优化原理,这一篇就够了!>文末给大家留有两个开放的问题: 有非常多的程序员在分享时都会抛出这样一个观点:尽可能不要使用存储过程,存储过程非常不容易维护,也会增加使用成本,应该把业务逻辑放到客户端.既然客户端都能干这些事,那为什么还要存储过程? JOIN本身也挺方便的,直接查询就好了,为什么还需要视图呢? 本文会试着回答这两个问题,希望能给你一些参考. 现在可以思考一个问题,如果数据量非常大的情况下,您根据业务选择了合适的字段,精心设计了表和索引,还仔细检查了…
大家好,我是melo,一名大二后台练习生,大年初三,我又来充当反内卷第一人了!!! 专栏引言 MySQL,一个熟悉又陌生的名词,早在学习Javaweb的时候,我们就用到了MySQL数据库,在那个阶段,MySQL对我们来说似乎只是一个存储数据的好东西,存储时一股脑往里边塞,查询时也是盲目的全表查询(不带一点点优化).​ 我们总是自欺欺人的觉得,我们通过其他方面来优化就好了阿,迟迟不愿面对MySQL高级,转而学习一些看似更为"高级"的东西,学Redis,来分担MySQL的压力,学MyCat…
MySQL高级 推荐阅读: 锁:https://www.cnblogs.com/zwtblog/tag/锁/ 数据库:https://www.cnblogs.com/zwtblog/tag/数据库/ 函数 聚集函数一般用作统计,包括: count([distinct]*) 统计所有的行数(distinct表示去重再统计,下同) count([distinct]列名) 统计某列的值总和 sum([distinct]列名) 求一列的和(注意必须是数字类型的) avg([distinct]列名) 求一…
大家好,我是melo,一名大二后台练习生,大年初三,我又来充当反内卷第一人了!!! 专栏引言 MySQL,一个熟悉又陌生的名词,早在学习Javaweb的时候,我们就用到了MySQL数据库,在那个阶段,MySQL对我们来说似乎只是一个存储数据的好东西,存储时一股脑往里边塞,查询时也是盲目的全表查询(不带一点点优化).​ 我们总是自欺欺人的觉得,我们通过其他方面来优化就好了阿,迟迟不愿面对MySQL高级,转而学习一些看似更为"高级"的东西,学Redis,来分担MySQL的压力,学MyCat…
Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需要指明类型,而如果没有返回值可以不写->(),返回值只需要写返回类型,如果写了返回名称,可以在函数调用后的值用点语法访问 1.3 在参数名称前可以加上外部参数名,调用的时候就可以带上它了,如果外部参数名和内部参数名相同则可以直接在内部参数名前加#即可 1.4 如果跟参数设置一个默认值,则swift会…
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需要指明类型,而如果没有返回值可以不写->(),返回值只需要写返回类型,如果写了返回名称,可以在函数调用后的值用点语法访问 1.3 在参数名称前可以加上外部参数名,调用的时候就可以带上它了,如果外部参数名和内部参数名相同则可以直接在内部参数名前加#…
PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更新数据库中的老网址,如果一个一个修改,很不方便,所以开发此源码,供大家学习或使用: //2.源码开发者:杨波: //3.源码开发者联系QQ:773003231: //4.源码开发者博客:http://www.cnblogs.com/phpyangbo/: //5.源码开放性:任何人都可以随意更改或使用本源…
数据库基础概述  大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以将数据库分为企业版数据库(商业化)及社区版开源数据库:企业版数据库属于收费型软件,需要购买License或者Key,否则会在使用中受限于用户或数据大小的控制:开源数据库属于免费公开的类型,使用者不用花钱购买许可就可以使用.  像Oracle(甲骨文)企业版.SQL server(微软).MySQL(…
原文:Mysql高级之索引 索引:是针对数据所建立的目录. 作用: 可以加快查询速度 负面影响: 降低了增删改的速度. 索引的创建原则: 1:不要过度索引 2:在where条件最频繁的列上加.在重复度高的列上不加,比如性别男女: 3:尽量索引散列值,过于集中的值加索引意义不大. 索引的类型 普通索引: index 仅仅是加快查询速度. 唯一索引: unique index 行上的值不能重复 主键索引: primary key 不能重复. 主键必唯一,但是唯一索引不一定是主键. 一张表上,只能有一…
原文:Mysql高级之主从复制 主从复制不就是多台服务器嘛!,一个改变另一个也改变啦,内容其实都一样! 原理: 对数据库进行操作会生成一个文件,binlog(二进制文件),从服务器配置relaylog文件,用来读取master里面binlog(有必要开启binlog,相当于备份),当然要有权限读取是吧,这就需要用到上次的权限配置啦!和普通登录没什么差别. 主做出什么动作,从也做出什么动作. 这时就需要注意主配置文件里面binlog-format ,里面值为row,二进制记录是磁盘变化:值为sta…
mySQl数据库的学习笔记... ------------------ Dos命令--先在记事本中写.然后再粘贴到Dos中去 -------------------------------- mySQl数据库的学习笔记1.单表查询:查询所有字段:查询指定字段:Where条件查询:带IN的关键字查询:带Between End 的范围查询:带Like的模糊查询:空值查询:带AND的多条件查询:带OR的多条件查询:Distinct去重复查询:对查询结果进行排序:Grop By分组查询:Limit分页查…
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY(f_id)); 插入内容 ,'apple',5.2); ,'blackberry',10.2); ,'orange',11.2); ,'melon',8.2); ,'banana',10.3); ,'grape', 5.3); ,'coconut',9.2); ,'cherry',3.2); ,'a…
前言:本章主要讲解MySQL主从复制的操作步骤.由于环境限制,主机使用Windows环境,从机使用用Linux环境.另外MySQL的版本最好一致,笔者采用的MySQL5.7.22版本,具体安装过程请查询相关资料. 1.主从复制的基本原理 slave会从master读取binlog来进行数据同步.主要有以下三个步骤: ①master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件(binary log events). ②slave将master的binary log…
前言:锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU.RAM.I/O等)的争用外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂. 1.锁的分类 #1.从对数据操作的类型来分 读锁(共享锁)和写锁(排它锁) #2.从对数据操作的粒度来分 表锁和行锁 2.表锁(偏读) 特点:偏向MyISAM存储引擎…
前言:全局查询日志用于保存所有的sql执行记录,该功能主要用于测试环境,在生产环境中永远不要开启该功能. 1.如何开启 #1.通过my.cnf配置开启该功能. 注:对my.cnf文件配置后,需重启mysql. ①通过命令查看全局查询日志是否开启成功. ②查看全log_globalquery.log文件中的内容. 该log文件记录执行过的sql语句. #2.通过命令开启该功能. 通过以上配置,执行过的sql语句将会记录到mysql库中general_log表里. 2.总结 ①通过命令方式开启该功能…
前言:Show Profile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具,可用于sql调优的测量.默认情况下处于关闭状态,并保存最近15次的运行结果. 1.分析步骤 #1.开启Show Profile功能,默认该功能是关闭的,使用前需开启. #2.根据MySQL高级知识(十)——批量插入数据脚本中的数据脚本向tb_emp_bigdata表中插入50w条数据.然后执行如下查询语句: limit ; ; #3.通过show profiles查看结果. #4.使用sho…
前言:使用脚本进行大数据量的批量插入,对特定情况下测试数据集的建立非常有用. 0.准备 #1.创建tb_dept_bigdata(部门表). create table tb_dept_bigdata( id int unsigned primary key auto_increment, deptno mediumint unsigned , dname ) not null default '', loc ) not null default '' )engine=innodb default…
前言:慢查询日志是MySQL提供的一种日志记录,它记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的sql语句,该sql语句会被记录到慢查询日志中.慢查询日志主要与explain进行联合分析. 1.如何开启慢查询日志 默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数.如果不是调优需要,一般不建议开启该参数,因为开启慢查询日志或多或少会带来一定的性能影响. #1.首先查看慢查询日志是否开启. 注:Value为OFF表示关闭,笔者已…
前言:在使用order by时,经常出现Using filesort,因此对于此类sql语句需尽力优化,使其尽量使用Using index. 0.准备 #1.创建test表. drop table if exists test; create table test( id int primary key auto_increment, c1 ), c2 ), c3 ), c4 ), c5 ) ) ENGINE=INNODB default CHARSET=utf8; insert into te…
前言:该篇随笔通过一些案例,对索引相关的面试题进行分析. 0.准备 #1.创建test表(测试表). drop table if exists test; create table test( id int primary key auto_increment, c1 ), c2 ), c3 ), c4 ), c5 ) ) ENGINE=INNODB default CHARSET=utf8; insert into test(c1,c2,c3,c4,c5) values('a1','a2','…
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABLE `tb_emp` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `age` ) NOT NULL, ) NOT NULL, email varchar(20), PRIMARY KEY (`id`) ) ENGINE=InnoDB DE…