首页 > 技术文章 > mysql的一些基本概念

shipment 2021-01-25 21:32 原文

一:mysql数据库的一些基本概念

什么是数据库?

数据库是一个以某种有组织的方式存储的数据集合

数据库是管理这保存着有组织的数据的容器

上面的描述可能不是那么通俗易懂,我们举一些生活中的例子:

​ 我们每天都在访问各种网站,APP等,这些东西上都存储这大量信息。这些信息都需要有地方存储,这个存储的地方就是数据库。

​ 理解数据库最简单的方法就是将它想象成一个文件柜,这个文件柜是一个存放数据的物理位置,不用去想数据是什么以及是如何组织的。

数据库类别

早期的数据库大多根据数据模型来分类:

​ 层次式数据库

​ 网络式数据库

​ 关系型数据库。

现如今主要分为关系型数据库非关系型数据库

细分的话也可以分成以下几种:

​ 键值数据库

​ 文档数据库

​ 关系型数据库

​ 图数据库

​ 列族数据库

​ 时序数据库

关系型数据库

​ 关系型数据库(RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。具有多重安全防护措施和完善的性能监控体系,并提供专业的数据库备份、恢复及优化方案,使您能专注于应用开发和业务发展。

​ 就像Excel工作簿一样,关系型数据库也选用由列和行构成的二维表来管理数据,简单易懂。另外,它还利用SQL(Structured Query Language,结构化查询语言)对数据开展实际操作。

​ 关系型数据库常见的有 Oracle,SQLServer,DB2,Mysql,pgsql等,最好最稳定的当属Oracle,但是价格不菲,由于mysql开源免费,且功能不断完善,成为了互联网公司的首选。

非关系型数据库

​ 非关系型数据库也被称为NoSQL, NoSQL一词首先是Carlo Strozzi在1998年提出来的,指的是他开发的一个没有SQL功能,轻量级的,开源的关系型数据库。这个定义跟我们现在对NoSQL的定义有很大的区别,它确确实实字如其名,指的就是“没有SQL”的数据库。但是NoSQL的发展慢慢偏离了初衷,我们要的不是“no sql”,而是“no relational”,也就是我们现在常说的非关系型数据库了。

​ 由于非关系型数据库本身天然的多样性,以及出现的时间较短,因此,不想关系型数据库,有几种数据库能够一统江山,非关系型数据库非常多,并且大部分都是开源的。
这些数据库中,其实实现大部分都比较简单,除了一些共性外,很大一部分都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:
1).面向高性能并发读写的key-value数据库:key-value数据库的主要特点即使具有极高的并发读写性能,Redis,Tokyo Cabinet,Flare就是这类的代表
2).面向海量数据访问的面向文档数据库:这类数据库的特点是,可以在海量的数据中快速的查询数据,典型代表为MongoDB以及CouchDB
3).面向可扩展性的分布式数据库:这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化

​ 近年来,时序数据库也在一些监控服务中大显风采。

​ 常见的非关系型数据库有MongoDB,Redis,Cassandra,HBase,Oracle NoSQL,Memcached,CouchDB等等。

数据库中一些常见的概念

DB:数据库,存储数据的容器

DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB。

RDBMS:关系型数据库管理系统

SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件持有的,而是几乎所有的主流 数据库软件通用的语言。就好比见人说人话,见鬼说鬼话,跟数据库沟通就要讲sql语言。

sql分类

  • DQL(Data Query Language):数据查询语言 select 相关语句
  • DML(Data Manipulate Language):数据操作语言 insert 、update、delete 语句
  • DDL(Data Define Languge):数据定义语言 create、drop、alter 语句
  • DCL (Data Control Language):数据控制语言 GRANT:授权 、REVOKE:移除授权
  • TCL(Transaction Control Language):事务控制语言 set autocommit=0、start transaction、savepoint、commit、rollback

数据库存储特点

  • 数据存在表里,表放在数据库里,数据库又被DBMS管理

  • 一个库可以有多张表,每个表都有自己独一无二的名称(表名)来标识自己

  • 每个表中有一个或多个列,列也被称为字段,类似java中的“属性"

  • 表中每一行数据,类似于java中的“对象”

mysql数据类型

主要包括以下五大类:

  • 整数类型: bitbool 、 tinyint smallint mediumintintbigint
  • 浮点数类型: float doubledecimal
  • 字符串类型: charvarchar 、 tinyblob 、blobmediumblob longblobtinytext textmediumtext longtext
  • 日期类型: DateDateTimeTimeStampTimeYear
  • 其他数据类型:后面再总结

约束

分类 介绍
Not null
非空约束,用于指定改字段不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值, 数据库系统会报错。
default 默认值,用于指定字段的默认值,如果插入数据时没有插入值,则会使用默认值作为数据
unique 惟一键约束,一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行。允许为空(NULL),一个表可以存在多个
Primary key 主键,用于保证该字段的唯一性且不能为空,
foreign 外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性, 一个表的外键可以为空值, 若不为空值,则每一个外键值必须等于另一个表中主键的某个值。
check 检查性约束,用于检查数据是否符合范围,

关系型数据库常见组件

关系型数据库的常见组件有:

  • 数据库:database
  • 表:table,由行(row)和列(column)组成
  • 索引:index
  • 视图:view
  • 用户:user
  • 权限:privilege
  • 存储过程:procedure
  • 存储函数:function
  • 触发器:trigger
  • 事件调度器:event scheduler

推荐阅读