数据库作为组织、存储和管理数据的仓库,在后端开发中扮演着不可或缺的角色,前面已经讲了Java基础篇的一些面试题,现在开始数据库篇,主要以Mysql和Redis作为讲解的重点,这两种数据库也是关系型数据库和非关系型数据库的典型代表。
下图为市场数据库占有份额。值得一提的是前两位都是Oracle公司的,开发mysql的公司被Sun收购了,Sun又被Oracle收购了。

为什么要用数据库存取数据

问:使用数据库的好处是什么?/为什么要使用数据库存取数据?

  1. 便于持久化保存。
    这里就要谈到持久化的概念,所谓持久化就是将RAM中的数据保存的ROM中,因为RAM是断电易失的,对于需要长时间保存的数据可以采用各种各样的方式进行保存,比如保存为txt文本,保存为xml文件等,数据库也是一种持久化的保存方式。
  2. 便于查找
    其实说便于增删改查更准确,对于大量数据的情况下,采用数据库保存更方便增删改查。因为数据库保存数据时运用了各种数据结构与算法(比如树),这样大大提高了数据的查找速度。
  3. 存储的数据类型多样
    整形、浮点型、字符串……等等

主流的数据库分类方式

目前最为主流的数据库分类方式是按照关系型数据库和非关系型数据库来分的

关系型数据库


简单的说就是由二维表及其之间的联系所组成的一个数据组,通常情况关系型数据库都是一个个的表格,表格之间可以以外键相互关联。这样带来了一些好处,当然,也有一些弊端。
问:关系型数据库的优势和劣势分别是什么?

优势:

  1. 容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。
  2. 使用方便:通用的SQL语言使得操作关系型数据库非常方便。
  3. 事务支持:使得对于安全性能很高的数据访问要求得以实现。

劣势:

  1. 读写性能比较差,尤其是海量数据的高效率读写;
  2. 固定的表结构,灵活度稍欠;
  3. 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库


非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等,以大家最熟悉的redis为例,就是典型的key-value形式数据库。

问:非关系型数据库的优缺点?

优点:

  1. 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
  2. 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
  3. 高扩展性;
  4. 成本低:nosql数据库部署简单,基本都是开源软件。NoSQL可以看做是对 SQL 做出了补充,比如实际开发中,有很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用 性能更高 、 成本更低 的非关系型数据库当然是更明智的选择。比如:日志收集、排行榜、定时器等。

缺点:

  1. 不提供sql支持,学习和使用成本较高;
  2. 无事务处理;(redis其实也有,只是不好用)
  3. 数据结构相对复杂,复杂查询方面稍欠。

结构化查询语言SQL

关系型数据库必须遵从结构化查询语言SQL的要求,也就是说Oracle和Mysql语法虽然有不同的地方,但都不能违背SQL的要求。
问:SQL语言分为哪四种?

  1. DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP
  2. DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE
  3. DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY
  4. DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT
    DML和DQL是后端开发人员最常用的,另外两种大公司都会交给DBA去做,开发人员是没有权限随便删除表格或者新建数据库的。

Mysql中常用的运算符

运算符种类非常多,我尽可能都列出来,但是很多并不常用,有印象就行。

1. 算术运算符

主要是加、减、乘、除、取模:和Java语言中用法基本一致

2. 比较运算符

主要是等于、大于、小于、大于等于、小于等于、不等于、安全等于,主要说一下不等于和安全等于,其它的和Java一致

  1. 不等于(<>和!=):用法和Java一致,只是有两种写法(<>和!=)。

  2. 安全等于:主要是用来解决数据库中存在的空数据(NULL)问题,mysql中有一个问题就是当比较一个数据和NULL的时候会返回NULL,而安全等于运算符解决了这个问题,

    · 当两个NULL比较 时,其返回值为 1 而不为 NULL;

    · 当一个非空数与 NULL 比较时,其返回值为 0 而不为 NULL。

3. 非符号类运算符

4. 逻辑运算符

Mysql支持与、或、非、异或四种逻辑运算

5. 位运算符

类似于Java中的位运算,Mysql支持6种位运算,分别为按位与、或、异或、取反、右移、左移。

6. 运算符的优先级

优先级由低到高排列如下(1是最后考虑,15是最优先考虑)

