读《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!=0
   rollback 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)
*/

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

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

相关文章

SAP是什么?SAP介绍

一、概述 ​SAP,为“System Applications and Products”的简称,是SAP公司的产品——企业管理解决方案的软件名称。​ SAP含义 第一,SAP是公司名称,即SAP公司(纽交所代码:SAP),它是成立于1972年总部位于德国沃尔多夫市的全球最大的企业管理和协同化电子商务解决方案…

SpringBoot多数据源(一)

SpringBoot多数据源&#xff08;一&#xff09; 1.多数据源使用场景1.1 业务复杂&#xff08;数据量大&#xff09;1.2 读写分离 2.多数据源配置3.应用4.测试 1.多数据源使用场景 1.1 业务复杂&#xff08;数据量大&#xff09; 简单理解就是业务量复杂&#xff0c;将庞大的数…

UML/SysML建模工具更新情况-截至2024年4月(1)5款-Trufun建模平台 v2024

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 工具最新版本&#xff1a;itemis CREATE 5.2.2 更新时间 2024年3月22日 工具简介 原名YAKINDU Statechart Tools。状态机建模工具&#xff0c;支持各种语言的代码生成&#xff0c;提…

1000kW 柴油发电机组测试负载箱的核心功能

随着科技的不断发展&#xff0c;电力系统的稳定性和安全性日益受到重视。柴油发电机组作为一种重要的备用电源设备&#xff0c;其性能和可靠性直接关系到电力系统的稳定运行。为了确保柴油发电机组的性能和可靠性&#xff0c;对其进行定期的检测和维护是必不可少的。 在这个过程…

电磁仿真--基本操作-CST-(1)

目录 1. 开启-备忘 2. 从调用最简单的Dipole天线开始 2.1 查找示例 2.2 运行示例 2.3 进度与消息 2.4 查看结果 2.4.1 Port signals 2.4.2 S-Parameter 2.4.3 Reference Impedance 2.4.4 Balance 2.4.5 Power 2.4.6 Energy 2.4.7 Discrete Ports 2.4.8 2D/3D Res…

Spring Boot后端+Vue前端:打造高效二手车交易系统

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

Linux服务器硬件及RAID配置

一、服务器硬件 塔式服务器&#xff1a;最初的服务器形态之一&#xff0c;类似于传统的台式电脑&#xff0c;但具有更强的处理能力和稳定性&#xff0c;适合小型企业或部门使用。 机架式服务器&#xff1a;设计为可安装在标准化机架内的模块化单元&#xff0c;可以有效地节省空…

好用的AI绘画工具,5个一键AI自动生成绘画推荐

在数字时代&#xff0c;AI绘画软件开启了人们展现创意的全新篇章。如果你对AI一键生成绘画的感兴趣&#xff0c;那就跟着我一起来了解一下吧&#xff01; 1.爱制作AI 爱制作AI是一款功能强大的人工智能软件&#xff0c;它不仅拥有超强的AI问答能力&#xff0c;还能轻松搞定绘画…

Aigtek功率放大器的使用方法有哪些

功率放大器是一种将小信号放大为大信号的电子设备&#xff0c;广泛应用于无线通信、音频系统、雷达等领域。在使用功率放大器时&#xff0c;需要注意以下几个方面&#xff1a; 电源供应&#xff1a;功率放大器需要提供稳定的电源供应以保证正常工作。通常情况下&#xff0c;功率…

2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统(三)

13 测试方案和测量结果 测量一个边长为1米的正方形&#xff0c;取三个顶点分别作为O、A、B点。 在O点上方&#xff0c;用细线悬挂激光笔&#xff0c;激光笔常亮向下指示&#xff0c;静止时激光笔的光点和O点重合。 将两个D8M摄像头子卡插到DE10-Nano开发板上&#xff0c;放…

按摩上门小程序源码系统 带完整的安装代码包以及搭建教程

