跟我学mysql
木村牧村
这个作者很懒,什么都没留下…
展开
-
深入理解MySQL索引原理和实现——为什么索引可以加速查询?
深入理解MySQL索引原理和实现——为什么索引可以加速查询?说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。”但是索引是怎么实现的呢?因为索引并不是关系模型的组成部分,因此...原创 2020-01-03 10:45:43 · 384 阅读 · 0 评论 -
子查询
一.子查询定义定义:子查询允许把一个查询嵌套在另一个查询当中。子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。子查询可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、join和union等;但是对应的外部查询必须是以下语句之一:select、insert、update、delete、set或 者do。...原创 2018-09-30 17:44:39 · 2362 阅读 · 0 评论 -
插入数据
1.向原表中某些字段中插入一条记录语法:insert into +表名(表中的字段,,)value(字段所对应的记录,,);mysql> insert into joke (gid,name) value(0,"joker");Query OK, 1 row affected (0.09 sec)2.向原表的字段中插入多条记录语法:insert into +表名(表中的字段,,)...原创 2018-10-09 18:16:22 · 3811 阅读 · 0 评论 -
更新和删除数据
1.DELETE 语句的基本格式如下所示DELETE FROM tbl_nameWHERE which rows to delete;其中,WHERE子句是可选的,它用于指定需要删除掉哪些行。如果没有WHERE 子句,那么将删除表里面的所有行。这意味着,越简单的DELETE语句越危险,例如下面的语句:DELETE FROM tbl_name它会彻底删除表里的内容,因此务必要小心使...原创 2018-10-09 18:27:19 · 204 阅读 · 0 评论 -
创建和操纵表
1.创建表MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。一般有两种创建表的方法:使用具有交互式创建和管理表的工具;表也可以直接用MySQL语句操纵。为了用程序创建表,可使用SQL的CREATE TABLE语句。值得注意的是,在使用交互式工具时,实际上使用的是MySQL语句。但是,这些语句不是用户编写的,界面工具会自动生成并执行相应的MyS...原创 2018-10-09 18:58:41 · 241 阅读 · 0 评论 -
使用视图
1.什么是视图通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。2.视图的特性视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟基本表一样,进行增删改查操作(ps:增删改操作有条件限制);3.视图的作用方便操作,特别是查询操作,减少复杂的...原创 2018-10-10 18:02:45 · 165 阅读 · 0 评论 -
高性能相关概念
mysql的逻辑架构1.读锁(Read Lock) /写锁(Write Lock)例子:读取邮箱信息并不麻烦,即使多个用户并发读取同一邮箱,也不会有什么问题。因为读操作不会造成任何修改,所以就不会出错。不过,假如一个程序正在读邮箱,另一个用户试图删除编号25的邮件,那将发生什么结果?结果可能是,某一正在读的用户报错退出,或者是他看到幅与邮箱的实际状态不符的错误视图。所以为了安全起见,即使读邮...原创 2018-10-26 13:57:24 · 681 阅读 · 0 评论 -
多版本并发控制MVCC
大多数MySQL的事务性存储引擎,例如InnoDB. Falcon 和PBXT,不是简单地使用行加锁的机制,而是选用一种叫做**多版本并发控制(MVCC, Mutiversion Concurrency Control)**的技术,和行加锁机制关联使用,以应对更多的并发处理问题。MVCC不是MySQL独有的技术,Oracle, PostgreSQL 及其他一些数据库 系统也使用同样的技术。可以将...原创 2018-10-26 14:53:26 · 1622 阅读 · 1 评论 -
Mysql的存储引擎介绍
1.前言mysql> show table status like 'user' ;+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+------------...原创 2018-11-01 18:07:38 · 168 阅读 · 0 评论 -
数据类型的优化
1.整数数字有两种类型:整数(Whole Number)和实数(Real Number)。如果存储整数,就可以使用这几种整数类型:TINYINT、SMALLINT、 MEDIUMINT、INT 或BIGINT,它们分别需要8、16、24、32 和64位存储空间。它们的范围为−2n−1到2n−1−1-2^{n-1}到2^{n-1}-1−2n−1到2n−1−1这里的n是所需存储空间的位数。...原创 2018-11-06 15:56:33 · 231 阅读 · 0 评论 -
索引基础
1.前言索引( Index)是帮助 MYSQL高效获取数据的数据结构。它对于高性能非常关健,但是人们通常会忘记或误解它,因此建立索引( dexing)是现实中性能问题的首要原因。素引( MYSQL中也叫“键(Key)")在数据越大的时候越重要。规模小、负载轻的数据库即使没有索引,也能有好的性能,但是当数据增加的时候,性能就会很快下降。理解索引如何工作的最简单的方式就是把索引看成本书。为了找到书...原创 2018-11-07 16:19:34 · 347 阅读 · 0 评论 -
高性能索引策略
1.隔离列如果在査询中没有隔离索引的列, MYSQL通常不会使用索引。“隔离”列意味着它不是表达式的一部分,也没有位于函数中。例如,下面的查询不能使用 actor id上的索引mysql> SELECT actor id FROM sakila. actor WHERE actor_id+1 = 5;应该简化WHERE子句的,这样就会把被索引的列单独放在比较运算符的一边 .下面是...原创 2018-11-08 17:08:39 · 198 阅读 · 0 评论 -
全文本搜索
1、启用索引MySQL支持几种基本的数据库引擎,MySQL最长用的两个引擎为:MyISAM和InnoDB:MyISAM支持全文本搜索,查询效率高;但局限在于不支持事务和外键;InnoDB支持事务和外键,和MyISAM各有优劣;与全文本搜索功能类似的有通配符和正则表达式匹配,但性能较低,通常会匹配表的所有行,而且这些搜索极少使用表索引,不能做到明确控制,且返回的结果不智能化;在使用全文本搜...原创 2018-10-08 19:40:06 · 311 阅读 · 0 评论 -
联结表
1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:1)LEFT JOI...原创 2018-10-08 19:18:08 · 230 阅读 · 0 评论 -
计算
一、计算字段存储在数据库表中的数据一般不是应用程序所需要的格式1、如果想在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的字段中。2、城市、州和邮编存储在不同的列中,但邮件标签打印程序却需要把它们作为一个恰当格式的字段检索出来。3、列数据是大小写混合的,但是报表程序需要的所有数据按大写表示出来。4、物品订单的总价格一般是不存储到数据中的,但是我们需要。我们需要计算...原创 2018-09-26 14:10:27 · 206 阅读 · 0 评论 -
使用存储过程
1.什么是存储过程简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;2.有哪些特性有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;函...原创 2018-10-11 13:50:50 · 288 阅读 · 0 评论 -
检索数据
检索数据建表,插入数据:CREATE TABLE `sys_log` ( `id` int(64) NOT NULL COMMENT '编号', `type` char(1) DEFAULT '1' COMMENT '日志类型', `title` varchar(255) DEFAULT '' COMMENT '日志标题', `create_by` varchar(64) DE...原创 2018-09-21 13:37:41 · 580 阅读 · 0 评论 -
使用游标
1.什么是游标游标是一个存储在MySQL服务器上的数据库查询,它不是一条select语句,而是被该语句所检索出来的结果集。2.使用游标在介绍如何创建游标之前,先说明下如何使用游标。使用游标涉及几个明确的步骤。1、在能够使用游标前,必须先定义它。这个过程实际上是没有检索数据的,它只是定义要使用的select语句。2、一旦你定义了游标后,必须打开游标以供使用。这个过程用前面定义的selec...原创 2018-10-11 19:55:23 · 392 阅读 · 0 评论 -
通配符和正则表达式
通配符过滤1.like操作符2.百分号通配符(%)在搜索串中,%表示任何字符出现的任意次数。%不能匹配null,如like ‘jet%’表示以jet开头的后面不管多少字符的匹配。如果区分大小写查询,使用binary:select * from `test` where binary `name` = "Test"3.下划线通配符(_)下划线只匹配单个字符而不是多个字符,like ‘...原创 2018-09-21 16:11:39 · 29065 阅读 · 0 评论 -
数据处理函数
1.文本处理函数比如UPPER函数是将小写变成大写。mysql> SELECT request_uri,UPPER(request_uri) from sys_log;+---------------------------+---------------------------+| request_uri | UPPER(request_uri) ...原创 2018-09-27 19:52:57 · 805 阅读 · 0 评论 -
使用触发器
1.什么是触发器触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一条数...原创 2018-10-13 16:02:37 · 381 阅读 · 0 评论 -
管理事务处理
1.什么是事务管理可以把一系列要执行的操作称为事务,而事务管理就是管理这些操作要么完全执行,要么完全不执行(很经典的一个例子是:A要给B转钱,首先A的钱减少了,但是突然的数据库断电了,导致无法给B加钱,然后由于丢失数据,B不承认收到A的钱;在这里事务就是确保加钱和减钱两个都完全执行或完全不执行,如果加钱失败,那么不会发生减钱)。事务管理的意义:保证数据操作的完整性。mysql中并...原创 2018-10-13 17:00:08 · 199 阅读 · 0 评论 -
全球化和本地化
1.什么是字符集?什么是校对集?字符集是字母和符号的集合,每一个字符编码都由字符集决定。校对集是字母和符号的校对标准。校对集影响着字符的排序和搜索。2.查看字符集和校对集:查看mysql支持的字符集:show character set;Charset:字符集Description:描述Default collation:默认字符集Maxlen:最大字符长度mysql&g...原创 2018-10-13 18:53:37 · 945 阅读 · 0 评论 -
安全管理
1.访问控制MYSQL所有的用户账号信息都存储在一个名为MYSQL的数据库中,这个数据库里有一个名为user的数据表,其包含了所有的用户账号。如图在对MYSQL的日常管理中,为避免恶意用户冒名顶替root账号操纵数据库,通常需要创建一系列具备适当权限的账号,而尽可能减少或者不用root账号登陆系统,以此来确保数据的安全访问。mysql> select user from mys...原创 2018-10-13 19:36:28 · 275 阅读 · 0 评论 -
汇总数据
1.聚集函数在一个行的集合(一组行)上进行操作,对每个组给一个结果。常用的组函数:[AVG(distinct] expr)求平均值[COUNT({*|distinct] } expr)统计行的数量[MAX(distinct] expr)求最大值[MIN(distinct] expr)求最小值[SUM(distinct] expr)求累加和①...原创 2018-09-29 20:01:46 · 492 阅读 · 0 评论 -
数据库命令行语句
数据库命令行语句1.显示数据库mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sakila ...原创 2018-09-20 18:05:58 · 2106 阅读 · 0 评论