数据库主键

mysql JOIN关键字 语法

混江龙づ霸主 提交于 2019-12-05 04:19:14
mysql JOIN关键字 语法 作用: 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。 大理石量具 说明: 数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。 mysql JOIN关键字 示例 //列出所有人的定购 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName; 来源: https://www.cnblogs.com/furuihua/p/11905222.html

MySQL用B+树做索引

非 Y 不嫁゛ 提交于 2019-12-05 03:15:26
索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。 索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在mysql数据库中分三类: B+树索引、Hash索引、全文索引 我们今天要介绍的是工作开发中最常接触到innodb存储引擎中的的B+树索引。 要介绍B+树索引,就不得不提二叉查找树,平衡二叉树和B树这三种数据结构。B+树就是从他们仨演化来的。 二叉查找树 首先,让我们先看一张图  从图中可以看到,我们为user表(用户信息表)建立了一个二叉查找树的索引。图中的圆为二叉查找树的节点,节点中存储了键(key)和数据(data)。 键对应user表中的id,数据对应user表中的行数据。二叉查找树的特点就是 任何节点的左子节点的键值都小于当前节点的键值,右子节点的键值都大于当前节点的键值。 顶端的节点我们称为根节点,没有子节点的节点我们称之为叶节点。 如果我们需要查找id=12的用户信息,利用我们创建的二叉查找树索引,查找流程如下: 1.

搜索引擎1

时间秒杀一切 提交于 2019-12-05 02:20:36
lucene 和 es 的前世今生 lucene 是最先进、功能最强大的搜索库。如果直接基于 lucene 开发,非常复杂,即便写一些简单的功能,也要写大量的 Java 代码,需要深入理解原理。 elasticsearch 基于 lucene ,隐藏了 lucene 的复杂性,提供了简单易用的 restful api / Java api 接口(另外还有其他语言的 api 接口)。 · 分布式的文档存储引擎 · 分布式的搜索引擎和分析引擎 · 分布式,支持 PB 级数据 es 的核心概念 Near Realtime 近实时,有两层意思: · 从写入数据到数据可以被搜索到有一个小延迟(大概是 1s ) · 基于 es 执行搜索和分析可以达到秒级 Cluster 集群 集群包含多个节点,每个节点属于哪个集群都是通过一个配置来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常。 Node 节点 Node 是集群中的一个节点,节点也有一个名称,默认是随机分配的。默认节点会去加入一个名称为 elasticsearch 的集群。如果直接启动一堆节点,那么它们会自动组成一个 elasticsearch 集群,当然一个节点也可以组成 elasticsearch 集群。 Document & field 文档是 es 中最小的数据单元,一个 document 可以是一条客户数据

MySQL常用命令

二次信任 提交于 2019-12-04 20:37: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 库名 选项信息 -- 删除库 drop

数据库的三大范式

ε祈祈猫儿з 提交于 2019-12-04 20:17:31
第一范式:字段具有原子性,字段不可拆分。比如:海南省海口市。可以拆分成1、海南省,2、海口市。 第二范式:消除 非主键字段 对 主键字段 的部分函数依赖, 非主键字段 完全依赖于 主键字段 。 第三范式:消除 非主键字段 对 主键字段 的传递依赖, 非主键字段 唯一依赖于 主键字段 而不依赖于其他字段。 自创一句话记忆:原子完全唯一依赖。(原完唯依赖) 来源: https://www.cnblogs.com/oldpub-blog/p/11881364.html

@TableId

混江龙づ霸主 提交于 2019-12-04 18:56:29
描述:主键注解 属性 类型 必须指定 默认值 描述 value String 否 "" 主键字段名 type Enum 否 IdType.NONE 主键类型 # IdType 值 描述 AUTO 数据库自增 INPUT 自行输入 ID_WORKER 分布式全局唯一ID 长整型类型 UUID 32位UUID字符串 NONE 无状态 ID_WORKER_STR 分布式全局唯一ID 字符串类型 来源: https://www.cnblogs.com/qingmuchuanqi48/p/11878771.html

Mybatis通用Mapper介绍与使用

