SQL必知必会笔记(13~16章)

第十三章 创建高级联结

1、别名:缩短SQL语句,允许在一条Select语句中多次使用相同的表

SELECT A.Name, A.Maths, A.English FROM transcript AS A INNER JOIN student_id As B ON A.Name = B.Name;

2、Oracle数据库中没有AS关键字,直接在表名或者列名后加上别名即可

SELECT A.Name, A.Maths, A.English FROM transcript  A INNER JOIN student_id  B ON A.Name = B.Name;

​​​​​​3、联结类型:自联结、自然联结、外联结

4、自联结:针对相同的表进行的连接被称为“自联结”

SELECT A.Name AS name1, B.Name AS name2 FROM transcript AS A JOIN transcript AS B ON A.Name == B.Name

5、外联结

外联结分为主表和从表,在内联结里可以将两个表的数据都列出来,但是外联结会把主表的数据都列出来,如果从表中没有对应的数据,那么输出就会设置为null。

SELECT transcript.English, transcript.Name FROM transcript LEFT JOIN student_id ON student_id.Name = transcript.Name 

eab3c55c0f6d4f61abdbb1b1b0ae9ba7.png

6、不同的数据库管理器不是支持所有的外联结类型,例如SQLite支持左联结,但是不支持右联结类型,MariaDB、MySQL 和 SQLite 不支持 FULL OUTER JOIN 语法

7、外联结的基本形式:左外联结和右外联结。他们之间的唯一的差别是所关联表的顺序。调整FROM或者WHERE子句中表的顺序,左外联结可以转换为右外联结。这两种联结方式可以互换使用。

第十四章 组合查询

1、使用UNION操作符将多条SELECT语句组成一个结果集

2、

SELECT transcript.Maths FROM transcript WHERE transcript.Name = 'Lily'
UNION 
SELECT transcript.Maths FROM transcript WHERE transcript.Name in ('Tom', 'Ben')
这里如果select查询的列数不一致,会报错:

SELECTs to the left and right of UNION do not have the same number of result columns

3、UNION可以进行多条组合,具体条数SQL里没有限制,要看具体的DBMS

4、多条UNION和多个where子句的性能没有明确的区别,要在具体的DBMS和查询条件去对比使用,但是UNION ALL是WHERE无法取代的,如果确实需要每个条件的匹配行全部出现(包括重复行), 就必须使用 UNION ALL,而不是 WHERE

5、UNION规则:

a.UNION 必须由两条或两条以上的 SELECT 语句组成,语句之间用关键字 UNION 分隔(因此,如果组合四条 SELECT 语句,将要使用三个 UNION 关键字);

b.UNION 中的每个查询必须包含相同的列、表达式或聚集函数(不过, 各个列不需要以相同的次序列出);

c.列数据类型必须兼容:类型不必完全相同,但必须是 DBMS 可以隐含 转换的类型(例如,不同的数值类型或不同的日期类型)

第十五章 插入数据

1、插入的方式:插入完整的行、插入行的一部分、插入某些查询的结果
2、插入完整的行
INSERT INTO transcript VALUES('Tony', 99, 97); //按照字段顺序插入
INSERT INTO transcript (Name, Maths, English) VALUES ('Jim', 88, 78);//更推荐方式,列出表字段名称,并按照其顺序插入

3、插入行的一部分

INSERT INTO transcript (Name, Maths) VALUES ('Fox', 79);

这里要注意,未插入的字段在要确保不是非空字段或者索引字段,否则这些字段在INSERT不插入时,SQL语句会报错

4、插入某些查询的结果
INSERT INTO transcript (Name) SELECT Name from student_id WHERE No = 4;
INSERT 和SELECT的组合可以一次性插入多条符合查询到条件的语句。

5、表的内容复制创建

CREATE TABLE transcript_bak AS SELECT * FROM transcript;

第十六章 更新和删除数据

