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

23篇大数据系列(三)sql基础知识(史上最全,建议收藏)

我们将会带大家学习下,如何把多张表连接起来,通过表交叉来获取更多信息,以及使用查询实现在查询结果上继续分析。...1.4  主键  主键是一列组合,用于标识表中唯一一条记录。所以,它天然一个属性就是不重复性,也不允许为NULL值。...2.7  去重  DISTINCT关键字用于对一列去重,返回剔除了重复结果。DISTINCT对去重时,必须满足每一列都相同时,才认为是重复行进行剔除。...ORDER BY通常配合ASC和DESC使用,可以根据一列,进行升序或降序排列,之后使用LIMIT取出满足条件N行。...当子查询出现在WHERE/HAVING后面时,则表示要使用查询返回结果做过滤。这里根据子查询返回结果数量,分三种情况,即1行1N行1NN

2.6K60

数据库基础知识详解三:MVCC、范式以及表连接方式

from user 在事务A执行第一select语句时,假设查询出了三个用户。...可以通过分解来满足 2NF:将(学号,课程名,成绩)做成一张表;(学号,学生姓名)做成另一张表,避免大量数据冗余; 满足1NF后,要求表中所有,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表描述一件事情...要求:表中一列与主键直接相关而不是间接相关,(表中一列只能依赖于主键)。 使一个2NF变成3NF方法同样是分解,方法类似1NF变为2NF,这里不再赘述。 不符合范式会出现哪些异常?...查询出左表和右表所有数据,但是去除两表重复数据。...n表,返回m*n结果)。

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

R3数据结构和文件读取

第一出现视为没有重复)length(X判断向量长度,连接paste0(rep(“studengt”,length(x),x)3个向量不一样长时,谁长取谁),unique去重复,输出是数据,duplicated.../名colnames(df1)[2] <- "CHANGE"#4.数据框取子集1$一只能取1,2按坐标,名字(一可以取),逻辑df1$gene #删掉score,按tab键取文件/文件...df1[,3]## [1] 5 3 -2 -4df1[,ncol(df1)]## [1] 5 3 -2 -4#如何取数据框除了最后一列以外其他?...#注释3如何按照数据框一列,给整个数据框排序order,使用order()函数按照数据框一列对整个数据框进行排序。...#注释4如何按照数据框一列,给整个数据框去重复,可以使用unique()函数按照数据框一列对整个数据框进行去重操作。

2.7K00

详解SQL集合运算

下载脚本文件:TSQLFundamentals2008.zip 一、集合运算 1.集合运算 (1)对输入两个集合或集进行运算。 (2)集:由两个输入查询生成可能包含重复记录中间结果集。...比如输入查询1一列为int类型,输入查询2一列为float类型,则较低数据类型int类型可以隐式地转换为较高级float类型。...2)UNION 会删除重复行,所以它结果就是集合; (3)相同行在结果中出现一。...返回 h 行; (2)INTERSECT集合运算在逻辑上首先删除两个输入集中重复行(把集变为集合),然后返回在两个集合中都出现行; (3)INTERSECT 会删除重复行,所以它结果就是集合...m - h 行,而Query2 INTERSECT Query1 返回 n - h 行 (2)EXCEPT集合运算在逻辑上先删除两个输入集中重复行(把集转变成集合),然后返回在第一个集合中出现

2.2K80

《深入浅出SQL》问答录

试着从网络上复制并粘贴查询,但在使用时却一直出现错误信息,做错什么了吗? A:从web浏览器剪切过来查询有时包含了外观像空格,但在SQL里有其他含义隐形字符。...花絮 谨慎使用DELETE和UPDATE,使用SELECT确认自己加入了非常精确WHERE语句,可以选出你真正想要删除/修改行。 使用UPDATE,你可以改变单一列或所有值。...这样要执行n啊。。。 那有没有更好办法,其实在主语言中,这不过就是个分支语句事情嘛,奈何SQL语言不熟啊。。。...数据模式:一对 A表某一条记录可以对应到B表多条记录,但B表中一条记录只能对应A表中某一条记录。 ? 连接线应该带有黑色箭头来表示一对连接关系。 ? 数据模式: ?...Junction table(连接表) ? 范式(NF) 第一范式(1NF) 数据包含具有院子性值 没有重复数据组 组合键 组合键就是有多个数据构成主键。

2.9K50

MySQL数据库学习

