当前位置: 首页 > news >正文

读《SQL基础教程 第二版 上》的一些总结

1. 数据库语言

DDL: Data Definition Language,数据定义语言(库、表的操作)

DML: Data Manipulation Language, 数据操控语言(对表中数据的增删改)

DQL: Data Query Language,数据库查询语言(对表中数据的查询)

DCL: Data Control Language,数据控制语言(事务、权限)

2. 除以怎么得到小数

-- 1. 默认(会自动填充0)
select 10 * 1. / 4 --2.500000
-- 2. cast 可以保留指定位数
select CAST(10 * 1. / 4 as decimal(8, 2))
-- 3. convert(), 同cast只是写法不同
select CONVERT(decimal(8, 2), 10 * 1. / 4)

3. SQL 的三值逻辑 (true 、false 、unknown)

对于 and ,优先级: false > unknown > true
对于 or ,优先级: true > unknown > false

4. <> 和 <=>

<> 等同于 !=,无法判断 NULL

<=> 可以判断 NULL 和 正常值 (Sqlserver 不支持,MySQL支持) 

5. 事务

5.1 使用举例

create table re_test
(questionDesc nvarchar(100)
)
create table re_statistics
(countNum int
)
create table re_person(name nvarchar(20)
)
select * from re_test
select * from re_statistics
select * from re_person--SET XACT_ABORT OFF 默认,出现错误的语句回滚,正确的依然提交
--SET XACT_ABORT ON  出现错误全部回滚
begin transaction
insert into re_test values('123');
insert into re_statistics values(1 / 0);--模拟错误
insert into re_person values('213');
if @@ERROR!=0rollback transaction
commit transaction;

5.2  事务的工作模式

转载自前辈的文章【入门】数据库事务及串行化理论梳理 - 知乎 (zhihu.com)

  • 隐式事务(Implicit Transaction),又叫自动提交事务(Autocommit Transaction),默认一条语句就是一个事务,自动开始和提交事务,一般通过autocommit参数设置开启或关闭
  • 显式事务(Explicit Transaction),人为地开启和结束事务,一些SQL指令可用你于定义事务的生命周期,如开启事务用BEGIN或START TRANSACTION,提交事务用END或COMMIT,中止或回滚事务用ABORT或ROLLBACK[2] 等

6. 视图 

转载来自前辈

moxigandashu的文章数据库视图的创建及使用_数据库创建视图-CSDN博客(基于MySQL)

操作指令代码
创建视图CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
使用视图当成表使用就好
修改视图CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];
查看数据库已有视图>SHOW TABLES [like...];(可以使用模糊查找)
查看视图详情DESC 视图名或者SHOW FIELDS FROM 视图名
视图条件限制[WITH CHECK OPTION]

7. 常见函数

函数作用
Lower(s)小写
Upper(s)大写
Replace(s, appoint_str, target_str)将字符串的appiont_str替换成target_str(全局替换)
SubString(s, index, count)截取(index从1开始!!)
cast(XXX as [type])转换
datePart( [param], [DateTime数据])获取日期指定部分(param可以是Day / dd、Month / MM...)
dateName( [param], [DateTime数据])和datePart差不多
format(XXX, 'dd')和上面两个相比会补0(比如上面两个输出2, 它输出02)
coalesce(n1, n2, n3...)返回第一个不为NULL的值,常用于处理NULL
isnull( [字段] , [值])如果该字段为指定,则返回指定的值,和 coalsece 差不多
nullif ([字段], [值])如果字段的值为指定值,则返回 NULL

关于更多时间处理的细节,SQL Server 截取时间的sql语句_where convert-CSDN博客

8. 关于 In、Not In 的陷阱

判断不了NULL,打个比方

9. 集合 

intersect 交集、except 、union、union all

10. 窗口函数

10.1 作用

窗口函数可以像聚合函数一样对一组数据进行分析,并且每条数据都可以对应一个结果。

10.2 语法

--语法
select [窗口函数] over(partition by [字段] order by [字段] [窗口大小])
from [表名]--[窗口大小]
1. ROWS n preceding 以当前行为基准的前n行
2. ROWS n following 以当前行为基准的后n行
3. ROWS between n preceding and m following

10.3 窗口函数

  1. row_number() 是不重复的排名
  2. rank() 是相同的为同一名(后一名则跳过)
  3. dense_rank() 是相同的为同一名(不跳过之后的名次)
  4. 聚合函数

