Mysql学习记录

什么是数据库
数据库 ( DataBase , 简称DB )

概念 : 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据 “仓库”

作用 : 保存,并能安全管理数据(如:增删改查等),减少冗余…

数据库总览 :

关系型数据库 ( SQL )

MySQL , Oracle , SQL Server , SQLite , DB2 , …
关系型数据库通过外键关联来建立表与表之间的关系
非关系型数据库 ( NOSQL ) not only

Redis , MongoDB , …
非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

DDL操作数据库
创建数据库
CREATE DATABASE 数据库名; -- 创建数据库

CREATE DATABASE 数据库名 SET GBK; -- 创建数据库并设置为gbk编码格式

CREATE DATABASE 数据库名 SET GBK COLLATE gbk_chinede_ci; -- 创建一个使用gbk字符集,并带校对规则的数据库

查询数据库

SHOW DATABASES; -- 查看当前数据库服务器中的所有数据库

SHOW CREATE DATABASE 数据库名; --查看创建数据库时的定义信息

删除数据库
DROP DATABASE 数据库名; -- 删除指定数据库

修改数据库

   ALTER DATABASE 数据库名 CHARACTER SET utf8; -- 将数据库的字符集改为utf8

在创建表格之前需要先选择表格创建的数据库,所以需要选择数据库:

USE 数据库名; -- 使用数据库

SELECT DATABASE(); -- 选中数据库

DDL操作数据表
创建数据表

语法: CREATE TABLE 表名(

字段1  字段类型,

字段2  字段类型,

...

字段n  字段类型

);

常用数据类型:

                     int:整型

                     double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;

                     char:固定长度字符串类型; char(10)  'abc       '

                     varchar:可变长度字符串类型;varchar(10) 'abc'

                     text:字符串类型;

                     blob:字节类型;

                     date:日期类型,格式为:yyyy-MM-dd;

                     time:时间类型,格式为:hh:mm:ss

                     timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss  会自动赋值

                     datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

MySQL索引类型

如左面的模块,共分为5类:

  • 唯一索引:就是索引列中的值必须是唯一的,但是允许出现空值。这种索引一般用来保证数据的唯一性,比如保存账户信息的表,每个账户的id必须保证唯一,如果重复插入相同的账户id时会MySQL返回异常。
  • 主键索引:是一种特殊的唯一索引,但是它不允许出现空值。
  • 普通索引:与唯一索引不同,它允许索引列中存在相同的值。例如学生的成绩表,各个学科的分数是允许重复的,就可以使用普通索引。
  • 联合索引:就是由多个列共同组成的索引。一个表中含有多个单列的索引并不是联合索引,联合索引是对多个列字段按顺序共同组成一个索引。应用联合索引时需要注意最左原则,就是Where查询条件中的字段必须与索引字段从左到右进行匹配。比如,一个用户信息表,用姓名和年龄组成了联合索引,如果查询条件是姓名等于张三,那么满足最左原则;如果查询条件是年龄大于20,由于索引中最左的字段是姓名不是年龄,所以不能使用这个索引。
  • 全文索引:前面提到了,MyISAM引擎中实现了这个索引,在5.6版本后InnoDB引擎也支持了全文索引,并且在5.7.6版本后支持了中文索引。全文索引只能在CHAR,VARCHAR,TEXT类型字段上使用,底层使用倒排索引实现。要注意对于大数据量的表,生成全文索引会非常消耗时间也非常消耗磁盘空间。

▌2.索引实现

如右面的模块,索引实现共分4种形式:

  • B+树实现:b+树比较适合用作'>'或'<'这样的范围查询,是MySQL中最常使用的一种索引实现。
  • R-tree:是一种用于处理多维数据的数据结构,可以对地理数据进行空间索引。不过实际业务场景中使用的比较少。
  • Hash:是使用散列表来对数据进行索引,Hash方式不像Btree那样需要多次查询才能定位到记录,因此Hash索引的效率高于B-tree,但是不支持范围查找和排序等功能.实际使用的也比较少。
  • FullText:就是我们前面提到的全文索引,是一种记录关键字与对应文档关系的倒排索引。

重点讲解二:MySQL调优

MySQL的调优也是研发人员需要掌握的一项技能

一般MySQL调优有图中的4个纬度:

  • 针对数据库设计、表结构设计以及索引设置纬度进行的优化;
  • 对业务中使用的SQL语句进行优化,例如调整Where查询条件;
  • 对mysql服务的配置进行优化,例如对链接数的管理,对索引缓存、查询缓存、排序缓存等各种缓存大小进行优化;
  • 对硬件设备和操作系统设置进行优化,例如调整操作系统参数、禁用Swap、增加内存、升级固态硬盘等等。

这四个纬度从优化的成本角度来讲,从左到右优化成本逐渐升高;从优化效果角度来看,从右到左优化的效果更高。

对于研发人员来说,前两个纬度与业务息息相关,因此需要重点掌握,后两个纬度更适合DBA进行深入学习,简单了解就好。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值