首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MYSQL必知必会笔记

数据库软件应称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器) (table)是某种特定类型数据的结构化清单 (数据库的每个都有一个名字,用来标识自己,此名字是唯一的) 模式...(schema)关于数据库和的布局及特性的信息 列(column)一个字段。...每个列都有相应的数据类型,用来定义列可以存储的数据种类 行 的数据是按行存储的,所保存的每个记录存储在自己的行内 主键(primary key)一列(或一组列),其能够唯一区分的每一行...MySQL命令 3、使用MySQL 常用命令: use database 选择数据库 show databases 显示数据库 show tables 显示数据库里的 show clumns...= 不等于 < 小于 <= 小于等于 > 大于 >= 大于等于 between 在指定的两之间 检查单个 不匹配检查 范围检查 空检查 AND 操作符 OR 操作符 IN

98920

你真的会玩SQL吗?表表达式,排名函数

表表达式 期待单个的地方可以使用标量子查询 期待多个的地方可以使用多值子查询 在期待出现的地方可用子查询或表表达式 1.派生查询表达式派生出虚拟结果的表表达式,派生的存在范围只是外部查询...RANK 果有同时撞线的情况发生应该怎么名次呢?例如A第一个撞线,B和C同时第二撞线,D第三撞线,如果我们想把D的名次为第4名应该怎么处理呢?就是说不计顺序名次,人数。...在order by子句中定义的列上,如果返回一行数据与另一行具有相同的,rank函数将给这些行赋予相同的排名数值。在排名的过程,保持一个内部计数值,当值有所改变时,排名序号将有一个跳跃。...,Ranking列将跳跃到正确的排名数值。...DENSE_RANK A第一个撞线,B和C同时第二撞线,D第三撞线,如果我们想把B和C的名次位第2名,D的名次为第3名应该怎么处理呢?就是说考虑并列名次。

1.9K90
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL DQL 数据查询

对于指定的每个,您可以选择指定一个别名。...(或两者都有)在这种情况下,列出的分区中选择行,而忽略表的任何其他分区。...4.WHERE 子句 如果给定 WHERE 子句,则指示行必须满足的一个或多个条件才能被选中。where_condition 是一个表达式,对于要选择的每一行,其计算结果为 true 才会被选择。...一个参数,表示返回记录行的 Top 最大行数,起始偏移量默认为 0。 返回从起始偏移量开始,返回剩余所有的记录,可以使用一些很大的第二参数。检索所有第 96 行到最后一行。...MySQL 规定,当非聚合函数的列不存在于 GROUP BY 子句中,则选择每个分组的第一行。 (3)COUNT DISTINCT 统计符合条件的记录数量。

22820

mysql数据迁移hbase问题

):     (1).system: 仅有一行记录,这是const的一个特例。    ...(如上面的查询)     (3).eq_ref: 对于每个来自于前面的的行组合,读取一行。...例如:select * from A,B where A.id=B.id,如果id在B是unique或primary key,会返回这个类型。它是说对于A的每一行,在B读取符合记录的一行。...可以替换IN子查询,但适合子查询的非唯一索引。     (9).range: 检索给定范围的行,使用一个索引来选择行。key列显示使用了哪个索引。key_len包含所使用索引的最长关键元素。...你可以通过增加更多的索引来避免ALL,使得行能从早先的基于常数值或列被检索出来。

1.7K50

什么是 MySQL 索引?

