数据库主键

mysql--索引

痴心易碎 提交于 2019-12-02 05:07:28
转载自https://www.cnblogs.com/zslli/p/8946145.html InnoDb页存储结构 我们可能有很多熟悉的数据库储存引擎,比如说Inoodb,MyISAM,Memory。每一种储存引擎对于数据的持久化可能是不同的,比如说我们的Memory储存引擎的数据都是不会写进磁盘的,所有的数据是保存在内存中的,也就意味着如果我们的服务器进行重启以后,数据是不会被进行保存的。当然,因为MySQL数据库默认的储存引擎是使用的Inoodb,所以我们在这里是需要重点介绍这个储存引擎的。 Inoodb储存引擎是把数据储存在磁盘里面的储存引擎,它在内存和磁盘的交互中使用的是页这个数据单位。我们都知道一个事情就是我们在对磁盘进行访问的时候速度是非常慢的,所以我们肯定是不能接受一条数据一条数据的进行取用。所有数据划分为若干页,一个数据页是可以保存16kb的数据,也就是说我们每次在进行数据访问的时候是一次性的16kb数据。 InnoDb页中记录存储结构 数据页双向链表和页内记录单向链表 聚簇索引 索引的查找就是通过一层一层的定位来实现的,最上层的页我们称之为根节点,中间的我们称之为内节点,最底层的我们称之为叶子节点。我们就是通过页中的槽二分法快速的定位数据所在页或者组中,我们在进行遍历查找。 二级索引 二级索引和聚簇索引的区别就是叶子节点不包括完整的数据。

springboot整合mybatis通用Mapper

你。 提交于 2019-12-02 03:41:35
参考: https://blog.csdn.net/x18707731829/article/details/82814095 https://www.jianshu.com/p/6d2103451dcb SpringBoot整合MyBatis Generator可以帮助我们快速生成实体类、接口、mapper.xml文件,可以提高开发的效率,但是每次新增表都要执行一次Generator生成相应的代码,这样重复的操作生成增删查改重复的的代码,有没有一种通用的接口,不用生成mapper.xml文件,就可以调用通用接口的方法,实现单表的增删改查操作呢,这就是tk.mybatis.mapper 支持单表操作,不支持通用的多表联合查询。 通用mapper的作用:调用通用接口的方法,实现单表的增删改查操作,不需要写大量的sql语句在xml文件中 开发人员不需要编写sql语句,不需要在dao中增加方法,只要写好实体类,就能支持相应的增删改查方法 通用mapper详解 使用通用mapper,默认继承了如下方法 Select 方法:List<T> select(T record); 说明:根据实体中的属性值进行查询,查询条件使用等号 方法:T selectByPrimaryKey(Object key); 说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 方法:List

数据库学习笔记

跟風遠走 提交于 2019-12-02 02:19:35
数据库基础 知识预览 数据库的简介 MySQL 第一章数据库的简介 数据库 数据库(dataBase ,DB ) 是指长期存储在计算机内的,有组织,可共享的数据的集合。 数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。 数据库管理系统软件 数据库管理系统(Database Management System) 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS 。 它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。 用户通过DBMS访问数据库中的数据,数据库管理员也通过 dbms 进行数据库的维护工作。 它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。 大部分DBMS提供 数据定义语言 DDL (Data Definition Language ) 和数据操作语言 DML (Data Manipulation Language ) ,供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。 数据库管理系统是数据库系统的核心,是管理数据库的软件。 数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。 有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。

主键和索引的区别

萝らか妹 提交于 2019-12-02 02:08:44
1、应用范畴不同: 主键属于索引的一种。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。 2、种类不同: 根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。而,主键只是其中的一种。 3、创建方式不同: 当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。 由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。经常在WHERE子句中的列上面创建索引。 扩展资料: 索引的相关作用: 1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 3、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 4、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 来源: https://www.cnblogs.com/chuijingjing/p/11725235.html

MYSQL 基操

三世轮回 提交于 2019-12-01 23:34:19
传授有缘人 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- /* 数据库操作 */ ------------------ -- 查看当前数据库 select database(); -- 显示当前时间、用户名、数据库版本 select now(), user(), version(); -- 创建库 create database[ if not exists] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 show databases[ like 'pattern'] -- 查看当前库信息 show create database 数据库名 -- 修改库的选项信息 alter database 库名 选项信息 -- 删除库

数据库基础

拈花ヽ惹草 提交于 2019-12-01 20:04:23
数据库: 保存有组织的数据的容器。我们通过数据库软件(DBMS)来操作数据库这一容器。 表: 特定类型数据的结构化清单。 模式: 关于数据库和表的布局和特性的信息。定义数据的存储方式等。 数据分解: 将数据正确的分解为多个 列 ,每个列数据具有相同的数据类型。每个 记录 存在一 行 内。 主键: 一列,其值能唯一区分表中每一行。 主键使用好习惯: 主键应该总是定义;非空;不更新;不重用;不用可能会更改的列作为主键;可以联合多个列作为主键 SQL: (structured query lanauage)结构化查询语言。 来源: https://www.cnblogs.com/july23333/p/11715817.html

