数据库-SQL必知必会 笔记(补充...)

SQL必知必会-笔记(完善版):第1课 目前笔记参考内容: 书籍:《SQL必知必会》、《MySQL基础教程》 课程:《数据库系统》MOOC-哈工大-战得臣教师 课程:《MySQL8学习教程》哔哩哔哩 以及一些其他的课程和笔记 公众号:LearningTribe 阅读详情




连接表和创建高级连接

可伸缩性(scale)

能够适应不断增加的工作量而不失败.设计良好的数据库或应用程序可称之为”可伸缩性好”.

笛卡尔积(cartesian product)

       没有连接条件的表关系返回的结果.

       比如: SELECT vend_name,pro_name,pro_name FROM Vendors,Products;

内部连接

       INNER JOIN…ON

SELECT vend_name,pro_name,pro_price

FROM Venders AS V

INNER JOIN Products AS P ON V.vend_id = P.vend_id;

提示:联结的表越多,性能就下降得越厉害.SQL中对联结表的数目没有限制,但DBMS中却有.内部联结也称”等值联结”.

注意:Oracle中起别名不需要”AS”,直接写就行.

自连接

       通常作为外部语句来替代从相同表中检索数据的子查询语句.

自然连接 (SELECT *)

一般连接可能会出现相同的列,尽管这些列分属于不同的表,但其实它们的名称和意义是一样的.

cust_id

order_num

cust_id

pro_id

0128

100123

0128

0013

0129

112850

0129

0041

0330

145896

0330

0029

SELECT C.*,O.order_num,O.order_date,OI.pro_id,OI.quantity,OI.item.price

FROM Customers AS C,Orders AS O,OrderItems AS OI

WHERE C.cust_id = O.cust_id

AND OI.order_num = O.order.num AND pro_id = "RGA001";

事实上,迄今为止,我们用到的”内部联结”都是”自然联结”.

外部连结

       LEFT/RIGHT/FULL OUTER JOIN…ON

       用于 许多联结将一个表中的行与另一个表中的行相关联,但有时候会需要包含没有关系行的那些行.

※ 计算平均销售规模,且包括那些至今未下订单的客户.

※ 对每个客户下了多少订单进行计数,且包括那些至今未下订单的客户.

左/右外联结

SELECT C.cust_id,O.order_num

FROM Customers AS C LEFT OUTER JOIN Orders AS O

ON C.cust_id = O.cust_id;

cust_id

order_num

0111

2005

0112

2009

0113

NULL

0114

2006

0115

2008

在Order中表,根本就不存在未下订单的cust_id,所以普通的联结根本得不到这样的结果,这就体现了外联结的好处.

可以看到,”左联结”就是从写在FROM子句的左边的表中选择所有的行.

       也可以用符号表示:

       SQL Server :         “ *= ” :左联结                     “ =* “ :右联结

       Oracel :                “ (+)= ” :左联结           “ =(+) “ :右联结

-- 右联结 结果等同于上例

SELECT C.cust_id,O.order_num

FROM Customers AS C , Orders AS O

ON O.cust_id =* C.cust_id;

带聚集函数的外部联结

SELECT C.cust_id,COUNT(O.order_num) AS num_id

FROM Customers AS C INNER JOIN Orders AS O

ON C.cust_id = O.cust_id

GROUP BY C.cust_id;

cust_id

num_id

0111

2

0113

1

0114

1

0115

1

 

SELECT C.cust_id,COUNT(O.order_num) AS num_id

FROM Customers AS C LEFT OUTER JOIN Orders AS O

ON C.cust_id = O.cust_id

GROUP BY C.cust_id;

cust_id

num_id

0111

2

0112

0

0113

1

0114

1

0115

1

提示:一般用内部联结,但外部联结也是有效的;

       应总是提供联结条件,否则会出现笛卡尔积.

 

 

管理事务处理

       事件处理(transaction processing)可以用来维护数据库的完整性,它保证成批的SQL操作要么完全执行,要么完全不执行.

事务处理的4个专业术语

※ 事件(transation)指一组SQL语句;

※ 回退(rollback)指撤销指定SQL语句的过程;

※ 提交(commit)指将未存储的SQL语句结果写入数据库表;

※ 保留点(savepoint)指事务处理中设置的临时占位符(placeholder),你可以对它发布回退指令.

提示:不能回退SELECT语句,也不能回退CREATE或DROP操作.事务中可以使用它们,但不能撤消它们.

       不同的事务处理的语法是不同的

SQL Server

BEGIN TRANSACTION