大白话意思是索引的作用相当于图书的目录,可以根据目录的页码快速找到所需的内容。 一个索引是存储的一个特定列的数据结构。索引是在的列上创建。...要记住的关键点是索引包含一个列的,并且这些存储在一个数据结构。请牢记这一点:索引是一种数据结构。...B+TREE改进点及优势所在: - 仍然是N叉树,层级小,非叶子节点不再存储数据,数据存储在同一层的叶子节点上,B+树根到每一个节点的路径长度一样,而B树不是这样 - 叶子之间,增加了链表(图中红色箭头指向...cardinality基数值为4,因为的组合为(11),(1 2),(2 1),(2 2) - 如果对A、B、C做复合索引,则它的cardinality基数值为8 当有多个索引可用时,mysql会自动依据...查询的语句远远大于DML的语句,为一个(比如千万级数据)新建索引时是一个需要特别慎重的事情,经常出现“翻车”导致“车毁人亡”的事故,为什么?

1.3K10

SQL优化完整详解

NOT NULL,或者使用一个特殊的0,-1作为默 认。...很多时候用 exists 代替 in 是一个好的选择: select num from a where num in(select num from b) 用下面的语句替换:...3、 table: 显示这一行的数据是关于哪张的 4、 type: type:连接使用了何种类型,它在 SQL优化一个非常重要的指标,最好到最差的连接类型为是:system > const...可以为相关的域WHERE语句中 选择一个合适的语句 6、key : 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL选择优化不足的索引 。...Range checked for each Record(index map:#) 没有找到理想的索引,因此对于从前面来的每一个行组合,MYSQL检查使用哪个索引,并用它来返回行。

1.2K40

一篇文章搞懂数据仓库:三种事实(设计原则,设计方法、对比)

粒度是一个订单一行数据,创建订单时间,付款时间,发货时间,收货时间,分别作为一个字段,便于计算不同业务过程的时间间隔。...,即使存在冗余,由于事实通常是数字型,存储开销不会太大; 原则 2:选择与业务过程相关的事实 ,订单的下单这个业务过程,事实不应该存在支付金额这个表示支付业务过程的事实; 原则 3:分解不可加性事实为可加的组件...,订单的优惠率,应分解为订单原价金额与订单优惠金额两事实存储在事实; 原则 4:在选择维度和事实之前必须先声明粒度 粒度用于确定事实一行所表示业务的细节层次,决定了维度模型的扩展性;...3 事实,应该采用统一的计量单位,统一为元或者分,以方便使用; 原则 7:对事实的 null 要处理 原因:在数据库,null 对常用数字型字段的 SQL 过滤条件都不生效;大于、小于、...; 选择 “买家付款” 这个业务过程,则事实类型应为包含买家付款这一个业务过程的 “单事务事实”; 选择了所有 4 业务过程,并且需要分享各业务过程的时间间隔,则事实类型应为包含了所有

5.3K21

115道MySQL面试题(含答案),从简单到深入!

主键(Primary Key)是中用于唯一标识每条记录的列或列的组合。一个只能有一个主键,且主键列的必须是唯一的,不允许为NULL。...如果一个查询的所有列都包含在索引,那么MySQL可以直接索引读取数据,提高查询效率。...MySQL优化器是数据库管理系统一个组件,负责分析和选择执行SQL查询的最佳方式。它考虑不同的执行计划,索引的使用、联接的顺序、数据检索方法等,并选择成本最低的执行计划。...它确保一个的列必须在另一个的主键或唯一键列存在。这有助于维护数据的完整性和一致性。...MySQL是如何处理子查询的?MySQL处理子查询的方式取决于子查询的类型和上下文。子查询可以是标量子查询(返回单一)、行子查询(返回一行多列)或子查询(返回一个完整的结果集)。

12110

DBA-MySql面试问题及答案-上

在模式具有一个直接量前缀时,索引也用于 LIKE 运算。如果只将某个列用于其他类型的运算时( STRCMP( )) ,对其进行索引没有价值。 13.MySql有哪些索引?...普通索引:仅加速查询 唯一索引:加速查询 + 列唯一(可以有null) 主键索引:加速查询 + 列唯一(不可以有null)+ 只有一个 组合索引:多列组成一个索引,专门用于组合搜索,其效率大于索引合并...NULL是没有,,它不是空串。如果指定’'(两单引号,其间没有字符),这在NOT NULL列是允许的。空串是一个有效的,它不是无。...,range,index,ALL 1、system 只有一行数据或者是空,这是const类型的一个特例。...十、Extra 该列包含MySQL解决查询的详细信息,有以下几种情况: Using where:列数据是仅仅使用了索引的信息而没有读取实际的行动的返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

29620

MySQL行格式原理深度解析

MySQL的行格式(Row Format)是指存储在数据库的数据的物理格式。它决定了数据是如何在磁盘上存储的,以及如何在查询时被读取和解析的。...二、MySQL中常见的几种行格式的详细介绍 MySQL 的行格式是指一行的存储格式,包括数据、元数据、版本信息、行头等。...如果M的小于或等于255,则使用一个字节来表示长度;如果M的大于255,则使用两个字节。...对于允许NULL的列,InnoDB会为它们分配一个二进制位,这些位组合在一起形成了NULL列表。这个列表用于跟踪每一行哪些列的是NULL。...二进制位的排列是逆序的,这意味着的第一列(如果它允许NULL)将对应于列表的最后一个二进制位,而最后一列将对应于第一个二进制位。

48110

kettle学习【大牛经验】

3.转换的工作 新建的转换:job需引用该转换文件 加入我们现在要同步MySQL的一张。在转换要有输入和输出。 ?...作业说明:生成 100 随机数,随机数取值于[0,100)之间, 计算小于等于 50 的随机数个数和 大于50 的随机数个 数。...并把这两统计数字放在数据库一行的两列, 即输出的结果有一行一行包括两列,每列是一个。...第一步:生成随机数(输入-->生成随机数;需要生成100随机数,右击控件,选择"改变开始开始...数量"为100) ? 第二步:增加常量(转换-->增加常量;给变量取名称,类型和。) ?...补充:如果觉得kettle发送的正文信息太多,可以配置邮件信息发送邮件注释(注释信息需要自己写,如果是动态的话需要开发) ?

4.4K21

MySQL入门基础教程大全

◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是必须有一个主键;二是没有包含在主键的列必须完全依赖于主键,而不能依赖于主键的一部分。...不遵循1NF 不遵循2NF 不遵循3NF 最终 9 E-R模型 https://www.draw.io/ E表示entry,实体,设计实体就像定义一个类一样,指定哪些方面描述对象,一个实体转换为数据库一个...这种关系一般有三种: 1-1 1-n n-m[ 多对多一般表现为2 1对多 ] 实体A对实体B为1对1,则在A或B创建一个字段,存储另一个的主键值 实体A对实体B为1对多:在B创建一个字段...、多表查询] 当查询结果的列来源于多张时,需要将多张连接成一个大的数据集,再选择合适的列返回 mysql支持三种类型的连接查询,分别为: 内连接查询(inner join) 查询的结果为两匹配到的数据...on a.id=b.sid where id=101; # 上面语句因位该学生在学生student中有数据,而成绩没有数据,所以使用内连接,连查询的结果是 Empty set (0.00 sec

1.5K11

python第十二周:MySql

这说明它们没  有字符集,并且排序和比较基于列字节的数值。 *BLOB是一个二进制大对象,可以容纳可变数量的数据。...默认为0 *可以使用limit属性来限定返回的记录条数 例如:学生查询2号id开始的5条记录 ? ?...=B)返回true > 大于号,检测左边的是否大于右边的, 如果左边的大于右边的返回true (A>B)返回true < 小于号,检测左边的是否小于右边的, 如果左边的小于右边的返回true...(A<B)返回true >= 大于等于号,检测左边的是否大于或等于右边的, 如果左边的大于或等于右边的返回true (A>=B)返回true <= 小于等于号,检测左边的是否小于于或等于右边的...单列索引:一个索引包含一个列,一个可以有多个单列索引,但不是组合索引。

1.3K30

Mysql 架构和索引

整数优于字符串),选择mysql内建时间类型而不是字符串,选择整数而不是字符串来保存IP 尽量避免使用NULL:任何包含null的列都将不会被包含在索引。...可以在其它B-Tree索引上建立自己的Hash索引:增加一列被索引的列(作为Hash的key),该列允许一定得碰撞,需要一个hash函数(CRC32),不应该使用强加密函数(SHA1 MD5等,碰撞低但是费空间...由于只有一行记录,在余下的优化程序里该行记录的字段可以被当作是一个恒定。const查询起来非常快,因为只要读取一次!...varchar需要额外的1~2字节(貌似一直是2) 同时还需要考虑所使用的字符集,不同的字符集,gbk编码的为一个字符2字节,utf8编码的一个字符3字节 ref 显示了哪些字段或者常量被用来和...key配合查询记录出来。

1.4K90

MySQL(二)数据的检索和过滤

使用频率最高的SQL语句应该就是select语句了,它的用途就是从一个或多个检索信息,使用select检索数据必须给出至少两条信息:想选择什么,以及什么地方选择 一、检索数据 1、检索单个列 select...column from table; 该SQL语句的检索结果将返回的所有行,数据没有过滤(过滤将得出结果集的一个子集),也没有排序(没有明确排序查询结果,则返回数据的顺序没有特殊意义,只要返回相同数目的行...column from table limit X,Y; limit X, Y告诉MySQL返回行X开始的Y行;X为开始位置,Y为要检索的行数(limit带一个总是一行开始,给出的数为返回的行数...;带两可以指定行号为第一个的位置开始) 检索出来的第一行为行0而不是行1,因此,limit1,1将检索出第二行而不是第一行(在行数不够时,MySQL返回能返回的最大行数) 6、使用完全限定的名...table where column = N; 该语句的意思为table筛选出column=N的行;采用了最简单的相等测试,检查一个列是否具有指定的据此进行过滤 如果同时使用order by和

4.1K30

MySQL 索引及查询优化总结

该sql使用了索引index_title,且是一个常数扫描,根据索引扫描了一行。 比起未加索引的情况,加了索引后,查询效率对比非常明显。...单列索引,即一个索引包含单个列,一个可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。...记住:一个只能有一个主键。 (2) 唯一索引 UNIQUE 唯一索引列的必须唯一,但允许有空。如果是组合索引,则列的组合必须唯一。...可以在创建的时候指定,也可以修改结构,: ALTER TABLE table_name ADD FULLTEXT (column) 2、索引结构及原理 mysql普遍使用B+Tree做索引,但在实现上又根据聚簇索引和非聚簇索引而不同...非叶子节点不存储真实的数据,存储指引搜索方向的数据项,17、35并不真实存在于数据

28K95

手把手教你Excel数据处理!

高级筛选法(删除) 高级筛选法是指直接使用Excel菜单自带的高级筛选功能进行重复去除,操作过程很简单,如下图所示,直接“选择不重复的记录”即可对重复进行去除,得到不重复的记录集合,因此此法适用于重复记录的删除...删除重复后的结果如下。 ? c. 条件格式法(查看) 所谓的条件格式法就是直接采用Excel菜单自带的条件格式进行重复的显示,此法适合凸显出重复。 ?...也就意味着如果单词间有两空格,使用此函数后,单词间也便一个空格了。 二、数据合并 数据合并主要包括以下两种情况:字段合并和字段匹配。...其次也可以采用LEFT()、RIGHT()、MID()函数进行某一字段的划分,其实也就是实现文本的提取,前两函数有两参数,最后一个函数有三参数,具体用法可以直接在Excel操作试试,也可自行百度...这其中可以通过VALUE()、TEXT()函数进行数值和文本的转换,也可以通过之前介绍的菜单栏的分列,在分列过程通过列类型的选择进行数据类型的转换(虽选择分列,但实际还是当前列)。 3.

3.6K20

收藏 | Mysql数据库基础-常用入门命令-干货

◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是必须有一个主键;二是没有包含在主键的列必须完全依赖于主键,而不能依赖于主键的一部分。...不遵循1NF 不遵循2NF 不遵循3NF 最终 9 E-R模型 https://www.draw.io/ E表示entry,实体,设计实体就像定义一个类一样,指定哪些方面描述对象,一个实体转换为数据库一个...这种关系一般有三种: 1-1 1-n n-m[ 多对多一般表现为2 1对多 ] 实体A对实体B为1对1,则在A或B创建一个字段,存储另一个的主键值 实体A对实体B为1对多:在B创建一个字段...、多表查询] 当查���结果的列来源于多张时,需要将多张连接成一个大的数据集,再选择合适的列返回 mysql支持三种类型的连接查询,分别为: 内连接查询(inner join) 查询的结果为两匹配到的数据...on a.id=b.sid where id=101; # 上面语句因位该学生在学生student中有数据,而成绩没有数据,所以使用内连接,连查询的结果是 Empty set (0.00 sec

1.6K11

MySql知识体系总结(2021版)请收藏!!

2、第二层负责解析查询 编译SQL,并对其进行优化(调整的读取顺序,选择合适的索引等)。...4或8字节,也就是说一个页(B+Tree一个节点)中大概存储16KB/(8B+8B)=1K键值(因为是估,为方便计算,这里的K取值为〖10〗^3)。...这是const联接类型的一个特例。 const:最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列可被优化器剩余部分认为是常数。...const用于用常数值比较PRIMARY KEY或UNIQUE索引的所有部分时。 eq_ref:对于每个来自于前面的的行组合,读取一行。这可能是最好的联接类型,除了const类型。...Using index:使用索引树的信息而不需要进一步搜索读取实际的行来检索的列信息。当查询使用作为单一索引一部分的列时,可以使用该策略。

1.3K10

mysql的基本操作

,(....); 所有在字段位置填写了名字的字段和后面的必须是一一对应 value单数:一次性写入一行数据,values复数:一次性写入多行数据 写入角度: 第一个角度:写入一行内容还是写入多行...,2,3) select * from employee where salary in (20000,30000,3000,19000,18000,17000) 在一个模糊的范围里 在一个数值区间...asc; 指定降序排列desc 大到小:order by 某一个字段 desc; 指定先根据第一个字段升序排列,在第一个字段相同的情况下,再根据第二字段排列 : order by 第一个字段...,方便在查询的范围条件 mysql当中所有的b+树索引的高度都基本控制在3层 io操作的次数非常稳定 有利于通过范围查询 什么会影响索引的效率 —— 树的高度 对哪一列创建索引,选择尽量短的列做索引...只对a或与a有关的,abc等条件进行索引,而不会对b或c进行单列的索引时,使用联合索引 单列索引 选择一个区分度高的列建立索引,条件的列不要参与计算,条件的范围尽量小,使用and作为条件的连接符

1.3K20
领券