别来无恙 提交于 2019-12-04 11:35:16
转载于: https://blog.csdn.net/dwf_android/article/details/79359360 什么是通用Mapper 通用Mapper就是为了解决单表增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法。 如何使用 以MySQL为例,假设存在这样一张表: CREATE TABLE `test_table` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT '', `create_time` datetime DEFAULT NULL, `create_user_id` varchar(32) DEFAULT NULL, `update_time` datetime DEFAULT NULL, `update_user_id` varchar(32) DEFAULT NULL, `is_delete` int(8) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 主键是 id ,自增。下面以这张表为例介绍如何使用通用Mapper。 Maven依赖 <!--

MySQL数据库开发的36条原则

守給你的承諾、 提交于 2019-12-04 11:33:13
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/devcloud/article/details/100173405 欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003), 验证通过后,输入关键字“加群” ,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员,在开发过程中务必注意 总是在灾难发生后,才想起容灾的重要性; 总是在吃过亏以后,才记得曾有人提醒过。 一、核心原则 1.尽量不在数据库做运算 俗话说:别让脚趾头想事情,那是脑瓜子的职责 作为数据库开发人员,我们应该让数据库多做她所擅长的事情: 尽量不在数据库做运算 复杂运算移到程序端CPU 尽可能简单应用MYSQL 举例: 在mysql中尽量不要使用如:md5()、Order by Rand()等这类运算函数 2.尽量控制单表数据量 大家都知道单表数据量过大后会影响数据查询效率,严重情况下会导致整个库都卡住 一般情况下,按照一年内单表数据量预估: 纯INT不超过1000W 含CHAR不超过500W 同时要尽量做好合理的分表

堆组织表,索引组织表和索引聚簇表

南楼画角 提交于 2019-12-04 10:11:06
堆组织表,索引组织表和索引聚簇表 https://www.cnblogs.com/youngerger/p/8446399.html --- 堆组织表就不说了,其索引中记录了记录所在位置的rowid,查找的时候先找索引,然后再根据索引rowid找到块中的行数据 索引组织表,其行数据以索引形式存放,因此找到索引,就等于找到了行数据。 -- 堆组织表的数据是散放的,索引和表的数据是分离的 索引组织表的索引和数据是在一起的 -- 堆组织表的存储速度因为不用考虑排序, 所以存储速度会比较快. 但是要查找符合某个条件的记录, 就必须得读取全部的记录以便筛选. 而这个时候为了加快查询速度, 索引就出现了, 索引是针对少量特定字段的值拿出来进行排序存储, 并记录在表中的位置, 而因为索引是有序的, 所以就会很容易通过索引查询到具体的记录位置, 然后再根据记录位置直接从表中读取该记录. 同时因为索引的字段较少, 所以索引通常会比其基表小得多. 从上面通过索引访问表记录的方式可以看出, 当要访问的数据量较大时, 通过每一条记录的位置去访问原始记录, 每一条符合条件的记录都需要经过索引访问后再访问基表这样一个复杂的过程, 这会花费很多时间, 同样, 如果不经过索引而直接查询表, 也可能因为表字段太多, 记录较大的情况下把全部的数据读取进来, 这也会花费很多时间. 那怎么办呢? 这个时候就会想到,

MySQL数据库开发的36条原则

戏子无情 提交于 2019-12-04 09:10:12
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/devcloud/article/details/100173405 欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),验证通过后,输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员,在开发过程中务必注意 总是在灾难发生后,才想起容灾的重要性; 总是在吃过亏以后,才记得曾有人提醒过。 一、核心原则 1.尽量不在数据库做运算 俗话说:别让脚趾头想事情,那是脑瓜子的职责 作为数据库开发人员,我们应该让数据库多做她所擅长的事情: 尽量不在数据库做运算 复杂运算移到程序端CPU 尽可能简单应用MYSQL 举例: 在mysql中尽量不要使用如:md5()、Order by Rand()等这类运算函数 2.尽量控制单表数据量 大家都知道单表数据量过大后会影响数据查询效率,严重情况下会导致整个库都卡住 一般情况下,按照一年内单表数据量预估: 纯INT不超过1000W 含CHAR不超过500W 同时要尽量做好合理的分表