SQL学习总结(一)

目录

一、名词解释

1、什么是基本表

1.1 基本表概念

2、什么是视图

2.1 视图概念

2.2 视图优势

3、基本表、视图的区别、联系

3.1 二者区别

3.2 二者联系

4、什么是相关子查询

5、什么是联结查询

6、什么是嵌套查询

二、各类SQL语句编写

三、数据库软件使用

四、项目实战案例


一、名词解释

1、什么是基本表

1.1 基本表概念

        专业术语:基本表是指在SQL中,把传统的关系模型中的关系模式称为基本表(Base Table),基本表是本身独立的表一个关系就对应一个基本表

        如下图所示就是一个较为简单的、用来表示员工信息的基本表。

2、什么是视图

2.1 视图概念

        专业术语:视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

        视图是虚拟表,包含的数据不是真实存储在数据库中的;视图只不过是将多个基本表里的数据挑出所需部分,然后将它们组合起来展示给用户。

        视图还可按种类分为:关系视图、内嵌视图、对象视图、物化视图。(专栏讲解敬请关注...)

2.2 视图优势

        视图机制使用户可以将注意力集中在所关心的数据上,并且视图能够对机密数据提供安全保护。

        假设有一个Student基本表涉及全校20个院系的学生数据,我们可以通过创建20个视图,每个视图只包含一个院系的学生数据。

        每个院系主任查询自己系学生的数据时,只会看到自己系学生的信息,就不会受其他系学生的数据干扰,导致心态爆炸。

        同时呢,由于无法看到、无法对其他系学生数据进行删除、修改等操作,也就避免了系主任的骚操作,保护了学生信息的安全,并且维护了各院系之间的公平竞争。

3、基本表、视图的区别、联系

3.1 二者区别

表3-1 基本表、视图的区别
基本表视图
实表,有实际的物理记录虚表,没有实际的物理记录,不占用物理空间
操作基本表会影响视图操作视图不影响基本表
属于全局模式中的表属于局部模式的表
属于内模式属于外模式
是内容是窗口

3.2 二者联系

1.视图是在基本表的基础上建立的表。

2.它的结构和内容都来自基本表。

3.一个视图可以只来自于一个基本表,也可以来自多个基本表。

假设有两个基本表:

Boys(ID,Name,Sex,FatherID,MotherID)

Girls(ID,Name,Sex,FatherID,MotherID)

 执行下面的sql语句:

CREATE TABLE Boys (
    ID       INTEGER PRIMARY KEY,
    Name     STRING,
    Sex      STRING,
    FatherID INTEGER NOT NULL,
    MotherID INTEGER NOT NULL
);
CREATE TABLE Girls (
    ID       INTEGER PRIMARY KEY,
    Name     STRING,
    Sex      STRING,
    FatherID INTEGER NOT NULL,
    MotherID INTEGER NOT NULL
);

 创建了两个表并添加了数据后:

基本表:Boys
IDNameSexFatherIDMotherID
11001王世轩1101
21002刘浩成2102
基本表:Girls
IDNameSexFatherIDMotherID
11003王晓花1101
21004赵兰岚2103
这时我们创建一个Children视图:

Children(FatherID,SonID,SonName,DaughterID,DaughterName)

执行下面语句:

CREATE VIEW Children AS
    SELECT Boys.FatherID,
           Boys.ID AS SonID,
           Boys.Name AS SonName,
           Girls.ID AS DaughterID,
           Girls.Name AS DaughterName
      FROM Boys,
           Girls
     WHERE Boys.FatherID = Girls.FatherID;
视图:Children
FatherIDSonIDSonNameDaughterIDDaughterName
11001王世轩1003王晓花
21002刘浩成1004赵兰岚

这就是视图和基本表的联系,视图Children是从基本表Boys、Girls中取数据生成的。

Children表在这里表示的关系是:同父的兄妹关系(因为第二行数据属于同父异母的兄妹)

①首先判断Boys表内的FatherID(1)与Girls表内的FatherID(1)是否相同;

②若相同,则从Boys表中取出儿子的ID(1001)、儿子的姓名(王世轩);

③从Girls表中取出女儿的ID(1003)、女儿的姓名(王晓花);

④由于父亲的ID(1)在两个表中都存在且相等,那么只需要从任意一个表中取出即可;

⑤最后将这些SELECT出来的数据组成视图Children。

如果还有人不知道视图是怎么来的请给我寄刀片......我去乌江zw

4、什么是相关子查询

相关子查询:先执行主查询,再针对主查询返回的每一行数据执行子查询

        即:内层的查询会用到外层查询的记录项数据,子查询依赖于主查询,它们存在相关联性。

非相关子查询(独立子查询):执行顺序是先执行子查询,再执行主查询。

举例:

        背景:现在大一计科专业的辅导员,他现在有两份基本表:一份大一计科专业高数成绩挂科的基本表【math】,一份计科1班学生的基本表【student】。

        需求:帮辅导员查询“计科1班不在【math】表内同学的学号”

        翻译:查询“计科1班高数成绩没有挂科(及格)的同学的学号”

        相关子查询语句:select distinct sno from student where not exists(select sno from math where student.sno = math.sno)

        非相关子查询语句:select distinct sno from student where sno not in (select distinct sno from math)

       “相关子查询”:1.首先进行括号内的子查询,从math表里获取math.sno,且该sno需与主查询student的一条查询记录的sno相同(子查询的结果集就是计科1班不及格的学生学号);2.然后进行主查询,判断student表的sno是否不在子查询的结果集内(主查询的结果为:不在挂科结果集的学号)。

        “非相关子查询”:1.首先进行括号内的子查询,从math基本表里将学号(sno)select出,得到多行sno的数据;2.然后进行主查询,将student表内的sno与子查询的结果集进行比对,得到多行不在子查询结果集里的sno数据,查询结束。

5、什么是联结查询

根据两个表或多个表的列之间的关系,从这些表中查询数据。

6、什么是嵌套查询

嵌套查询是指在一个外层查询中包含有另一个内层查询。其中外层查询称为主查询,内层查询称为子查询。SQL允许多层嵌套,由内而外地进行分析,子查询的结果作为主查询的查询条件。

最近更新:2022.4.24日

未完待续...

二、各类SQL语句编写

三、数据库软件使用

四、项目实战案例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abcdefzzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值