数据库知识点

原创 2018年04月15日 18:58:48

数据库

  • 索引

    • 数据库中对数据表的一个或多个字段的值进行排序存储的结构;提高数据查找的速度;

  • 索引失效的情况

    • 使用or查询,前后条件不全带有索引的;

    • 使用like模糊查询时,以%开头;

    • 索引字段为字符串类型时,查询没带引号;

    • 在索引列上做运算或者使用函数

  • 删除大批量数据的优化

    • 删除千万级的数据速度慢的主要原因是数据库需要更新索引;

    • 如果删除的是表的大部分数据,只保留小部分数据,可以把保留的数据保存到一个新表里边,然后drop 旧表,然后再在新表上建立需要的索引、主键。

    • 如果删除的数据是小部分的,可以先把当前的索引备份,然后删除索引,再根据删除条件建立一个临时索引,再开始删除操作,完成后删除临时索引,重建原来的索引;

  • B+树

    • B+树是一个多叉树,通常应用于数据库的索引,B+树中的节点中含有多个关键字,关键字不保存数据,所有的数据保存在叶子节点上;

    • B+树与B树的区别

      • B+树的所有数据都存在叶子节点上,B树的数据存在每个节点上;

      • B树可以在非叶子节点中找到数据后就结束查找,而B+树因为数据存储在叶子节点,每次查找都要从根节点走到叶子节点;

    • B+树比B树更适合做索引的原因:B+树的所有数据存储在叶子节点,且叶子节点使用指针连接,只要遍历叶子节点就可以实现整个数据表的遍历,在数据库中,经常用到范围查询,因此在数据库索引中使用B+树的效率比B树的会高;

  • SQL

    • 查询成绩前三名的记录(包括并列)

      • select * from table as a INNER JOIN (SELECT distinct 成绩 FROM table ORDER BY 成绩 desc LIMIT 3) as b on b.成绩 = a.成绩 order by a.成绩 desc
    • 每科前三的分数(即前三名包括并列)

      • select * from grade as e where (select count(distinct(e1.`score`)) from grade as e1 where  e1.`c_id` = e.`c_id` and e1.`score` > e.`score`) < 3
        
        # 表e中的课程的score 小于 e1中 课程的score 不超过3次,也就是比这个分数大的分数不超过3个,那这个分数就是排在第3;
    • 每门课都大于80

      • select * from grade group by 课程 having min(score) > 80;
    • 超过60分显示pass,低于60显示fail

      • SELECT `c_id`,(CASE WHEN `score` < 60 then 'fail' ELSE 'pass' end ) as mark from grade
    • 删除除了自动编号不同,其他字段都相同的学生冗余信息。

      • delete from stu where 自动编号 not in (select a.id from(select min(自动编号) as id from stu group by 学号,姓名,课程编号,课程名称,分数)as a)
        
        # mysql中不能先select出同一表中的某些值,再update这个表(在同一语句中)。所以将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。
    • SQL题目https://www.cnblogs.com/saurik/p/4661789.html

JavaOne现场报道(6月11日)

没有了摩肩接踵的拥挤人群,没有了媒体的爆炒,没有了树上掉金币的神话,Java One在略显冷清的同时也回归了技术会议的本质。本次Java One大会最重要的主题就是“Java未来的发展方向”,Sun对...
  • gigix
  • gigix
  • 2003-06-12 10:25:00
  • 2045

数据库基本知识点总结

数据库也是计算机类笔试面试中不可避免会遇到的考点,尤其是银行和部分传统软件类公司。这里根据整理的资料,对数据库的相关知识也做个总结吧。希望学过数据库但长时间不用的同学根据这些知识能够回忆和重拾,没学过...
  • liuxyen
  • liuxyen
  • 2017-11-21 13:43:48
  • 2151

数据库及SQL----常用知识点总结

用递归和非递归两种方法翻转一个链表
  • dcj0913
  • dcj0913
  • 2014-09-13 15:33:21
  • 8351

MySQL数据库基础知识点总结

一.一些常用的数据库dos命令: SHOW  DATABASES//查看都有哪些数据库 CREATE  DATABASE 数据库名//创建数据库 DROP  DATABASE 数据库名//删除数...
  • zhuning_blog
  • zhuning_blog
  • 2015-07-18 20:10:38
  • 2661

数据库sql语句和重要知识点总结

  • 2016年11月20日 22:22
  • 1.04MB
  • 下载

数据库原理 基础知识点

基本概念: 1、数据库定义为关联记录的自描述集合 2、关于数据库结构的数据称为元数据。表名、列名和列所属的表、表和列的属性等都是元数据 3、数据库系统四个组成部分:用户、数据库应用程序、数据库管...
  • Bubble1210
  • Bubble1210
  • 2016-04-23 23:33:45
  • 988

三级数据库知识点

一、数据结构篇 数据是信息的载体,是计算机程序加工的“原料”。数据不仅包括整数、实数、字符串,还包括图像和声音。 数据元素是数据的基本单位,数据元素也称元素、节点、顶点、记录。一个数据元素可以由若...
  • qq_33380716
  • qq_33380716
  • 2016-04-21 11:04:29
  • 384

数据库知识点大总结

  • 2012年07月23日 10:40
  • 1.4MB
  • 下载

面试常考知识点—数据库

1.存储过程是什么?我们常用的关系型数据库是MySQL,操作数据库的语言一般为SQL语句,SQL在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成某种特定...
  • xiaomingdetianxia
  • xiaomingdetianxia
  • 2017-05-18 16:59:51
  • 1725
收藏助手
不良信息举报
您举报文章:数据库知识点
举报原因:
原因补充:

(最多只允许输入30个字)