...

COMMIT TRANSACTION

MySQL

START TRANSACTION

...

PostgreSQL使用ANSI SQL语法

BEGIN;

...

       一般SQL语句都是直接针对数据库表执行和编写的,就是所谓的隐含提交(implicit commit),即提交(写或保存)操作是自动进行的.但是在事务处理中,不会隐含的提交.不过有的DBMS不这样.

SQL Server

BEGIN TRANSACTION

DELETE OrderItems WHERE order_num = 123;

DELETE Orders WHERE order_num = 123;

COMMIT TRANSACTION

Oracle

DELETE OrderItems WHERE order_num = 123;

DELETE Orders WHERE order_num = 123;

COMMIT;

上例中,COMMIT语句仅在全部DELETE语句不出错时才发生.

为了支持回退部分事务处理,须在事务处理块中合适的位置放置占位符.

SQL Server

SAVE TRANSACTION delete1;

MySQL 和 Oracle

ROLLBACK TO delete1;

一个完整的例子:

BEGIN TRANSACTION

INSERT INTO Customes(cust_id,cust_name) VALUES('1001','Tom');

--设置保留点StartOrder,以便回退

SAVE TRANSACTION StartOrder;

INSERT INTO Orders(order_num,order_date,cust_id) VALUES(20100,'2000/01/01','1001');

--SQL Server中,@@ERROR变量用来判断操作是否成功; 其它DBMS可能使用不同的变量

if @@ERROR <> 0 ROLLBACK TRANSACTION StartOrder;

INSERT INTO OrderItems(order_num,order_item,quantity,price) VALUES(20100,1,'waterbox',5.49);

if @@ERROR <> 0 ROLLBACK TRANSACTION StartOrder;

COMMIT TRANSACTION

--提示: 保留点越多越好

《SQL必知必会第五版》自留笔记 注:本书介绍的SQL主要适用于以下系统:IBM DB2,Microsoft SQL Server,MariaDB,MySQL, 阅读详情

相关推荐

Azure数据库服务比较:SQL Database vs Cosmos DB

结构化数据场景:如订单管理、用户认证等需要强事务支持的业务非结构化/半结构化场景:如物联网设备日志、社交网络数据、实时推荐系统:基于传统关系型数据库(SQL Server)的云原生服务,支持ACID事务和复杂SQL查询Cosmos DB:全球分布式NoSQL数据库,支持多模型(文档、键值、图、宽列)和弹性扩展两者的架构设计哲学有何本质区别?数据建模和查询语言的差异如何影响开发体验?一致性、可用性、吞吐量的权衡模型如何选择?典型业务场景下的选型决策依据是什么?技术原理对比。

AI云原生与云计算技术学院 1972

SQL必知必会笔记

极客时间-陈旸-SQL必知必会 笔记整理

zhaohui blog 1840

SQL必知必会(第四版)-MySQL源码/案例导入方法附赠非扫描版必知必会

SQL必知必会(第四版)-源码/案例导入方法 为了学习《MySQL 必知必会》中各个例子,需要一组填充数据的表,首先需要下载2个SQL脚本文件。 附带《SQL必知必会(第4版)》带源码 非扫描版 高清带书签 百度云下载方式:提取码nll1 官方案例下载链接 下载脚本之后,开始创建和填充书中各章所用的表: 创建一个新的数据源 create database crashcourse; #(这里使...

学习进击之路 2万+

(SQL入门经典+SQL必知必会+视频)笔记之一

一、了解SQL 1. 关系型数据库管理系统(RDBMS) 2. 结构化查询语言(SQL)——关系型数据库进行通信的标准语言 3. ANSI标准——可移植性和易用性 4. 连接数据库:CONNECT user@database;断开连接:DISCONNECT 5. SQL命令类型: 数据定义语言:DDL——用于创建和重构数据库对象(撤销和修改数据模式) 数据操作语言:DML——

王某的博客 7531

SQL高级语句-CREATE DATABASE 用于创建数据库。

CREATE DATABASE 语句 CREATE DATABASE 用于创建数据库。 SQL CREATE DATABASE 语法 CREATE DATABASE database_name SQL CREATE DATABASE 实例 现在我们希望创建一个名为 "my_db" 的数据库。 我们使用下面的 CREATE DATABASE 语句: CREATE

qq_35144470的博客 2865

《SQL必知必会》学习笔记(一):实验数据初始化

摘要:本文主要提供《SQL必知必会》一书中实验所用的数据库,以及创建数据库、表、约束和初始化的SQL语句。

