网站首页 > 精选文章 正文
什么是数据库
数据库是一个以某种有组织的方式存储的数据集合,是存储和管理数据的仓库。本质上就是存储数据的文件系统。
用户在使用数据库的时候,不会直接去操作这些文件,而是使用了数据库厂商封装好的数据库软件,也就是数据库管理系统(DBMS)。
数据库管理系统对数据库进行统一管理和控制,保证数据库的安全性和完整性。平常所说的数据库,其实指的就是对应数据库的 DBMS,数据库管理系统。
使用数据库存储数据,用户可以非常方便对数据库中的数据进行增加,删除,修改及查询操作。
数据库可以分为关系型数据库和非关系型数据库。
关系型数据库产品包括 MySQL、Oracle、Postgres、SQLite 和 SQLServer。这几个数据库是目前行业里使用非常广泛的。其中最具有代表性的是 MySQL,它是使用最广泛的数据库。
这些关系型数据库都可以使用 SQL 语句进行操作。
非关系型数据库常见的有 MongoDB、Redis 等等。
什么是 SQL
SQL 是结构化查询语言(Structured Query Language) 的简称,是一种特殊目的的编程语言,用来存取数据以及查询、更新和管理关系数据库系统。
SQL 是所有关系型数据库的统一查询规范,所有的关系型数据库都可以使用 SQL,不过不同数据库之间的 SQL 语法会有一些区别。
SQL 可以分为以下几种类型
- 数据定义语言:简称 DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。
 - 数据操作语言:简称 DML(Data Manipulation Language),用来对数据库中表的记录进行更新。
 - 数据查询语言:简称 DQL(Data Query Language),用来查询数据库中表的记录。
 - 数据控制语言:简称 DCL(Daat Control Language),用来定义数据库的访问权限和安全级别, 以及创建用户。
 