mysql 常用 sql 语句 - 快速查询

假装没事ソ 提交于 2019-12-01 17:57:35
Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互 1.1.1 mysql 连接 mysql.exe -hPup h:host, default: localhost P:port, default: 3306 u:username p:password(如果需要的话) eg:mysql.exe -hlocalhost -P3306 -uroot -p123456 1.1.2 mysql 客户端发送指令 1.1.3 服务器接收 sql 指令,处理并返回结果 1.1.4 客户端接收并显示结果 1.1.5 断开连接(释放资源,服务器并发限制) exit quit \q 1.2 mysql 数据库服务器 在刚学习的阶段,没有办法了解服务器内部的对象,只能粗略的去分析数据库服务器内部的结构 mysql 服务器内部对象分成了四层: 系统(DBMS)->数据库(DB)-> 数据表(TABLE)-> 字段(FIELD) 2.SQL 基本操作 SQL 基本操作根据操作对象分为三类:库操作,表操作(字段操作),数据操作 一个小操作: 注释: -- 注释,记住必须有空格在 -- 后面 # 注释 2.1.库操作 2.1.1 新增数据库 create database name [库选项]; 库选项:用来约束数据库,分为两个选项 字符集设定:charset

Mysql中的索引

末鹿安然 提交于 2019-12-01 17:13:19
1,什么是索引,为什么要使用索引? 索引是帮助Mysql高效获取数据的排好序的数据结构。建立索引可以帮助我们快速检索我们需要的信息,减少磁盘的I/O次数,加快检索速度。索引的数据结构包括:二叉树,红黑树,Hash表,B-树等。 2,数据查询的方式 二叉查找树的方式查找信息 普通情况下,在一个二叉树中查找到5非常快速。只需要2步,但在某些极端情况下,如对于顺序插入信息的二叉树,查找到我们需要的信息就非常麻烦了。 红黑树 红黑树是一种 自平衡二叉查找树 ,就是会自动平衡更新根节点和其它节点的位置,也就是说根节点和其它节点的位置是不固定,会根据插入的信息进行动态改变的。 按照1~5的顺序插入数据后,会重新排列分支节点的位置。 对于少量数据使用红黑树是完全可以的,但是一个项目的数据库中存储的数据都是10万条以上,再使用红黑树,树的度又会变得很大了。这个时候就可以使用B 树了。 B 树 B树是一种 多路自平衡搜索树 ,它是一种特殊的平衡二叉树,但是B书允许每个节点有更多的子节点。B树示意图如下: B树的特点: (1)所有键值分布在整个树中(2)任何关键字出现且只出现在一个节点中 (3)搜索有可能在非叶子节点结束(4)在关键字全集内做一次查找,性能逼近二分查找算法 比如我们想要找到主键为28的数据,过程如下: 1,根据根节点找到磁盘块1,进行一次I/O(磁盘的输入和输出)操作; 2

MySQL 数据库索引详解

◇◆丶佛笑我妖孽 提交于 2019-12-01 13:32:07
什么是索引 索引是对 数据库中一列或者多列的值进行排序的一中结构 ,使用索引可以快速访问数据库中表的特定信息。索引的一个主要的目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录的辅助数据结构。 简单来说索引就是数据库的目录。 索引有什么作用 索引的最大作用就是加快数据库的查询速度。 索引为什么会加快查询速度 数据库在执行一条SQL语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。但若是遇到大数据量的查询时,直接全表匹配的方式太慢了,这时候就需要用到索引。我们对某一字段增加索引,查询的时候就会先去索引列表中一次定位到特定值得行数,大大减少遍历匹配的行数,所以可以明显的增加查询的速度。 索引的种类 主键索引 :数据记录里面不能有null,数据内容不能重复,在一张表里面不能有多个主键索引。 普通索引 :使用字段关键字建立的索引,主要是提高查询速度。 唯一索引 :字段数据是唯一的,数据内容里面能否为null,在一张表里面,是可以添加多个唯一索引。 全文索引 :在早起版本中只有myisam引擎支持全文索引,在innodb5.6后也支持全文索引,在MySQL中全文索引不支持中文。我们一般使用sphinx集合coreseek来实现中文的全文索引。 索引的创建(索引的例子) 执行Create Table语句时可以创建索引

数据库分库分表思路

时光怂恿深爱的人放手 提交于 2019-12-01 13:17:39
转自: https://www.cnblogs.com/butterfly100/p/9034281.html 一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。 数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。 数据切分根据其切分类型,可以分为两种方式:垂直(纵向)切分和水平(横向)切分 1、垂直(纵向)切分 垂直切分常见有垂直分库和垂直分表两种。 垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。做法与大系统拆分为多个小系统类似,按业务分类进行独立划分。与"微服务治理"的做法相似,每个微服务使用单独的一个数据库。如图: 垂直分表是基于数据库中的"列"进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中。在字段很多的情况下(例如一个大表有100多个字段),通过"大表拆小表",更便于开发与维护,也能避免跨页问题