mysql的一些基本概念
一: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数据类型
主要包括以下五大类:
- 整数类型:
bit
、boo
l 、tinyint
、smallint
、mediumint
、int
、bigint
- 浮点数类型:
float
、double
、decimal
- 字符串类型:
char
、varchar
、 tinyblob 、blob
、mediumblob
、longblob
、tinytext
、text
、mediumtext
、longtext
- 日期类型:
Date
、DateTime
、TimeStamp
、Time
、Year
- 其他数据类型:后面再总结
约束
分类 | 介绍 |
---|---|
Not null |
非空约束,用于指定改字段不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值, 数据库系统会报错。 |
default | 默认值,用于指定字段的默认值,如果插入数据时没有插入值,则会使用默认值作为数据 |
unique | 惟一键约束,一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行。允许为空(NULL),一个表可以存在多个 |
Primary key | 主键,用于保证该字段的唯一性且不能为空, |
foreign | 外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性, 一个表的外键可以为空值, 若不为空值,则每一个外键值必须等于另一个表中主键的某个值。 |
check | 检查性约束,用于检查数据是否符合范围, |
关系型数据库常见组件
关系型数据库的常见组件有:
- 数据库:database
- 表:table,由行(row)和列(column)组成
- 索引:index
- 视图:view
- 用户:user
- 权限:privilege
- 存储过程:procedure
- 存储函数:function
- 触发器:trigger
- 事件调度器:event scheduler