1、更新数据方式:更新表中的所有行;更新表中的特定行
2、更新语句的三个组成部分:要更新的表名;列名和他们的新值;确定要更新哪些行的过滤条件
UPDATE transcript SET Maths = 99 WHERE Name = 'Tom';
要素1:transcript;要素2:Maths = 99; 要素3: Name = 'Tom

3、Update可以结合SELECT查询子句使用

4、删除数据方式:删除表中所有行;删除表中的特定行

5、删除指定行:

DELETE FROM transcript WHERE Name = 'Ball'

两个要素:1、表名transcript;2:条件Name = 'Ball'

6、如果在更新和删除中没有WHERE 条件,就代表针对全表的记录做操作

7、下面是许多 SQL 程序员使用 UPDATE 或 DELETE 时所遵循的重要原则。 

a.除非确实打算更新和删除每一行,否则绝对不要使用不带 WHERE 子句 的 UPDATE 或 DELETE 语句。 

b.保证每个表都有主键,尽可能 像 WHERE 子句那样使用它(可以指定各主键、多个值或值的范围)。 

c. 在 UPDATE 或 DELETE 语句使用 WHERE 子句前,应该先用 SELECT 进 行测试,保证它过滤的是正确的记录,以防编写的 WHERE 子句不正确。 

d. 使用强制实施引用完整性的数据库, 这样 DBMS 将不允许删除其数据与其他表相关联的行。 

e.有的 DBMS 允许数据库管理员施加约束,防止执行不带 WHERE 子句 的 UPDATE 或 DELETE 语句。如果所采用的 DBMS 支持这个特性,应 该使用它

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/372434.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机学院寒假社会实践】——服务走进社区,共绘幸福蓝图

为深入贯彻落实志愿者服务精神,扎实推进志愿者服务质量,2024年1月28日,曲阜师范大学计算机学院“青年扎根基层,服务走进社区”社会实践队队员周兴睿在孙宇老师的指导下,来到山东省滨州市陈集街道社区开展了为期一天的“…

Unity_ShaderGraph节点问题

Unity_ShaderGraph节点问题 Unity版本:Unity2023.1.19 为什么在Unity2023.1.19的Shader Graph中找不见PBR Master节点? 以下这个PBR Maste从何而来?

MQ,RabbitMQ,SpringAMQP的原理与实操

MQ 同步通信 异步通信 事件驱动优势: 服务解耦 性能提升,吞吐量提高 服务没有强依赖,不担心级联失败问题 流量消峰 ​ 小结: 大多情况对时效性要求较高,所有大多数时间用同步。而如果不需要对方的结果,且吞吐…

Zookeeper相关面试准备问题

Zookeeper介绍 Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper就负责通知已经在Zoo…

SpringAOP+SpringBoot事务管理

