数据库(DataBase)简介

数据库,顾名思义,就是遵循一定数据格式的数据集合,可以认为它是对文件系统的改进。它解决了不同操作系统之间,数据格式的兼容性问题。也就是说,只要是同一个数据库的数据文件,即使是从Windows迁移到了Linux上,也可以正常处理的。
数据库管理系统(DataBaseManagementSystem)简称DBMS
最靠近我们用户(开发人员)的其实不是数据库(这个概念要更接近硬件,更底层),我们通常说数据库,其实是说数据库管理系统(DBMS)
DB是DBMS的一个组成部分(底层实现),对于一个DBMS来说,除了底层数据(DB),还有其他组成部分。比如存储引擎,比如服务器组件,比如UI(命令行,图形化界面),还有其他的一些类似SQL解释器,连接认证系统等。
数据模型是DBMS的核心,各种DBMS都是基于某种数据模型构建的。比如有网状模型、树状(层次)模型、关系模型。
其中,关系型数据库(RDBMS)是应用最为广泛的,比如SQL Server、MySQL、Oracle都属于RDBMS。
随时间发展,数据量越来越庞大,RDBMS开始有一些力不从心,所以现在出现了新的NOSQL(Not Only SQL)类型数据库,如Redis、mongoDB等
关系型和非关系型的区别
关系型和非关系型的区别
关系型数据库 查询来数据,得到对象,而非关系型数据库 查询处理数据,得到数组
简单理解
而关系型数据库 对于java而言,一个类就可以对应一个表,一个类对象就可以对应表中一行数据,一个成员变量可以对应表中的一个列(字段),能够做到一一的映射,数据库中是以表作为基本单位的
而非关系型数据库是存储键值对的,即有关系型数据库处理数据的方便性,也能处理大量数据,比较火的就是Redis、mongoDB了,各有千秋
关系型数据库这里一个名词是ORM : Object Relationl Mapping 对象关系映射,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了,更加面向对象
一些应用广泛的DBMS
数据库种类
画红框的是我们重点关注的。
Oracle,这是一种关系型数据库。它的特点是闭源收费,但是功能强大稳定,而且有一支专业的技术支撑团队。使用这种数据库的一般是大型企业、银行业、金融业。
MySQL,它也是关系型数据库。它的特点是开源免费,功能还是不错的,也比较稳定。通常使用这种数据库的,是中小企业等。因为它是开源的,所以我们有些企业可以对它做定制化、二次开发,以支持自己特殊的业务。比如阿里。说它是目前应用最广泛的DBMS,是MySQL的订制二次开发,也是比较好用。
Memcached、Redis,这2者是非关系型数据库(Not Only SQL)。它们通常用K-V键值对的形式存储数据,使用场景为缓存(可做为关系型数据库的补充)。它俩都是基于内存存储的,它们的数据都是在内存中,所以访问速度要快。Redis还提供了定期向磁盘中进行序列化的机制,它的IO性能也是非常高的。
MongoDB,这个也是NOSQL数据库。它使用文档形式存储数据。使用场景,通常是大数据量高并发访问。它的性能也非常高。

存储引擎可以理解为数据库中的文件系统
InnoDB : 支持事务,支持锁,并且锁也支持表级别的锁,还有行级别的锁
事务就是错处之后可以回滚
所以 InnoDB : 适合做一些银行,金融的那个
MyISAM : 适合做一些记录日志,或者读比写多,它的写性能相对InnoDB也要好一些,就是不支持事务
但是目前为止,通过对InndDB的改进,也可以做日志,或读比写多的一些场景,
目前新项目基本都用InnoDB较多,老项目一般都还是MyISAM

简单的SQL命令
SQL : Structured Query Language 结构式查询语言
执行SQL语句的时候,最好不要点击运行,最好是选中你要执行语句,然后右键,运行已选择,养成这样执行的一个习惯比较好

数据库对象
表,视图,函数,存储过程,索引等。
表就是存储数据的,里面有一条条的记录,记录是由字段组成的。每个字段都有自己的字段名、字段值、字段类型(数据类型)。字段是存储数据的基本单元。类似Java中的变量。
视图,我们可以理解为一张虚表(它在物理磁盘上并不真实存在)。视图是基于select语句查询生成的结果集。当一条select语句比较复杂而且调用的频率也比较高时,我们不想再写一遍语句,这时候可以把这条select语句创建为一个视图。每次使用视图的时候,就可以把它当成一张表来用。
函数,通常是一个功能的实现,我们大部分使用的是系统函数(MYSQL提供的),我们也可以自定义函数。它的调用套路通过使用select 函数名(参数1,参数2…);来调用。它只有一个返回值。
存储过程,也是一个功能的实现。我们所说的数据库编程,SQL语句编程,就主要是指自定义一个存储过程。调用存储过程是使用exec 存储过程名 参数1等来调用。它是可以返回多个值,也可以没有返回值。
索引,我们之前接触过,它就像一本书的目录一样,是为了加快我们查询速度而建立的。
数据类型
整型,浮点型,字符型,日期时间型等。
数据库/SQL的数据类型也是挺多的,但是我们掌握几个常用的就是,比如整型int,浮点型decimal(18,2)(共18位,16位整数部分与2位小数部分),字符型就是字符串类型varchar(100)(可以存储100个字符),日期时间型datetime(‘2018-05-23 15:00:00’)。当然还有其他的具体类型,但是我们在基础阶段就先知道这些就可以了。
小知识:char与varchar的区别。char(100)类型的字段一旦定义,不管里面是否真的有值,它就固定会占用100个字符对应的存储空间,这种类型对空间的利用率其实并不高。varchar(100)类型的字段定义后,它所占用的空间就是里面存储内容占用的空间,但是最大不会超过100个字符,这种类型对空间的利用率是很高的。
SQL语句概述
SQL,它的全称叫Structured Query Language,结构化的查询语言。之所以出现这个东西,是为了统一/屏蔽不同DBMS厂商生产的数据库产品之间的差异。
例如,同样是查询年龄等于30、成绩在80分以上的学生的记录,这个需求,在没有SQL语句之间,不同的DBMS,查询语法是严重不同的。
之前我们讲过,DBMS数据库产生是为了解决不同操作系统(文件系统)在存储数据时有平台差异这个问题的,但是,随着不同厂商/品牌的出现,虽然我们使用同一厂商的产品时,确实不用再担心平台差异了。但是如果我们刚刚开始使用一个厂商产品,后来由于某些原因使用另外一个厂商的产品,那么如果没有一个统一的查询语法,我们就必须要重新修改我们的程序源码,这样就会加大开发成本。但是如果我们有SQL语法标准,我们就无需重新修改程序了。这样会节省很多不必要的麻烦。
当然,既然SQL是一个标准、一种规范,不同厂商在实现这个标准的时候还是多多少会有点差异,比如标准实现程度不同,有的标准能支持有的不能支持,但是比起之前,乱七八糟的语法来说,方便很多。
SQL语句按功能分成几类:DDL、DML、DQL、还有其他一些分类(比如GRANT权限操作等),下面我们分别来讲常用的几类。
DDL : Data Definition Language (数据库定义语言) : create , drop , alter
DML : Data Manipulate Language(数据库操作语言) : insert , delete , update
DQL : Data Query Language (数据库查询语言) : select

猜你喜欢

转载自blog.csdn.net/a290575479/article/details/106763749
今日推荐