更多细节参考前辈

梁萌的文章SQL窗口函数-CSDN博客 

11.  合计

11.1 语法及举例

select case grouping(deptCode) 
when 1 then '合计'
when 0 then deptCode end as deptCode,
case grouping(deptName)
when 1 then '合计'
when 0 then deptName end as deptName,
sum(totalCount) as countNum
from Statistics
group by [合计方式](deptCode, deptName)-- grouping(字段) 如果是因合计导致的NULL则返回1,否则返回0--[合计方式]
-- rollup
/*group by(deptCode)group by(deptCode, deptName) 
*/
-- cube 
-- 全部组合
/*group by(deptCode)group by(deptName)group by(deptCode, deptName)
*/
-- grouping sets
-- 只保留单个的group字段的合计
/*group by(deptCode)group by(deptName)
*/

相关文章:

读《SQL基础教程 第二版 上》的一些总结

1. 数据库语言 DDL: Data Definition Language&#xff0c;数据定义语言&#xff08;库、表的操作&#xff09; DML: Data Manipulation Language&#xff0c; 数据操控语言&#xff08;对表中数据的增删改&#xff09; DQL: Data Query Language&#xff0c;数据库查询语言…...

EDI是什么:EDI系统功能介绍

EDI全称Electronic Data Interchange&#xff0c;中文名称是电子数据交换&#xff0c;也被称为“无纸化贸易”。EDI实现企业间&#xff08;B2B&#xff09;自动化通信&#xff0c;帮助贸易伙伴和组织完成更多的工作、加快物流时间并消除人为错误。 目前国内企业实现EDI通信大多…...

64B/66B GT Transceiver 配置

一、前言 前一篇文章已经讲述了64B/66B的编码原理&#xff0c;此篇文章来配置一下7系列GT的64B/66B编码。并讲述所对应的例子工程的架构&#xff0c;以及部分代码的含义。 二、IP核配置 1、打开7 Series FPGAs Transceiver Wizards&#xff0c;选择将共享逻辑放置在example …...

ES6: promise对象与回调地狱

ES6&#xff1a; promise对象与回调地狱 一、回调地狱二、Promise概述三、Promise的组成四、用函数封装Promise读取文件操作 一、回调地狱 在js中大量使用回调函数进行异步操作&#xff0c;而异步操作什么时候返回结果是不可控的&#xff0c;所以希望一段程序按我们制定的顺序执…...

Qt事件处理机制2-事件函数的传播

所有继承自QObject的类都有event函数&#xff0c;该函数用来处理自身的事件&#xff0c;函数定义如下&#xff1a; virtual bool QObject::event(QEvent *e)&#xff1b;Qt帮助文档&#xff1a; This virtual function receives events to an object and should return true i…...

【PDF.js】PDF文件预览

【PDF.js】PDF文件预览 一、PDF.js二、PDF.js 下载1、下载PDF.js2、在项目中引入3、屏蔽跨域错误 三、项目中使用四、说明五、实现效果 使用PDFJS实现pdf文件的预览&#xff0c;支持预览指定页、关键词搜索、缩略图、页面尺寸调整等等。 一、PDF.js 官方地址 文档地址 二、PD…...

从建表语句带你学习doris_表索引

