![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
IronWring_Fly
这个作者很懒,什么都没留下…
展开
-
数据库的内连接,左连接,右连接
参考文章:图解MySQL 内连接、外连接、左连接、右连接、全连接……太多了mysql的内连接就是找到两个集合的公共部分:左连接左表全部显示,右表只显示符合条件的部分:右连接右表全部显示,左表只显示符合条件的部分。...原创 2019-09-17 09:29:09 · 113 阅读 · 0 评论 -
数据表的范式与的类型
数据库的范式都有哪些 第一范式 1NF 第二范式 2NF 第三范式 3NF 巴斯科德范式 BCNF 第四范式 4NF 第五(完美)范式 5NF 满足高级范式,则一定满足低级范式。数据表的键都有哪些 超键 (能代表一个元组的属性集合) 候选键 (超键中任选一个) 主键 (候选键中任选一个) 外键 (关联表的主键) 主属性 (可以作为主键的...原创 2019-10-02 15:56:25 · 185 阅读 · 0 评论 -
脏读、不可重复读、幻读以及事务隔离
脏读、不可重复读、幻读是在多客户端,高并发下产生的问题。脏读:读取了其他事务还没有提交的数据,不可重复读:对某一条具体的数据的多次查询结果不相同,可能是另一个事务对这条数据进行了修改。幻读:事务a根据某个条件多次查询的结果条目数不相同,可能是另一个事务进行了数据的增删操作。为了应对这些情况,SQL-92标准中定义了四种事务隔离来应对这些异常情况。名称脏读不可重复读幻...原创 2019-10-02 10:26:16 · 66 阅读 · 0 评论 -
视图
sql的视图是对sql语句的一种封装,结果会存储在一张虚拟表里。当下一次想要再次用同样的sql语句执行某个操作的时候,就可以直接查看这张虚拟表。 甚至可以将视图理解为Java中的类,类里的代码被封装了以后,当我们再次想要使用的时候,只要创建一个对象,调用其中的接口即可,我们并不关心这个类具体是怎么写的。 视图也是这样,我们将sql语句封装,将结果展现在一张虚拟表中,下次在想执行同样语句...原创 2019-10-01 09:34:25 · 100 阅读 · 0 评论 -
EXIT 和 IN 的区别
对于sql中的EXIT和IN,他们有时候查询出来的结果可能是一致的,例如下面这两条语句:SELECT * FROM A WHERE cc IN (SELECT cc FROM B);SELECT * FROM A WHERE EXISTS (SELECT cc FROM B WHERE B.cc = A.cc); 此时他们的区别就在于,IN是在A中选择一条记录,然后在B中查找该记录...原创 2019-09-30 16:18:36 · 2515 阅读 · 0 评论 -
SQL having函数,执行顺序,ROUND函数
having函数 HAVING函数和WHERE函数的作用很相似,WHERE函数是对整个sql语句的值进行过滤,而HAVING函数则是对经过GROUP BY函数分组过后的每一个组内的元素进行过滤。 因此,HAVING 总是排在GROUP BY之后执行, 而WHERE则总是在FROM之后执行。SELECT count(*) as num, role_hero, role_assistFR...原创 2019-09-30 10:14:12 · 1398 阅读 · 0 评论 -
B树与B+树
强烈推荐公众号:程序员小灰的关于B树和B+树的文章,以及下面这一篇文章,配合起来绝对会把这两块搞得明明白白的。MySQL索引背后的数据结构及算法原理 数据库的索引,B+树,来自B树,也叫B-树,但是不要念成了B减树,这只是翻译人员将B-tree做了不同的翻译而已。 B树的构建有一条准则。 对于一个m阶的B树:根节点最少有两个子节点。非叶子节点可以有 k - 1 个值,可以有 k...原创 2019-09-27 14:36:51 · 364 阅读 · 0 评论 -
主键、外键、索引
主键:用来区分表中不同的记录,要求唯一性约束和非空约束外键:可以保证多表关联的数据一致性,但是会影响系统性能,可以将数据一致性工作放在业务层处理。索引:可以提供查询效率,有两种实现方式,散列和B+树。...原创 2019-09-27 14:22:59 · 120 阅读 · 0 评论 -
常见SQL语句总结
这里我会总结自己平时遇到的,自己比较容易出错的sql语句,进行总结。更新某条数据库中的某条数据。UPDATE studentSET class_id = 1WHERE name = 'zhangsan';删除数据库中的某一列ALTER TABLE student DROP COLUMN class_id;创建外键ALTER TABLE studentsADD C...原创 2019-09-27 10:55:54 · 64 阅读 · 0 评论 -
数据表字段的常见约束和数据表的设计原则
数据表的常见约束对于数据库的某些字段,需要对其进行一些约束,具体的有主键约束,包括unique和notnull外键约束,可重复,可为空非空约束唯一性约束:除逐渐外,其他字段也可以设置uniquecheck约束:对特定字段划定范围数据库表设计的原则表尽量少降低复杂度。字段尽量少降低数据冗余度,与查询效率进行取舍主键,外键尽量多关系越多,则实体之间的冗余度越低...原创 2019-09-27 09:09:17 · 934 阅读 · 0 评论 -
SQL是如何执行的
这里我重点关注MySQl。MySQL是典型的C/S架构,分客户端和服务端。整体架构服务端包括,连接层,sql层,存储引擎层连接层负责接收客户端发送来的sql请求。sql层负责优化执行sql。存储引擎层负责文件的存储读取。sql层执行过程MySQL的sql层执行过程包括,查询缓存,解析 优化 执行, 四个阶段。在MySQL 8.0之前有缓存区,当sql层接收到新的sql语...原创 2019-09-26 10:12:29 · 485 阅读 · 0 评论 -
Hive的数据倾斜问题
hive的数据倾斜一、现象作业已经完成了99%,就剩下1%,结果跑了很久,这大概率就是出现了数据倾斜。二、原因key值分布不均匀数据本身分布不均某些sql写的有问题建表的时候考虑不周三、解决方法利用参数调节hive.map.aggr = true , map端部分聚合,相当于combinerhive.groupby.skewindata=true当有数据倾斜...原创 2019-09-25 16:08:36 · 236 阅读 · 0 评论 -
MySQL数据类型char和varchar以及blob
简单说,char类型固定长度,varchar类型可变长度,最后一位存储当前字符串的位数。参考文章:MySQL字符数据类型char与varchar的区别原创 2019-09-25 09:28:28 · 537 阅读 · 0 评论 -
Hive
hive是什么 hive是一个data warehouse software,数据仓库软件。他可以将类似SQL的HQL转译为mapreduce或spark等执行计划进行数据计算。hive的底层数据存储在HDFS上,数据的元信息维护在关系型数据库上,一般为MySQL。hive架构图hive的整体架构分为四个部分:用户接口包括命令行,web端,jdbc等元数据存储默认为derby数据...原创 2019-09-24 17:27:24 · 207 阅读 · 0 评论 -
笛卡尔积
之前就有听说过笛卡尔积,今天在做sql的inner join的时候才真正体会到了,什么叫笛卡尔积。先上链接:SQL在线编程练习< /a>表: 如果不作处理,只是简单的对两张表进行inner join,结果如下: 这就是笛卡尔积的现象,其他更具体的分析可以看下面这篇文章:程序员与笛卡尔积...原创 2019-09-23 08:46:11 · 778 阅读 · 0 评论 -
MySql性能优化神器explain与驱动表
如果不清楚自己写的sql语句性能怎样,可以使用explain来帮助分析,功能非常强大,且使用简单,只需要在sql语句前加上explain即可,具体的使用方法,与参数分析可以参考下面这篇文章:MySQL 性能优化神器 Explain 使用分析 这就是explain的分析结果,重点可以关注type列,如果这里一列显示为all,那说明现在进行的是全表扫描,那性能就非常的差,需要进行优化。...原创 2019-09-22 17:40:42 · 559 阅读 · 1 评论 -
索引
适当的使用索引可以提高查询的效率,但是如果使用不当会造成查询效率的降低。分类功能逻辑主键索引在普通索引的基础上加上了非空约束和唯一性约束。唯一索引在普通的索引的基础上加上了唯一性约束。普通索引没有任何约束,单纯的为了提高查询效率。全文索引仅支持英文,最好使用专门的全文搜索引擎,solr或es等物理实现聚集索引按照主键维度对存储数据,索引树的...原创 2019-10-03 10:04:26 · 84 阅读 · 0 评论