在测试的场景中,更多的使用的是数据查询语言 DQL。
什么是表连接
关系型数据库中存放的,是一张一张的表,各个表之间是具有联系的。
数据库中的多个表间是如何建立联系的呢?
拿学生表和成绩表来举例。假设学生表的四列分别代表学号,姓名,出生日期和性别。成绩表的三列分别是学号,课程编号和成绩。
学生表 student
studentId  | name  | birthDate  | sex  | 
001  | 哈利  | 1991-01-01  | 男  | 
002  | 赫敏  | 1991-05-07  | 女  | 
003  | 罗恩  | 1991-09-11  | 男  | 
004  | 金妮  | 1996-11-15  | 女  | 
成绩表 score
studentId  | courseId  | score  | 
001  | C0001  | 90  | 
001  | C0002  | 95  | 
002  | C0001  | 100  | 
002  | C0003  | 99  | 
002  | C0004  | 100  | 
005  | C0002  | 92  | 
两个表都有【studentId】,也就是说,它们是可以通过相同的列【studentId】关联起来。
如果要查询学生表中 studentId 为“001”号学生的成绩是多少,就可以在成绩表中查找 studentId 为“001”号的那一行,最后在成绩表里发现有 2 行数据的 studentId 都是“001” ,对应的就找到了该学生的两门课程的成绩。
所以关系型数据库里的【关系】,就是数据能够对应的匹配,它在关系数据库中被称为联结,英文名是 JOIN。
在数据查询的时候,如果要查询的数据分布在多张表中的时候,表连接(JOIN)在多个表中间通过一定的连接条件,使表之间发生关联进而能从多个表之间获取数据。
内链接,左连接与右连接
表连接中最常见的类型就是内连接、左连接和右连接。
连接类型  | 关键词  | 定义  | 
内连接  | (INNER) JOIN  | 获取两个表中字段匹配关系的记录  | 
左连接  | LEFT (OUTER) JOIN  | 获取左表所有记录,右表没有对应匹配的记录时显示为 NULL  | 
右连接  | RIGHT (OUTER) JOIN  | 获取右表所有记录,左表没有对应匹配的记录时显示为 NULL  | 
内连接
获取两个表中字段匹配关系的记录,也就是两张表的交集。可以通过主外键关系做为条件来去除无用信息。
语法:
SELECT * 
FROM <表名1> [表别名1] 
INNER JOIN <表名2> [表别名2]
ON <表别名1>.<外键列>=<表别名2>.<主键列>;
拿学生表和成绩表来举例。查询有成绩的学生信息。
SQL 语句为
SELECT * 
FROM student st
INNER JOIN score sc
ON st.studentId=sc.studentId;
查询结果为
左连接
先查询出左表,以左表为主,然后查询右表,右表中满足条件的显示出来,不满足条件的显示 NULL。
语法:
SELECT * 
FROM <表名1> [表别名1] 
LEFT [OUTER] JOIN <表名2> [表别名2]
ON <表别名1>.<外键列>=<表别名2>.<主键列>;
还是拿学生表和成绩表来举例。查询有信息的学生的成绩。
SQL 语句为
SELECT * 
FROM student st
LEFT JOIN score sc
ON st.studentId=sc.studentId;
查询结果为
右连接
先把右表中所有记录都查询出来,以右表为主,然后查询左表,左表中满足条件的显示出来,不满足的显示 NULL。
语法:
SELECT * 
FROM <表名1> [表别名1] 
RIGHT [OUTER] JOIN <表名2> [表别名2]
ON <表别名1>.<外键列>=<表别名2>.<主键列>;
还是拿学生表和成绩表来举例。查询所有有成绩的学生信息。
SQL 语句为
SELECT * 
FROM student st
RIGHT JOIN score sc
ON st.studentId=sc.studentId;
查询结果为
总结
数据库就是一个以某种有组织的方式存储的数据集合,是存储和管理数据的仓库。本质上就是存储数据的文件系统。
用户使用数据库管理系统(DBMS)对数据库进行统一管理和控制,保证数据库的安全性和完整性。平常说的数据库一般指代的就是数据库管理系统。
关系型数据库,比如使用最广泛的 MySQL,可以使用 SQL 结构化查询语句来进行数据库的操作。
关系型数据库中多表查询中比较常见的表连接形式分别为内连接、左连接和右连接。
- 内连接:通过关键字 (INNER) JOIN 获取两个表中字段匹配关系的记录。可以通过主外键关系做为条件来去除无用信息。
 - 左连接:通过关键字 LEFT JOIN 获取左表所有记录。也就是先查询出左表,以左表为主,然后查询右表,右表中满足条件的显示出来,不满足条件的显示 NULL。
 - 右连接:通过关键字 RIGHT JOIN 获取右表所有记录。也就是先把右表中所有记录都查询出来,以右表为主,然后查询左表,左表中满足条件的显示出来,不满足的显示 NULL。
 
猜你喜欢
- 2025-07-24 数据库设计规范——3. SQL语句(sql数据库程序设计)
 - 2025-07-24 数据库事务以及事务的四个特性(数据库中的事务)
 - 2025-07-24 一文快速掌握MongoDB(mongodb 入门)
 - 2025-07-24 为啥不推荐使用外键?(为什么不能添加外键约束)
 - 2025-07-24 阿里云代理商:关系型数据库与NoSQL数据库的区别与选择
 - 2025-07-24 多对多关系的数据库设计(数据库中多对多的关系设计)
 - 2025-07-24 Java面试题:数据库优化策略有哪些?
 - 2025-07-24 【推荐】一款实用且跨平台的数据库管理神器,支持Web浏览器
 - 2025-07-24 数据库系统原理:数据插入(数据库插数据语句)
 - 2025-07-24 GBASE南大通用示例,使用 INDEX DISABLED 创建外键约束
 
- 最近发表
 
- 标签列表
 - 
- 向日葵无法连接服务器 (32)
 - git.exe (33)
 - vscode更新 (34)
 - dev c (33)
 - git ignore命令 (32)
 - gitlab提交代码步骤 (37)
 - java update (36)
 - vue debug (34)
 - vue blur (32)
 - vscode导入vue项目 (33)
 - vue chart (32)
 - vue cms (32)
 - 大雅数据库 (34)
 - 技术迭代 (37)
 - 同一局域网 (33)
 - github拒绝连接 (33)
 - vscode php插件 (32)
 - vue注释快捷键 (32)
 - linux ssr (33)
 - 微端服务器 (35)
 - 导航猫 (32)
 - 获取当前时间年月日 (33)
 - stp软件 (33)
 - http下载文件 (33)
 - linux bt下载 (33)
 
 
