在计算机领域中有许多伟大的设计理念和思想;在Unix中,一切皆文件;在面向对象的编程语言中,一切皆对象;在关系型数据库中,一切皆关系。
关系模型以集合论中的关系概念为基础;无论是现实世界的实体对象还是它们之间的联系都用关系表示。我们在数据库中看到的关系就是二维表,由行和列组成。所以可以说是关系表是由数据行构成的集合。
关系模型由数据结构、关系操作、完整性约束三部分组成:
SQL是操作关系数据库的标准语言。我们通常只需要说明想要的结果,而将数据处理的过程交给数据库管理系统。SQL是一种面向集合的编程语言,它的操作对象是集合,操作的结果也是集合。(在关系数据库中,关系、表、集合三者通常表示相同的概念)
SELECT
select id,name,age,create_time from student;
select *
from (select id,name,age,create_time from student)t
第一个SQL的作用是从学生表中查询学生信息。from之后是一个表,不仅如此查询结果也是一个表,我们可以将查询的结果作为一个表使用,()内的内容被称为派生表,指定了一个别名叫做t。
select字句用于指定需要查询的字段,可以包括表达式、函数值等。select在关系操作中被称作为投影。选择自己想要的结果重新组成一个集合。
where用于指定数据过滤的条件,在关系运算中被称作为选择。
order by用于对查询的结果进行排序,总之,SQL可以完成各种数据操作,过滤、分组、排序、限定数量等,所有这些操作的对象是关系表,结果也是关系表。
分组操作和其他的关系操作不同,因为它改变了关系的结构。
select max(id),max(name),age,count(*) from student group by age
分组的其他字段,查询时都需要套用函数字段进行取值,否则出现多个值时不知道取哪个值,会出现报错。所以,group by 改变了集合元素的结构,创建了一个全新的关系。
SQL面向集合特性最明显的体现就是union、intersect、except/minus,这些集合运算符的作用都是将两个集合并成一个集合,必须满足一下条件:
集合操作运算符具体操作:
在SQL中,不仅实体对象存储在关系表中,对象之间的联系也存储在关系表中。当我们需要获取这些相关的数据时,需要使用到另外一个操作:连接查询。
JOIN:连接查类型包括内连接、外连接、交叉连接等,外连接分为左外连接、右外连接以及全外连接:
表示数据操作语言,也就是插入、更新和删除。由于我们经常插入单条记录,并没有意思到实际上是以表为单位进行操作。update和delete语句都是以关系表尾单位的操作,只不过我们习惯说更新一行
数据或者删除几条记录。
原文:https://www.cnblogs.com/yfstudy/p/13548755.html