列名n 数据类型n ); 注意 最后一列,不需要加逗号(,)。...数据库类型 int:整数类型 age int, double:小数类型 score double(5,2), date:日期,包含年月日,yyyy-MM-dd datetime:日期,包含年月日时分秒...table 表名 modify 变量2 varchar(32) not null; 删除非空约束 alter table 表名 modify 变量2 varchar(32); 唯一约束 unique ,某一列值不能重复...子查询结果是多行查询可以作为一张虚拟表参与查询。 事务 如果一个包含多个步骤业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。...不可重复读(虚读):在同一个事务中,两读取到数据不一样。 幻读:一个事务操作 (DML) 数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己修改。

4.2K20

关系型数据库设计小结

一、需求分析 尽可能地收集需求,以及定义你数据库最终目的。 比如要开发书店查询应用,就要先知道应用有什么需求, 如如何添加书籍,如何查询现有书籍,如何查询订单,生成报告格式如何,等等。...对于每一个表,我们需要选择一列(或者)作为主键(primary key)。 关于主键 在关系模型中,表不可以含有重复行,否则会导致检索出现歧义。...如果主键由某构成,则被成为简单键(simple key),若由组成则成为组合键(composite key)。 大多数商业数据库都基于主键来生成索引以提高查询速度。...然后我们可以通过在Children新建一列包含MotherID建立一对关系,如下图所示: one2many 其中Children表里MotherID又被称为约束或外键(Foreign Key)...同一列中不能有多个值,即实体中某个属性不能有多个值或者不能有重复属性。 如果出现重复属性, 就可能需要定义一个新实体,新实体由重复属性构成,新实体与原实体之间为一对多关系。

2.3K40

【重磅来袭】在Power BI 中使用Python(4)——PQ数据导出&写回SQL

而且清空表后再刷新运行,就会发现有的时候是2,有的时候5,这意思就是Python代码运行了多次,造成了数据重复,这背后原因我们无从得知。...这个问题先一放,我们来看另一个问题: 每个国家每日数据我们保留一,即便powerquery每次刷新向MySQL数据库写入一,但我们也不能保证编写模型时候刷新一吧,因为一旦人工刷新多次,造成结果和上面被动造成结果一致...,所以,只要我们解决了人工刷新造成数据重复问题,查询刷新时被动写入多次问题也就顺带解决了。...我们看一下数据,有一列“lastupdated”,是时间格式,也就是查询时间,由于我们关心日期数据,因此取出日期就可以。...MySQL数据库表中初始有378条数据(因为包含了3月27日和3月28日两天数据,共189个国家和地区数据),运行代码后,仍然是378条,之前已有的3月28日数据被删除,然后添加了刚刚查询最新数据

4K41

Explain详解与索引优化实践

使用explain关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何使用索引来处理你SQL查询语句以及连接表,可以分析查询语句或是结构性能瓶颈,帮助我们选择更好索引和写出更优化查询语句...当from子句中有子查询时,table是格式,表示当前查询依赖id=N查询,于是先执行id=N查询。...(7)key_len一列显示了MySQL在索引里使用字节数,通过这个值可以算出具体使用了索引中哪些。...通过下面结果中key_len=4可推断出使用了第一个flim_id来执行索引查找。...(5)尽量使用覆盖索引(访问索引查询,索引包含查询),减少 select * 语句 执行SQL语句:EXPLAIN SELECT name,age FROM employees WHERE name

55320

Oracle数据库学习

对于联合主键,允许一列重复,只要不是所有主键重复即可: id_num id_type other columns… 1 A … 2 A … 2 B … 如果我们把上述表id_num和id_type...如果我们希望返回某些数据,而不是所有数据,我们可以用SELECT 1, 2, 3 FROM ...,让结果集仅包含指定。这种操作称为投影查询。...,要使用表名.列名这样方式来引用和设置别名,这样就避免了结果集列名重复问题。...添加WHERE条件后结果集数量大大减少了。 小结 使用多表查询可以获取M x N行记录; 多表查询结果集可能非常巨大,要小心使用连接查询 ---- 连接查询是另一种类型多表查询。...它们区别是: INNER JOIN返回同时存在于两张表行数据,由于students表class_fdid包含1,2,3,classes表id包含1,2,3,4,所以,INNER JOIN根据条件

1.8K40

Mysql优化-索引

单一索引是指索引列为一列情况,即新建索引语句实施在一列上; 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引); 禁用缓存 因为我们要测试添加索引效果,所以就先禁用缓存,防止影响测试结果...explain显示了MySQL如何使用索引来处理select语句以及连接表。 可以帮助选择更好索引和写出更优化查询语句。...key_len 用于处理查询索引长度,如果是单列索引,那就整个索引长度算进去,如果是索引,那么查询不一定都能使用到所有的,具体使用到了多少个索引,这里就会计算进去,没有使用,这里不会计算进去...其他数据库也叫做唯一索引扫描 eq_ref 出现在要连接过个表查询计划中,驱动表返回一行数据,且这行数据是第二个表主键或者唯一索引,且必须为not null,唯一索引和主键是时,只有所有的都用作比较时才会出现...如果内表数据量比较大,就可能出现这个。 loosescan(m..n) 5.6.x之后引入优化子查询新特性之一,在in()类型查询中,子查询返回可能有重复记录时,就可能出现这个。