Java面试系列——数据库(01)数据库的作用、分类、SQL语言、运算符相关推荐

  1. Java面试系列之并发编程专题-Java线程池灵魂拷问

    金三银四跳槽季即将来临,想必有些猿友已经蠢蠢欲动在做相关的准备了!在接下来的日子里,笔者将坚持写作.分享Java工程师在面试求职期间的方方面面,包括简历制作.面试场景复现.面试题解答.谈薪技巧 以及 ...

  2. Java 面试知识点解析(六)——数据库篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  3. JAVA面试系列(二)消息中间件

    本人目前项目中有用到rocketMQ作为数据传输过程中的中间件,今天整理了一下资料,记录一下自己对消息中间件的理解. 一.概念 1.MQ message queue消息队列,消息队列是就是队列,是一种 ...

  4. 征服Java面试官!为什么数据库会丢失数据?你还看不懂吗?

    前言 提到IT人员,人们的第一印象就是高薪资,包括转行来学Java的人绝大多数都是冲着高薪以及就业广泛来的. 前段时间跟同学聊天,她说她老公在一家互联网公司做Java后台开发,年薪四十万,最近在准备复 ...

  5. Java面试系列-MongoDB

    什么是MongoDB?为什么使用MongoDB? MongoDB是面向文档的NoSQL数据库,用于大量数据存储.MongoDB是一个在2000年代中期问世的数据库.属于NoSQL数据库的类别.以下是一 ...

  6. Java面试系列--HashMap

    最近看到Java相关的面试时,看到一篇关于HashMap的相关面试知识点,感觉蛮好的!现在的面试点不会围绕某个知识让面试者去详细阐述,而会通过一些系列的相关问题去让你阐述,进而形成从点到线,再由线到面 ...

  7. JAVA面试系列:你了解系统可用性吗?

    文章目录 1.背景 1.1.可用性 1.2.衡量可用性 1.3.不可用原因 2.解答 2.1.拆分 2.1.1.水平拆分 2.1.2.垂直拆分 2.1.3.读写分离 2.2.降级 2.2.1.限流 2 ...

  8. Java IO 系列(01)-Java IO概述

    为什么80%的码农都做不了架构师?>>>    1. 引言 趁着有时间,看了下JDK1.7 API 对Java.lang.io包下经常用到的Java IO处理类做了一些总结性的东西, ...

  9. 搞定java面试系列--jvm3 gc垃圾回收

    1.明确什么是垃圾 答案:在进行gc操作时候没有存活的对象. 那么怎么去判断对象是否存活: 老的方式-引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回 ...

最新文章

  1. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能
  2. Qt中的自定义模型类
  3. Vue CLI3.0 中使用jQuery 和 Bootstrap
  4. 诞生一年来,V 语言还好吗?
  5. oracle常用函数介绍
  6. 小程序 长按转发_小程序转发分享
  7. 淘宝类目批量查询工具使用教程
  8. 【python】通讯录制作
  9. SVM实现鸢尾花分类
  10. 我要偷偷的学Python,然后惊呆所有人(第九天)
  11. 高清视频录制工具(Bandicam)v2.1.2.740中文使用技巧
  12. 可调光的LED驱动解决方案
  13. 安卓手机屏幕失灵后通讯录导出
  14. 8个免费的高质量UI图标大全网站
  15. 常见问题汇总:FLUENT面数据处理
  16. 在线考试系统总体设计
  17. 文华软件怎样测试交易系统的收益,文华财经交易系统之终极黄金
  18. 802.11网络协议细节(五)
  19. python_selenium项目_批量获取企业信用代码
  20. QDUOJ 点击此处签到(并查集)

热门文章

  1. Unable to restart cluster, will reset it: apiserver healthz: apiserver process never appeared
  2. debian系统安装dig和nslookup工具
  3. 定风波/三月七日——苏轼
  4. 面向對象在VB6語言中的應用
  5. 技术分析:苹果之后 HTML5将改变移动互联网
  6. C语言入门教程之一变量和常量
  7. 惧怕羊毛党?腾讯云为你保驾护航
  8. C++ qsort的理解
  9. HDU 4183 Pahom on Wate【网络流+路径问题】
  10. C#--窗体控件(选择类控件)