数据库和SQL初探
- 1. 什么是数据库
- 2. 数据库的结构
- 3. MySQL表定义相关操作
- 4. MySQL体系结构和存储引擎
1. 什么是数据库
- 将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。用来管理数据库的计算机系统称为数据库管理系统 ( D a t a b a s e M a n a g e m e n t S y s t e m , D B M S ) (Database\ Management\ System,\ DBMS) (Database Management System, DBMS)
- 那么为什么要使用数据库呢?如果使用文本文件或者类似 E x c e l Excel Excel的电子制表软件不是很简单吗?这主要是基于下面几点考虑
- 第一是无法多人共享数据,因为你打开文件编辑的时候其他用户就没办法编辑了,因为写者之间是互斥的,这样就会导致类似购买商品的操作变得效果很差
- 第二是无法提供操作大量数据的格式,因为如果想从数百万条或者更多数据中取到你想要的,肯定要通过某些算法比如二分、分块等进行查找,要不效率低到离谱,所以这些数据一定要有某些格式,比如都是 i n t int int类型放到一个数组里面,也就是保存数据为适当的格式,但是文本文件这种东西做不到
- 第三是想实现读写自动化需要进行编程,用过数据库的话应该知道我们查找数据的时候只需要几条或者一些 s q l sql sql就可以了,但是试想一下把它们放在文本文件或者 E x c e l Excel Excel里面,肯定要通过编程去获取数据,所以这就为用户造成了巨大的使用门槛
- 第四是无法应对突发事故,当文件被误删或者硬件出现故障导致无法读取的时候可能造成重要数据损失
上述问题均可通过 D B M S DBMS DBMS来解决
2. 数据库的结构
- 使用
R
D
B
M
S
(
RDBMS(
RDBMS(关系数据库管理系统
)
)
)的常见系统结构如下图
- 非常简单,客户端可以有多个,它们通过网络访问服务端
- 每个数据库都是由若干个表组成的,如下图
- 表的列(垂直方向)称为字段,它代表了保存在表中的数据项目;行称为记录,相当于一条数据,关系型数据库必须以行为单位进行读写
3. MySQL表定义相关操作
- 首先下载一下MySQL数据库,然后
mysql -u 用户名 -p 密码
进入MySQL终端,之后我们先用create shop
创建一个数据库叫做shop
,之后我们使用下面的SQL来创建一下Product
表
CREATE TABLE `Product` (
`product_id` char(4) NOT NULL,
`product_name` varchar(100) NOT NULL,
`product_type` varchar(32) NOT NULL,
`sale_price` int DEFAULT NULL,
`purchase_price` int DEFAULT NULL,
`regist_date` date DEFAULT NULL,
PRIMARY KEY (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
- 如果你想查看一下
shop
的创建SQL,你可以使用show create table shop
来查看 - 这段代码应该比较好理解,声明了一些字段并且注明数据类型以及是否允许为空,然后
PRIMARY KEY
指定主键,你也可以不指定,但是一般都有主键,因为它里面含着索引,可以加快查询速度,并且具备很多性质,这个以后再说。最后你会看到一行陌生代码,里面有ENGINE, CHARSET, COLLATE
这三个选项,分别表示存储引擎,编码方式和优先级,编码方式影响你中文之类的能否正常显示,优先级影响order by
出来的顺序,有兴趣可深入了解一下,之后介绍MySQL的一些存储引擎,我们先说说什么是SQL - SQL指的是用关键字、表名、列名等组合而成的一条语句来描述操作的内容,大致分为以下三类
-
D
D
L
(
D
a
t
a
D
e
f
i
n
i
t
i
o
n
L
a
n
g
u
a
g
e
,
DDL(Data\ Definition\ Language,
DDL(Data Definition Language,数据定义语言
)
)
),包含
CREATE,DROP,ALTER
三种指令,分别是创建、删除和修改数据库和表等对象 -
D
M
L
(
D
a
t
a
M
a
n
i
p
u
l
a
t
i
o
n
L
a
n
g
u
a
g
e
DML(Data\ Manipulation\ Language
DML(Data Manipulation Language,数据操纵语言
)
)
),包含
SELECT,INSERT,UPDATE,DELETE
四种指令,分别是查询、插入、修改和删除表中的数据 -
D
C
L
(
D
a
t
a
C
o
n
t
r
o
l
L
a
n
g
u
a
g
e
,
DCL(Data\ Control\ Language,
DCL(Data Control Language,数据控制语言
)
)
),包含
COMMIT,ROLLBACK,UPDATE,DELETE
四种指令,分别表示确认变更(事务提交)、取消变更(事务回滚)、赋予用户操作权限和取消用户操作权限
- 如果使用过数据库的话,应该知道我们用的最多的是 D M L DML DML
- SQL有一些书写规则,首先SQL是逐条执行的,每一句之后要用
;
结尾;然后它不分关键字的大小写,也就是SELECT
和select
是一样的;然后写某些常数的时候,如果是数字就直接写就行,如果是字符串要用单引号'
或者双引号"
括起来,还有一种反引号可用来区分关键字和普通字符串 - 最后一个概念叫半角空格,单词和单词中间需要有半角空格或者换行来进行分隔,啥叫半角字符呢?就是只占1个字节的字符,那么全角字符指的是占两个标准字符位置的字符,大概意思是占2个字节,具体根据系统而定
4. MySQL体系结构和存储引擎
- 首先区分一下数据库和实例的概念,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例是程序,相当于一个进程,是一个软件,应用程序通过数据库实例和数据库打交道
- 体系结构如下图
- 上图展现了若干存储引擎,在MySQL8.0中默认存储引擎是InnoDB,它的设计目标主要面向在线事务处理,特点是行锁设计、支持外键,且默认读取操作不会产生锁,实现了事务的四种隔离级别,在之后的文章中会详细介绍