1.3K50

Pandas图鉴(三):DataFrames

文档中 "保留键序" 声明适用于left_index=True和/或right_index=True(其实就是join别名),并且在要合并中没有重复情况下适用。...现在,如果要合并已经在右边DataFrame索引中,请使用join(或者用right_index=True进行合并,这完全是同样事情): join()在默认情况下做左外连接 这一,Pandas...与普通模式相比,这种模式有些限制: 它没有提供一个解决重复方法; 它适用于1:1关系(索引到索引连接)。 因此,多个1:n关系应该被逐一连接。'...与Series相比,该函数可以访问组多个(它被送入一个子DataFrame作为参数),如下图所示: 注意,不能在一个命令中结合预定义聚合和几列范围自定义函数,比如上面的那个,因为aggreg接受一列范围用户函数...一列范围内用户函数唯一可以访问是索引,这在某些情况下是很方便。例如,那一天,香蕉以50%折扣出售,这可以从下面看到: 为了从自定义函数中访问group by值,它被事先包含在索引中。

33620

【MySQL】索引事务

索引 概念 索引是一种特殊文件,包含着对数据表里所有记录引用指针。可以对表中一列创建索引并指定索引类型,各类索引有各自数据结构实现。 通过目录,就可以快速找到某个章节对应位置。...B+树就是为了索引这个场景,量身定做数据结构。 B+树也是一个N叉搜索树,每个节点上可能包含N个key,N个key划分出N个区间,最后一个Key就相当于最大值。...(这个情况会构造另一个B+树,B+树非叶子节点里面存都是这一列里面的key,到了叶子节点这一层,不是存之前完整数据行,而是存主键id) 使用主键查询,只要查一B+树就可以了。...如果使用非主键索引来查询,则需要先查一遍索引B+树,再查一遍主键B+树。 B+树这个结构,只是针对MySQlInnoDB这个数据库引擎,里面所典型使用数据结构。...此时这个情况就叫做“不可重复读”(即一个事务中,连续两读到数据,结果不一致)。如何解决这个问题呢?给读这个操作,也加锁~也就是A在看B答案时候,B不能修改!

27110

常见公司MySQL面试题全集

不可重复读:在事务A中先后两读取同一个数据,两读取结果不一样,这种现象称为不可重复读。脏读与不可重复区别在于:前者读到是其他事务未提交数据,后者读到是其他事务已提交数据。...幻读:在事务A中按照某个条件先后两查询数据库,两查询结果条数不同,这种现象称为幻读。不可重复读与幻读区别可以通俗理解为:前者是数据变了,后者是数据行数变了。...最左原则:组合索引是先按照第一列进行排序,然后在第一列排好序基础上再对第二排序,如果跳过第一列直接访问第二,直接访问后面的就用不到索引了。...适用场景: 全字段匹配 匹配部分最左前缀 匹配第一列范围查询(可用用like a%,但不能使用like %b,最左原则) 精确匹配某一列和和范围匹配另外一列 索引失效几种情况: 使用like '...将遍历全表以找到匹配行 index: Full Index Scan,index与ALL区别为index类型遍历索引树 range:检索给定范围行,使用一个索引来选择行 ref: 表示上述表连接匹配条件

35430

mysql 知识总结

索引定义:索引是单独、物理对数据库表中一列进行排序存储结构。作用:相当于图书目录,用于提高查询效率,降低 IO 成本。分类主键索引:主键唯一且不为空,是一种特殊唯一索引。...唯一索引:索引值必须唯一,但允许有空值。普通索引:索引允许重复。联合索引:对进行索引,使用最左匹配原则。全文索引:一般不用,不是 mysql 专长。...哈希,时间复杂度O(1),支持等值查询,不支持排序和范围,innodb 自动创建内存索引。物理存储聚集索引:叶子节点包含完整一行数据,类比于字典按首字母排序组织。一个表必须有一个聚集索引。...默认使用主键,然后使用非空唯一索引,都没有则生成隐藏自增列作为聚集索引。非聚集索引(辅助索引):叶子节点仅包含主键,查询非主键字段需要回表二查询。NULL值作为最小数看待,全部放在树最左边。...字段值离散程度大时才需要加索引,值重复率高不适合加索引。覆盖索引索引包含所有需要查询字段,是常用优化手段。对于非聚集索引,查询结果包含索引字段或主键,可以避免回表做二查询,提高效率。

