什么是数据库
数据库是一个以某种有组织的方式存储的数据集合,是存储和管理数据的仓库。本质上便是存储数据的文件系统。
用户在运用数据库的时候,不会直接去操作这些文件,而是运用了数据库厂商封装好的数据库软件,亦便是数据库管理系统(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。
|