猴子搬来的救兵 6203

《SQL必知必会》笔记(施工中)

SQL必知必会

ychinata的博客 1779

sql server下的数据仓库的构建

SQL Server2008/R2 下的数据仓库的构建       本文详细介绍在SQL Server下如何做数据仓库的构建和如何利用数据仓库进行有效的分析,假设读者已经具备相关的理论知识,由于在SQL Server上都是实践过程,因此主要以截图来展示,这样做的好处是读者可直接按照该步骤进行操作,由于之前作者是写在word中的,因此直接截图,好了,话不多说,直接开始。 上面的全部内容是利用数据仓库...

WQ的博客 1万+

《SQL必知必会》学习笔记(一)

文章目录DB基本知识及表的创建主键创建数据库检索数据DISTINCT 关键字限制结果注释排序检索数据排序数据指定排序方向过滤数据使用 WHERE 子句WHERE 子句操作符AND 操作符OR 操作符IN 操作符NOT 操作符LIKE 操作符百分号(%) 通配符下划线(—)通配符通配符使用技巧创建计算字段拼接字段执行算数计算使用函数处理数据文本处理函数日期时间处理函数数值处理函数汇总数据聚集函数AV...

Neil.Liu的博客 611

LilyPad三色LED共阳极控制:从原理到Arduino编程实战

RGB LED作为可编程光源的核心组件,通过红、绿、蓝三原色的加色混合原理,能够生成丰富的色彩。其内部结构主要分为共阳极和共阴极两种类型,这决定了驱动电路的设计和编程逻辑。在电子织物和可穿戴设备领域,掌握RGB LED的控制技术对于实现动态光效和交互反馈至关重要。本文以LilyPad三色LED为例,深入解析其共阳极特性,并详细演示如何结合Arduino进行PWM编程,从而精准控制颜色与亮度,为智能服装、互动艺术装置等项目提供可靠的照明解决方案。

weixin_30237719的博客 611

别再手动拆解字节了!用博图这个功能指令,5分钟搞定ARRAY转BOOL数组

本文详细介绍了西门子博图中`ARRAY_TO_BOOL`功能指令的高效应用,帮助工程师快速实现ARRAY到BOOL数组的转换。通过实战案例和参数配置指南,展示了如何5分钟内完成传统方法需半小时的任务,大幅提升PLC编程效率,特别适用于通信报文解析和设备状态监控。

weixin_42653691的博客 264

SQL必知必会51题

文章内容为《SQL必知必会》练习题重点笔记

2401_86505958的博客 2671

阿里云导出的镜像raw转换成vmdk格式工具

阿里云导出的镜像raw转换成vmdk格式工具 1.安装java环境,安装教程不介绍了 2.raw2vmdk软件下载: 在我的链接里面: 3.使用 打开cmd.bat软件: java -jar raw2vmdk.jar (原镜像)C:\\images\\raw\\disk.img (转换的镜像)D:\\images\\vmdk\\disk.vmdk 4.vmware打开vmdk文件 ...

3845

Python通过ibm_db模块进行DB2数据库SQL语句执行及结果返回

执行SQL语句 方法一: 语法: 调用ibm_db.prepare()函数并传递以下参数: 1.从ibm_db.connect()或ibm_db.pconnect()函数返回的有效数据库连接资源; 2.包含SQL语句的字符串,包括需要变量输入的任何列或谓词值的参数标记(?)。该字符串可以包含由XMLQUERY子句包装的XQuery表达式 3.ibm_db.execute()执行SQL语句 im...

weixin_42970378的博客 8895

rk3399开发环境的介绍

由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统性的介绍,尽可能的涵盖所有内容。

朝气蓬勃 711

UWB 多传感器通信的纳秒无线位置和时钟同步方法

利用UWB高精度的特点,实现多节点下的无线时钟同步和定位。通过优化硬件架构,减少不确定延迟的影响,系统可以提供纳秒级时钟同步消息

DT程序员的博客 1329

《SQL必知必会》笔记

目录SQL必知必会本文的用途读后感第一章第二章 检索数据2.1 SELECT语句2.5 检索不同的值2.6 限制结果2.7 使用注释第三章 排序检索数据3.1 排序数据第四章 过滤数据4.1 使用WHERE字句4.2 WHERE子句操作符第五章 高级数据过滤5.1 组合WHERE子句5.2 IN操作符5.3 NOT操作符第六章 用通配符过滤6.1 LIKE操作符6.2 通配符的技巧第七章 创建计算字段7.1 计算字段7.2 拼接字段第8课8.1 函数8.2 使用函数第九章 汇总数据9.1 聚集函数9.2 聚