项目搭建SpringAOPSpringBoot中管理事务AOP案例实战-日志记录日志系统 一、项目搭建 第一步:构建项目 第二步:导入依赖 第三步:配置信息 自动配置(项目自动生成的启动类) /*** 启动类:申明当前类是一个…

模拟被观察物体的位置和方向

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题:模拟被观察物体的位置和方向,以帮助用户理解相机在观察特定对象时的位置和朝向。vtkCameraOrientationWidget 模拟的是被观察…

Redis核心技术与实战【学习笔记】 - 17.Redis 缓存异常:缓存雪崩、击穿、穿透

概述 Redis 的缓存异常问题,除了数据不一致问题外,还会面临其他三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。这三个问题,一旦发生,会导致大量的请求积压到数据库。若并发量很大,就会导致数据库宕机或故…

九州金榜|如何做好家庭教育

孩子的家庭教育是每个家庭都要做的,也是每个家长面临的事情,同样不同的家庭教育教育出来的孩子性格也各不相同,有时候家长看别别人家的孩子品学兼优非常羡慕,很多家长会把问题归结到孩子身上,其实有没有想过是家庭教育…

C++之函数重载,默认参数,bool类型,inline函数,异常安全

函数重载 在实际开发中,有时候需要实现几个功能类似的函数,只是细节有所不同。如交换两个变量的值,但这两种变量可以有多种类型,short, int, float等。在C语言中,必须要设计出不同名的函数,其原型类似于&am…

【新书推荐】6.2节 段寄存器

在16位汇编语言的源程序中,我们将源程序按照不同的功能和作用划分为若干个逻辑段,如数据段用来存储数据,代码段用来存储代码,堆栈段用来保存临时数据,附加段用来拷贝数据。我们可以把汇编语言的源程序抽象地理解为数据…

TCP与UDP:传输层协议的差异与选择

在计算机网络中,传输控制协议(TCP)和用户数据报协议(UDP)是两种常用的传输层协议。然而,随着互联网的快速发展,传统的TCP和UDP在某些场景下存在一些限制。为了解决这些问题,出现了新…

如何使用VS Code编写小游戏并实现公网游玩本地游戏【内网穿透】

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程,我们将通过VS Code实现远程开发MENJA小游戏,并通过cpolar内网穿透发布到公网,分…

No matching client found for package name ‘com.unity3d.player‘

2024年2月5日更新 必须使用Unity方式接入Unity项目!一句话解决所有问题。(真的别玩Android方式) 大致这问题出现原因是我在Unity采用了Android方式接入Firebase,而Android接入实际上和Unity接入方式有配置上的不一样,我…

爬虫工作量由小到大的思维转变---<第四十五章 Scrapyd 关于gerapy遇到问题>

前言: 本章主要是解决一些gerapy遇到的问题,会持续更新这篇! 正文: 问题1: 1400 - build.py - gerapy.server.core.build - 78 - build - error occurred (1, [E:\\项目文件名\\venv\\Scripts\\python.exe, setup.py, clean, -a, bdist_uberegg, -d, C:\\Users\\Administrat…

链表经典算法(+OJ刷题)

文章目录 前言一、移除链表元素二、链表的中间节点三.反转链表四.合并两个有序链表五.分割链表六.环形链表的约瑟夫问题总结 创作不易,点赞收藏一下呗!!! 前言 在上一节,我们介绍了单链表的增,删&#xff…

机器学习基础、数学统计学概念、模型基础技术名词及相关代码个人举例

1.机器学习基础 (1)机器学习概述 机器学习是一种人工智能(AI)的分支,通过使用统计学和计算机科学的技术,使计算机能够从数据中学习并自动改进性能,而无需进行明确的编程。它涉及构建和训练机器…

用Python实现MD5加密

用Python实现MD5加密 用Python实现MD5加密时用到的是hashlib模块,可以通过hashlib标准库使用 多种Hash算法,如SHA1 、SHA224 、SHA256 、SHA384 、SHA512和MD5算法 等。下面是通过调用hashlib模块对字符串进行MD5加密的简单实例: from hash…

[UI5 常用控件] 06.Splitter,ResponsiveSplitter

文章目录 前言1. Splitter1.1 属性 2. ResponsiveSplitter 前言 本章节记录常用控件Splitter,ResponsiveSplitter。主要功能是分割画面布局。 其路径分别是: sap.ui.layout.Splittersap.ui.layout.ResponsiveSplitter 1. Splitter 1.1 属性 orientation &#x…

DBeaver连接达梦数据库

1、下载驱动文件 可官网下载Hibernate 框架 | 达梦技术文档 (dameng.com) 1. 打开DBeaver软件,点击“数据库”,选择“驱动管理器” 2. 点击“新建”进行达人大金仓驱动管理器配置。 3、创建驱动-设置:驱动名称、类名、url 驱动名称&#…

(2017|ICLR,EBGAN,AE 鉴别器,正则化)基于能量的 GAN

Energy-based Generative Adversarial Network 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2. EBGAN 模型 2.1 目标函数 2.2 解决方案的最优解 2.3 使用自动编码器 2.…
最新文章