随着人们生活节奏的加快&#xff0c;越来越多的人开始追求便捷、高效的生活方式。按摩服务作为一种放松身心、缓解压力的方式&#xff0c;受到了广大消费者的青睐。然而&#xff0c;传统的按摩服务往往受到时间、地点等因素的限制&#xff0c;难以满足消费者的即时需求。因此&a…

ansible进阶-剧本调试方法

目录 1、调试方法 2、实例 2.1 Debug模块 2.2 tags标签 2.3 忽略错误 1、调试方法 具体方法应用场景debug标签执⾏剧本的时候输出剧本的执⾏流程,⼀般配合register⼀起使⽤. 输出facts变量自定义变量tags标签给⼀些模块加上标签,运⾏剧本的时候可以运⾏指定标签的…

Halo自定义文章分类

在自定义站点的时候&#xff0c;往往需要再特定的页面展示个性的内容&#xff0c;为了满足这个特殊的要求&#xff0c;就需要文章自定义标签&#xff0c;然后挂载到自定义下面达到自己要的效果。 Halo版本 版本&#xff1a;2.12在theme.yaml指定文章分类页 spec:customTempla…

springboot 载入自定义的yml文件转DTO

改进方法&#xff0c;直接spring注入 import cn.hutool.json.JSONUtil; import org.springframework.beans.factory.config.YamlMapFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import …

Pulsar【部署 01】消息队列PULSAR在Linux环境的主程序安装使用(小内存服务器问题处理)

官方网站&#xff1a;https://pulsar.apache.org/ 对于本地开发和测试&#xff0c;您可以在机器上以单机模式运行Pulsar。单机模式在单个Java虚拟机(JVM)进程中运行所有组件。本地单机版安装手册&#xff1a; 消息队列PULSAR在Linux环境的主程序安装使用 1.Prerequisites1.1 Pu…

万兆以太网MAC设计(4)CRC_process模块

文章目录 前言一、模块功能二、实现过程三、仿真总结 前言 上文介绍的MAC_RX模块当中增加了CRC校验和比对的功能&#xff0c;本文将根据CRC校验的结果&#xff0c;来决定将数据输出到上层用户还是丢弃。 一、模块功能 接收MAC_RX模块输出的AXIS数据&#xff0c;存入本地环形…

每日两题1

文章目录 使用最小花费爬楼梯91解码方法 使用最小花费爬楼梯 class Solution { public:int minCostClimbingStairs(vector<int>& cost) {if(cost.size() 2)return min(cost[0],cost[1]);vector<int> dp;dp.reserve(cost.size()1);dp[0] 0;dp[1] 0;for(int i…

Flink KafkaSink分区配置的不同版本对比

Flink KafkaSink分区配置的不同版本对比 在不同版本的Flink中&#xff0c;KafkaSink 分区默认配置方式可能会有一些变化。以下是摘自Flink官方文档不同版本的原文&#xff1a; 1. Flink版本&#xff1a;1.12~1.19 Sink 分区 # 配置项 sink.partitioner 指定了从 Flink 分区到 …

eBay、亚马逊自养号测评如何避免风控账号关联选择合适网络IP环境

在自养号下单中选择适合的网络环境至关重要。经过多次实践与测试&#xff0c;积累了大量的经验&#xff0c;希望能够与大家分享&#xff0c;帮助大家避开陷阱&#xff0c;顺利前行。 市面上的网络环境种类繁多&#xff0c;从纯IP类的Luminati、Rola&#xff0c;到纯环境类的VM…

Redis 的数据结构和内部编码

Redis的 5 种数据类型 Redis 底层在实现上述数据结构的时候&#xff0c;会在源码层面&#xff0c;针对上述实现进行 特定的优化 &#xff0c;来达到节省时间/节省空间效果 特定的优化&#xff1a;内部的具体实现的数据结构&#xff0c;在特定场景下&#xff0c;不是其对应的标准…