生息之地 1125

华为od 面试八股文_Android安卓_05_含答案

华为od 面试八股文_Android安卓_05_含答案

MISAYAONE的博客 951

数据库——(DB、DBMS、SQL)

公司的数据库突然坏了,报一些稀奇古怪的错误代码,公司没人能搞定。老板很着急,把我叫到办公室说:“你赶紧在招聘网站发布一个DBA职位,年薪50万……”我大吃一惊:“50万?”老板点点头,接着说:“你负责面试,就问他们怎样恢复我们的数据库,切记,不管他们能不能答出来,都把他们拒绝了!”

CHENZULAN的博客 3383

uniapp [全端兼容] - 实现人脸识别对比+人脸相似度,从相册选择或拍照上传两张图片进行人脸对比得到人脸相似度及判断是否是同一个人,人脸活体检测及对比(免费纯前端方案+调用第三方API接口方案)

uniApp人脸对比 人脸对比识别 人脸对比相似度,uniapp实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,uniapp实现人脸识别对比,计算两张人脸的相似度,从而判断是否同一个人,并给出相似度评分。uniapp H5网页如何实现人脸相似度比对,uniapp纯前端怎么对比两张图片的相似度,计算两幅图像的相似度,图像相似度对比方法,UNI-APP人脸相似度对比,快速识别两张照片的相似程度(用百分比)图片相似度对比在线测试,图片相似度对比,uniapp微信小程序人脸相似度对比分析,uniapp

🏆 前端领域优质创作者 5020

药物相关 PK(药代动力) 、PD(药效)指标知识

PK代表药物的药代动力学,指的是药物在体内的吸收、分布、代谢和排泄等过程,包括药物的药代动力学参数如Cmax(最大血药浓度)、Tmax(最大血药浓度出现的时间)、t1/2(半衰期)、AUC(药物曲线下面积)等。PD代表药物的药效学,指的是药物与生物体相互作用所产生的药理效应,包括药物的药效学参数如EC50(半数最大有效浓度)、ED50(半数最大效应剂量)、Emax(最大效应)等。PD(Pharmacodynamics)则研究药物的药效学特性,如药物的作用机制、效力、最大疗效、最小毒性等。

weixin_42357472的博客 2万+

【免费下载】 SQL必知必会.pdf

SQL必知必会.pdf 【下载地址】SQL必知必会.pdf SQL必知必会.pdf 项目地址: https://gitcode.com/Open-source-documentation-tutorial/501a8 ...

gitblog_06647的博客 3055

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

database.db 文件详解:数据库文件在 SQLite 中的作用与使用

本文解析了Python项目中自动生成的database.db文件的作用和使用方法。该文件是SQLite数据库的默认存储文件,包含表结构、数据记录和索引等信息。文章详细介绍了SQLite的存储原理、查看和操作方法(命令行与可视化工具)、备份策略及常见问题解决方案,并强调数据库管理需严谨,避免数据丢失。掌握.db文件的特性能帮助开发者更高效地进行项目调试和数据库维护。

聚焦学生开发者需求,分享课设毕设项目实战经验、系统开发技巧、数据库设计规范及文档排版实用方法。 2400

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SQL必知必会-基础篇[SQL学习笔记]

本篇博客是对于陈旸老师极客专栏“SQL 必知必会”基础篇的笔记总结。需要学习资料可私信。

weixin_44972997的博客 1936

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

《SQL必知必会》导入数据库、填充数据流程

《SQL必知必会》导入数据库、填充数据方法 1、访问官网https://forta.com/books/0672336073/ 2、下滑找到: 3、这里

x__Sherlock的博客 2327

读书笔记-《SQL 必知必会》

《SQL 必知必会》是学习数据库的入门级经典书籍,里面知识点虽然都比较基础,不过讲解的清晰简介,也比较全面。通过全面的学习SQL,可以在工作面临问题时想到更高效的办法。 接下来主要记录经典章节中知识点的用法(主要针对Oracle语法): 第6课:用通配符进行过滤 第7课:创建计算字段 第8课:使用函数处理数据 第9课:汇总数据 第10课:分组数据 第11课:使用子查询 第12课:联结表 第13课:...

MsSpark的博客 2526
上一篇: 生活-发胶、发泥、发蜡、着哩哪种造型效果要好?
下一篇: ASP2.0-130道ASP.NET面试题
MasterFT
博客等级 码龄20年 48粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值