1、doris建表概述 1.1、doris建表模板 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [DATABASE.]table_name (column_definition1[,column_deinition2,......][,index_definition1,[,index_definition2,]] ) [ENGINE [olap|mysql|broker|hive]] [key_desc] [COMMENT "tabl…...

Linux CentOS 安装 MySQL 服务教程

Linux CentOS 安装 MySQL 服务教程 1. 查看系统和GNU C库(glibc)版本信息 1.1 查询机器 glibc 版本信息 glibc&#xff0c;全名GNU C Library&#xff0c;是大多数Linux发行版中使用的C库&#xff0c;为系统和应用程序提供核心的API接口。在Linux系统中&#xff0c;特别是在…...

MSSQL 命令行操作说明 sql server 2022 命令行下进行配置管理

说明&#xff1a;本文的内容是因为我在导入Access2019的 *.accdb 格式的数据时&#xff0c;总是出错的背景下&#xff0c;不得已搜索和整理了一下&#xff0c;如何用命令行进行sql server 数据库和用户管理的方法&#xff0c;作为从Access2019 直接导出数据到sql server 数据库…...

【系统分析师】系统安全分析与设计

文章目录 1、安全基础技术1.1 密码相关1.1.1对称加密1.1.2非对称加密1.1.3信息摘要1.1.4数字签名1.1.5数字信封 1.2 PKI公钥体系 2、信息系统安全2.1 保障层次2.2 网络安全2.2.1WIFI2.2.2 网络威胁与攻击2.2.3 安全保护等级 2.3计算机病毒与木马2.4安全防范体系 1、安全基础技术…...

ActiveMQ 07 集群配置

Active MQ 07 集群配置 官方文档 http://activemq.apache.org/clustering 主备集群 http://activemq.apache.org/masterslave.html Master Slave TypeRequirementsProsConsShared File System Master SlaveA shared file system such as a SANRun as many slaves as requ…...

Redis(哨兵模式)

什么是哨兵机制 问题: redis 主从复制模式下, 一旦主节点由于故障不能提供服务, 需要人工进行主从切换, 同时大量客户端需要被通知切换到新的主节点上, 对于有一定规模的应用来说, 对于人力的资源消耗会很大.解决: 通过哨兵对主从结构进行监控, 一旦出现主节点挂了的情况, 自动…...

一种基于镜像指示位办法的RingBuffer实现,解决Mirror和2的幂个数限制

简介 在嵌入式开发中&#xff0c;经常有需要用到RingBuffer的概念&#xff0c;在RingBuffer中经常遇到一个Buffer满和Buffer空的判断的问题&#xff0c;一般的做法是留一个单位的buffer不用&#xff0c;这样做最省事&#xff0c;但是当RingBuffer单位是一个结构体时&#xff0…...

【Java开发指南 | 第十一篇】Java运算符

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 算术运算符关系运算符位运算符逻辑运算符赋值运算符条件运算符&#xff08;?:&#xff09;instanceof 运算符Java运算符优先级 Java运算符包括&#xff1a;算术运算符、关系运算符、位运算符、逻辑运算符、赋值…...

【IC前端虚拟项目】验证环境方案思路和文档组织

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 对于mvu的验证环境,从功能角度就可以分析出需要搭建哪些部分,再看一下mvu的周围环境哈: 很明显验证环境必然要包括几个部分: 1.模拟idu发送指令; 2.模拟ram/ddr读写数据; 3.rm模拟mvu的行为; …...

程序设计|C语言教学——C语言基础1:C语言的引入和入门

一、程序的执行 1.定义 解释&#xff1a;借助一个程序&#xff0c;那个程序能够试图理解你的程序&#xff0c;然后按照你的要求执行。下次执行的时候还需要从零开始解释。 编译&#xff1a;借助一个程序&#xff0c;能够像翻译官一样&#xff0c;把你的程序翻译成机器语言&a…...

初学python记录:力扣928. 尽量减少恶意软件的传播 II

题目&#xff1a; 给定一个由 n 个节点组成的网络&#xff0c;用 n x n 个邻接矩阵 graph 表示。在节点网络中&#xff0c;只有当 graph[i][j] 1 时&#xff0c;节点 i 能够直接连接到另一个节点 j。 一些节点 initial 最初被恶意软件感染。只要两个节点直接连接&#xff0c…...

LlamaIndex 组件 - Storing

文章目录 一、储存概览1、概念2、使用模式3、模块 二、Vector Stores1、简单向量存储2、矢量存储选项和功能支持3、Example Notebooks 三、文件存储1、简单文档存储2、MongoDB 文档存储3、Redis 文档存储4、Firestore 文档存储 四、索引存储1、简单索引存储2、MongoDB 索引存储…...

在Linux系统中设定延迟任务

一、在系统中设定延迟任务要求如下&#xff1a; 要求&#xff1a; 在系统中建立easylee用户&#xff0c;设定其密码为easylee 延迟任务由root用户建立 要求在5小时后备份系统中的用户信息文件到/backup中 确保延迟任务是使用非交互模式建立 确保系统中只有root用户和easylee用户…...

JVM之方法区的详细解析

方法区 方法区&#xff1a;是各个线程共享的内存区域&#xff0c;用于存储已被虚拟机加载的类信息、常量、即时编译器编译后的代码等数据&#xff0c;虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分&#xff0c;但是也叫 Non-Heap&#xff08;非堆&#xff09; 设置方法…...

小白也能玩转DeepSeek-R1:Ollama一键部署推理模型实战

小白也能玩转DeepSeek-R1&#xff1a;Ollama一键部署推理模型实战 还在为复杂的AI模型部署而烦恼吗&#xff1f;DeepSeek-R1-Distill-Llama-8B作为一款强大的文本生成模型&#xff0c;现在通过Ollama平台可以轻松实现一键部署。本文将带你从零开始&#xff0c;只需3个简单步骤…...

用Qwen3-VL-30B做智能助手:上传文档图片,自动提取关键信息

用Qwen3-VL-30B做智能助手&#xff1a;上传文档图片&#xff0c;自动提取关键信息 1. 为什么需要智能文档处理助手 每天我们都会遇到大量需要处理的文档和图片&#xff1a;合同、发票、报告、表格、名片...手动输入这些信息不仅耗时耗力&#xff0c;还容易出错。传统OCR技术虽…...

如何高效管理微信读书笔记:终极免费工具wereader完全指南

如何高效管理微信读书笔记&#xff1a;终极免费工具wereader完全指南 【免费下载链接】wereader 一个功能全面的微信读书笔记助手 wereader 项目地址: https://gitcode.com/gh_mirrors/we/wereader 微信读书助手wereader是一款专为微信读书用户设计的免费开源工具&#…...

Android WebView视频播放全屏实战:从黑屏到完美适配的完整解决方案

Android WebView视频全屏播放的深度优化指南&#xff1a;从黑屏修复到多机型适配 当你在WebView中嵌入视频播放功能时&#xff0c;是否遇到过这样的场景&#xff1a;用户点击全屏按钮后画面突然黑屏&#xff0c;或者在某些机型上视频声音无法正常停止&#xff1f;这些问题往往…...

百川2-13B模型辅助C语言学习:从语法答疑到代码调试

百川2-13B模型辅助C语言学习&#xff1a;从语法答疑到代码调试 学C语言&#xff0c;尤其是刚入门那会儿&#xff0c;你是不是也经历过这样的时刻&#xff1f;面对指针、内存这些概念&#xff0c;感觉像在看天书&#xff1b;自己写的代码编译报错&#xff0c;满屏的红色提示让人…...

GAMES201实战:5分钟搞懂快速多极展开(FMM)在静电模拟中的应用

GAMES201实战&#xff1a;5分钟搞懂快速多极展开(FMM)在静电模拟中的应用 当你在游戏引擎中设计一个带电粒子系统时&#xff0c;是否遇到过这样的困境&#xff1a;随着粒子数量增加&#xff0c;计算速度呈指数级下降&#xff1f;传统N体问题计算需要处理每个粒子间的相互作用&a…...

DeOldify图像上色服务完整流程:基于Flask的Web服务部署与使用

DeOldify图像上色服务完整流程&#xff1a;基于Flask的Web服务部署与使用 1. 项目概述与核心功能 DeOldify图像上色服务是一个基于深度学习技术的Web应用&#xff0c;能够将黑白或褪色的老照片自动转换为彩色图像。这个项目通过简单的Web界面&#xff0c;让用户无需任何技术背…...

springboot+vue基于web的大学生课程排课管理系统设计

目录 功能模块分析后台管理系统&#xff08;SpringBoot&#xff09;前端系统&#xff08;Vue&#xff09; 技术实现要点 项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 功能模块分析 后台管理系统&#xff08;SpringBoot&…...

告别Zabbix!轻量级监控神器Netdata在Ubuntu 22.04上的花式玩法

告别Zabbix&#xff01;轻量级监控神器Netdata在Ubuntu 22.04上的花式玩法 1. 为什么Netdata正在重新定义监控体验 凌晨三点&#xff0c;服务器告警短信惊醒睡梦中的你。手忙脚乱连上VPN&#xff0c;却发现只是Zabbix又一个误报——这样的场景是否似曾相识&#xff1f;传统监控…...

新一代OpenWRT主题:Neobird革新路由器管理体验

新一代OpenWRT主题&#xff1a;Neobird革新路由器管理体验 【免费下载链接】luci-theme-neobird 一个专门针对移动端优化的OpenWRT主题&#xff0c;基于luci-theme-material&#xff0c;全新的登录界面&#xff0c;沉浸式Webapp体验。 项目地址: https://gitcode.com/gh_mirr…...