12210

根据面试经历,总结mysql面试题(实时更新)

因此叫做不可重复读。 幻读: 与不可重复读都点相似,只是这次是事务B在事务A访问 第二之前做了一个新增,导致事务A第二读取时候发现了记录, 这就是幻读。...,找到哪个sql语句是慢查询 2 用explain语句,去分析,到底为什么查询慢,是不是索引没有使用上,是不是索引使用了一部分 数据库三范式 第一范式(1NF):确保每一列原子性 如果每一列都是不可再分最小数据单元...4 利用最左前缀 ,N组合而成组合索引,那么相当于是创建了N个索引, 如果查询时where子句 中使用了组成该索引前几个字段, 那么这条查询SQL可以利用组合索引来提升查询效率。...什么是最左前缀原则 1 如果索引了,要遵守最左前缀法则。指的是查询从索引最左前列开始,并且不跳过索引中。...5 尽量使用覆盖索引,避免select * 尽量使用覆盖索引(访问索引查询(索引完全包含查询)),减少select * 。

50130

10分钟掌握数据类型、索引、查询MySQL优化技巧

先用第一列排序,然后是第二,最后是第三查询使用应该尽量从左往右匹配,另外,如果左边范围查找,右边无法使用索引;还有就是不能隔查询,否则后面的索引也无法使用到。...3、索引 上面提到“People”上创建索引即为索引,索引往往比多个单列索引更好。 对多个索引进行and查询时,应该创建索引,而不是多个单列索引。...5、覆盖索引 简单地说,某些查询只需要查询索引,那么就不用再根据索引B树节点记录主键ID进行二查询了。...是否重复多次执行了相同查询 应用程序是否可以考虑一查询然后缓存,后面的用到时可以使用第一查询出来记录。...综上所述,通常,如无只需要给B表c加上索引即可 确保order by和group by涉及到属于一个表,这样才有可能发挥索引作用 优化子查询 对于MySQL5.5及以下版本,尽量用连接代替子查询

77420

MYSQL-索引

反之,如果我们通过该字段查询比较频繁,但更新并不是特别,比如查询几十或更多才可能会产生一更新,那我个人觉得更新所带来附加成本也是可以接受。 4....匹配最左前缀 上表中索引可用于查找所有姓为 Allen 的人,即使用索引一列。 匹配前缀 匹配某一列开头部分。例如上表索引可用于查找所有以 J 开头姓的人。...这里也使用了索引一列。 匹配范围值 例如上表中索引可用于查找姓在 Allen 和 Barrymore 之间的人。这里也使用了索引一列。...即第一列 last_name 全匹配,第二 first_name 范围匹配。 访问索引查询 B-Tree 通常可以支持“访问索引查询”,即查询只需要访问索引,而无须访问数据行。...引用 美团-MySQL索引原理及慢查询优化 MySQL索引背后数据结构及算法原理 索引利弊与如何判定,是否需要索引 MySQL 索引优化小记

1K20

盘点66个Pandas函数,轻松搞定“数据清洗”!

head()方法和tail() 方法则是分别显示数据集n和后n行数据。如果想要随机看N数据,可以使用sample()方法。...df.shape 输出: (5, 2) 另外,len()可以查看某行数,count()则可以查看该有效个数,不包含无效值(Nan)。...在对文本型数据进行处理时,我们会大量应用字符串函数,来实现对一列文本数据进行操作[2]。...split 分割字符串,将一列扩展为 strip、rstrip、lstrip 去除空白符、换行符 findall 利用正则表达式,去字符串中匹配,返回查找结果列表 extract、extractall...如果想直接筛选包含特定字符字符串,可以使用contains()这个方法。 例如,筛选户籍地址包含“黑龙江”这个字符所有行。

3.7K11

快问快答,MySQL面试夺命20问

可以从这几个维度回答这个问题: 1,优化表结构 (1)尽量使用数字型字段 若含数值信息字段尽量不要设计为字符型,这会降低查询连接性能,并会增加存储开销。...这是因为引擎在处理查询连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一就够了。 (2)尽可能使用 varchar 代替 char 变长字段存储空间小,可以节省存储空间。...(3)当索引大量重复数据时,可以把索引删除掉 比如有一列是性别,几乎只有男、女、未知,这样索引是无效。 2,优化查询 应尽量避免在 where 子句中使用!...by字段建立索引 避免建立过多索引,使用组合索引 怎么看执行计划(explain),如何理解其中各个字段含义?...最左前缀原则,就是最左优先,在创建索引时,要根据业务需求,where 子句中使用最频繁一列放在最左边。

92020
领券