一切皆关系

1、什么是数据库?

数据库(Database)是由许多相关数据组成的集合。当即社会,数据无处不在,数据库也是如此。例如,我们每个人手机中的通讯录联系人列表就是一个简单的数据库;我们在网上电商平台购物时,浏览、购买的行为信息也被存储在电商系统的用户行为数据库中,可以说,几乎所有的信息系统都有一个对应的数据库。

2、什么是数据库管理系统?

数据库管理系统(Database Management System)和数据库是两个不同的概念,数据库管理系统是用于定义、操作、管理和维护数据库的软件系统。目前来说,我们有两种常用方式来使用数据库管理系统,一种是直接方式,通过在各家数据库供应商官网下载系统压缩包并配置系统环境变量,然后直接在系统命令窗口进行交互。另一种间接方式,在第一种直接方式的基础上,下载并安装目前市面上流行的数据库管理系统可视化界面应用软件,例如,Navicat。

3、数据库和数据库管理系统的关系?

数据库是数据的集合,自身就是数据源;而数据库管理系统是一种操作系统软件,作用是管理这些数据,管理方式是通过SQL(Structured Query Language 结构化查询语言)来控制。

4、什么是关系型数据库?

关系型数据库(Relational Database)指的是基于关系模型所构建的数据库。其中的关系直接具体表现为二维表(Table 关系表),二维表则由行(Row 数据行)和列(Column 关系列,由字段属性组成)组成。因此,也可以说二维表是由列定义关系下的所有数据行构成的集合。一个关系数据库则是由一个或者多个关系表组成。

5、什么是SQL?

SQL(Structured Query Language 结构化查询语言)是访问和操作关系型数据库的标准语言。所有的关系型数据库都可以使用SQL语句进行数据访问和控制,根据SQL的功能可以将其划分为一下类型:

  • DQL(Data Query Language)数据查询语言。对应 select 语句,用于查询数据。
  • DML(Data Manipulation Language)数据操作语言。包括 insert新增、update更新、delete删除、merge合并等操作。
  • DDL(Data Definition Language)数据定义语言。用于定义数据库中对象,例如,表、索引,视图等等。包括 create创建、alter修改、drop删除等操作。
  • TCL(Transaction Control Language)事务控制语言。用于管理数据库中的事务,包括 begin开启事务、commit提交事务、rollback回滚事务等操作。
  • DCL(Data Control Language)数据控制语言。用于控制数据的访问权限,包括 grant授权、revoke撤销权限等操作。

6、SQL的语法特性

1、简单易懂

SQL语句非常接近自然语言(英语),我们只需要掌握几个简单的英语单词并了解一些简单的英语语法,就可以完成绝大多数的数据库操作。下面是一个简单的示例:

SELECT
	user_id,
	username,
	password,
	age 
FROM
	t_user 
WHERE
	age >= 18 
ORDER BY
	user_id;
2、面向集合

对于SQL语句而言,它操作的对象是一个数据集合(关系表),操作的结果也是一个数据集合(关系表),也就是说,SQL是一种面向集合的语言。示例如下:

SELECT
	user_id,
	username,
	password,
	age 
FROM
	t_user;

其中 t_user 是一张关系表,它是该SQL语句的操作对象,同时,查询的结果也是一张关系表,只不过该表是一张临时表,且该表只有指定的四个字段属性。也正是因为SQL语句操作的结果也是关系表,所以,我们可以在该结果之上继续进行SQL操作。示例如下:

SELECT
	tu.username,
	tu.password 
FROM
	( SELECT user_id, username, password FROM t_user ) tu

在上面的SQL示例中,我将括号中的 select 语句的操作结果看作一个整体,他就是一张有三个字段属性的临时表,由于他是临时表且没有具体名称,因此,我将其取名为 tu 并将其作为输入对象传递给外部的 select 语句,最终整个SQL语句操作的结果依然是一个关系表,这种嵌套在其他SQL语句中的查询语句被称之为子查询。
上面的示例中,我以 select 语句作为例子来说明SQL语句面向集合的特性,那么对于 insert、update、delete 这些语句而言是否同样符合该特性呢?下面我再以 insert 语句来进一步说明。
同样一上面的 t_user 表为例,语句如下:

INSERT INTO t_user ( user_id, username, password )
VALUES
	( 2023, 'hello', 123456 );

该 insert 语句很简单,就是往 t_user 表中插入一条数据,那么该 insert 语句符合面向集合特性吗?答案是肯定的,通常我们插入一条数据会很容易导致我们以为插入语句是以数据行为基本单元的操作,但实际上一行数据也是一个集合(关系表),只不过这个集合只有一个元素而已。

猜你喜欢

转载自blog.csdn.net/python15397/article/details/130528186