SQL 复习 03
函数与关键字
| 用法 | 说明 |
|---|---|
| round(x, n) | 四舍五入,x为浮点数,n为保留的位数 |
| ceil(x) | 向上取整 |
| floor(x) | 向下取整 |
| truncate(x, n) | 截断x,n为保留的位,该位之后的数值置零,位数表示示例:321.123,其中小数点前用负值表示,小数点位数为0,即 truncate(x, 0) 等同于舍弃小数部分取整 |
| mod(a, b) | 返回 a 除以 b 的余数 |
| abs(x) | 返回 x 的绝对值 |
| rand() | 返回 0-1 的随机浮点数 |
| sign(x) | 返回数值的符号,1、-1或者0 |
| avg(column) | 返回字段或数组切片的均值 |
| var_pop(column) | 返回字段或数组切片的总体方差 |
| var_samp(column) | 返回字段或数组切片的样本方差(计算方法不同) |
| std(column) | 总体标准差 |
| stddev_samp(column) | 样本标准差 |
| replace(str, a, b) | 将字符串中的 a 替换为 b(从头开始检索,替换所有存在的片段) |
| concat(a, b) | 合并字符串(不能直接 a + b)(接受多个参数,按顺序合并) |
| concat_ws(fill, a, b) | 合并并在两者之间填充 fill 片段 |
| left(str, n) / right(str, n) | 左起 / 右起取 n 个字符 |
| substring(str, x, n) | 左起 x 位(含)取 n 个字符 |
| ltrim / rtrim / trim(str) | 去除 左 / 右 / 两边的空格 |
| repeat(str, n) | 重复 n 次 |
| char_length(str) / length(str) | 返回字符数 / 字节数(mysql 中中文字符默认 3 字节) |
| coalesce(column, value) | 使用 value 填充字段 column 中的空值 |
| cast(column as dtype) | 将 column 字段的数据类型转换为 dtype(如 char) |
| convert(column, dtype) | 同上 |
| now() | 返回当前的年月日时分秒,默认格式为"%Y-%m-%d %h:%i:%s" |
| year/month/day/hour/minute/second(x) | 依次返回 x 中包含的年/月/日/时/分/秒 |
| date(time)/time(x) | 返回 x 中的日期/时间 |
| weekofyear(x)/dayofweek(x) | 顾名思义,注意每周以周日为第 0 天,周一为第 1 天 |
| date_format(x, format) | format 可以是 “%Y-%m-%d”,或者"%w"(返回周几) |
| date_add/date_sub(x, interval n unit) | x前移或后移一段时间,n 为数值,unit 为 year、month、day 等关键字 |
| date_diff(a, b) | 两个时间日期的差值 |
| select * INTO OUTFILE filename from tablename; | 输出到文件,默认在安装目录的 Data 文件夹 |
| select * from tablename LIMIT n, m | 从 n 行开始(含)取 m 行 |
| select … where column LIKE “%str%” | 匹配字符串,用 % 表示任意数量的任意字符,用 - 表示单个任意字符 |
| select … where column REGEXP “regexp” | 类似 LIKE,使用正则表达式,更精准的匹配 |
| select … IF(condition, true_value, false_value) from table | 条件赋值 |
| select … CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 … ELSE last_value END from table | 多个条件匹配赋值 |
面试问题
1. 规范化与反规范化
规范化(Normalization)是通过组织数据库的字段和表来最小化冗余和依赖性的过程。规范化的主要目的是添加、删除或修改可以在单个表中进行的字段。
反规范化(Denormalization)是一种用于从数据库的高范式到低范式访问数据的技术。这也是通过合并相关表中的数据将冗余引入到表中的过程。
2. 规范化的 5 中范式(Normal Form)
1NF:从表中删除所有重复的列。创建相关数据表并识别唯一列。2NF:满足第一范式的所有要求。将数据子集放置在单独的表中并使用主键在表之间创建关系。3NF:满足 2NF 的所有要求。删除不依赖于主键约束的列。4NF:满足第三范式的所有要求,并且不应该具有多值依赖。5NF:满足第四范式,且表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。
3. 索引的三种类型
索引是一种性能优化方法,可以更快地从表中检索记录。索引为每个值创建一个条目,检索数据会更快
- 唯一索引:如果列是唯一索引的,则此索引不允许字段具有重复值。当定义主键时,可以自动应用唯一索引。
- 聚集索引:这种类型的索引重新排序表的物理顺序并根据键值进行搜索。每个表只能有一个聚集索引。
- 非聚集索引:非聚集索引不会改变表的物理顺序并保持数据的逻辑顺序。每个表可以有 999 个非聚集索引。
区别:聚集索引用于通过改变记录的存储方式来轻松地从数据库中检索数据。数据库按设置为聚集索引的列对行进行排序。非聚集索引不会改变其存储方式,而是在表中创建一个完全独立的对象。搜索后它指向原始表行。
4. 什么是游标?
数据库游标是一种可以遍历表中的行或记录的控件。这可以被视为指向一组行中的一行的指针。游标对于检索、添加和删除数据库记录等遍历非常有用。
5. 什么是触发器?
数据库触发器是自动执行以响应数据库中的表或视图上的某些事件的代码或程序。主要是触发器有助于维护数据库的完整性。触发器允许您在对特定表执行插入、更新或删除命令时执行一批 SQL 代码。实际上,触发器是特殊类型的存储过程,被定义为就地或数据修改后自动执行。
示例:当新学生添加到学生数据库时,应在相关表(如考试、分数和出勤表)中创建新记录。
6. 什么是局部变量和全局变量以及它们的区别?
局部变量是可以在函数内部使用或存在的变量。其他函数不知道它们,并且无法引用或使用这些变量。每当调用该函数时都可以创建变量。
全局变量是可以在整个程序中使用或存在的变量。在全局中声明的相同变量不能在函数中使用。每当调用该函数时都无法创建全局变量。
7. 什么是自增?
自动增量关键字允许用户创建一个在将新记录插入表中时生成的唯一编号。Oracle 中可以使用 AUTO INCREMENT 关键字,SQL SERVER 中可以使用 IDENTITY 关键字。大多数情况下,只要使用 PRIMARY KEY,就可以使用此关键字。
8. 什么是数据仓库?
数据仓库是来自多个信息源的数据的中央存储库。这些数据经过整合、转换并可用于挖掘和在线处理。仓库数据有一个数据子集,称为数据集市。
9. 存储过程的优点和缺点?
存储过程可以用作模块化编程——意味着创建一次、存储并在需要时多次调用。这支持更快的执行而不是执行多个查询。这减少了网络流量并为数据提供了更好的安全性。缺点是只能在数据库中执行,占用数据库服务器较多的内存。
10. 什么是在线事务处理(OLTP)?
在线事务处理或 OLTP 管理基于事务的应用程序,可用于数据输入和轻松的数据检索处理。这种处理使得简单性和效率变得更容易。与 OTLP 相比,它更快、更准确的结果和费用。(示例 – 每天的银行交易)
11. SQL支持编程吗?
不,SQL 没有循环或条件语句。它像命令语言一样用于访问数据库。
12. 什么是数据库的 ACID 属性?
ACID 是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
ACID 属性用于确保数据事务在数据库系统中得到可靠处理。对数据的单个逻辑操作称为事务。
- 原子性:要求每笔交易要么全有,要么全无。这意味着如果事务的一部分失败,则整个事务失败并且数据库状态保持不变。
- 一致性:一致性属性确保数据必须满足所有验证规则。简而言之,您可以说您的事务在未完成其状态的情况下永远不会离开数据库。
- 隔离性:该属性确保不满足执行的并发性。提供隔离的主要目标是并发控制。
- 持久性:持久性仅仅意味着一旦事务被提交,它将保持不变,甚至可能出现断电、崩溃或错误。
相关文章:
SQL 复习 03
函数与关键字 用法说明round(x, n)四舍五入,x为浮点数,n为保留的位数ceil(x)向上取整floor(x)向下取整truncate(x, n)截断x,n为保留的位,该位之后的数值置零,位数表示示例:321.123,其中小数点前…...
出现 sudo: docker: command not found 的解决方法
目录 1. 问题所示2. 原理分析3. 解决方法3.1 未成功安装引起3.2 环境变量引起1. 问题所示 安装了docker,但是执行docker命令的时候,提示该问题: ubuntu@10-41-104-1:~$ sudo docker ps -a sudo: docker: command not foundubuntu@10-41-104-1:~$ sudo apt-get install doc…...
FastApi-1-结合sql 增/查demo
目录 FastAPI学习记录项目结构部分接口/代码展示感受全部代码 FastAPI学习记录 fastapi已经学习有一段时间,今天抽时间简单整理下。 官网介绍: FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Py…...
Spring学习笔记3
使用注解开发: Component 组件开发相当于 Value(“xxx”)可以对属性进行赋值 package pojo;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; //等价于<bean id"user" class"po…...
springboot艰难版本升级之路!! springboot 2.3.x版本升级到2.7.x版本
文章目录 1.缘起1.1 升级到版本2.7.12启动失败,而且没有报错信息1.2 application-dev.yml 配置加载问题1.3 openfeign依赖问题汇总1.4 datasource报错1.5 MySQL驱动升级1.6 循环依赖报错1.7 跨域错误临时总结1.缘起 由于服务需要搭建链路追踪, 需要把springboot版本升级到2.7.1…...
Codeforces 1856E2 复杂度分析 + DP
题意 传送门 Codeforces 1856E2 PermuTree (hard version) 题解 可以独立考虑每一个固定的 p l c a ( u , v ) plca(u,v) plca(u,v) 对答案的贡献。可以观察到,对于 p p p 的每一棵子树,其所有节点在最优情况下仅有 a p < a v a_p < a_v ap…...
Windows - UWP - 为UWP应用创建桌面快捷方式
Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式,不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车, 这将显示电脑上的已安装应用(Win32 & UWP): 找到想要创建…...
了解Web DDoS海啸攻击的4个维度
我们都知道近年来网络攻击的数量和频率急剧上升,针对Web应用程序的DDoS海啸攻击就是其中增长非常迅速的一个种类。过去常见的HTTP/S洪水攻击正在大范围的转变为更难对付的Web DDoS海啸攻击,每个人都应该提前做好被攻击的准备并采取适当的保护措施。 哪些…...
【数学建模】逻辑回归算法(Logistic Resgression)
逻辑回归算法 简介逻辑回归与条件概率绘制sigmoid函数 简介 逻辑回归算法是一种简单但功能强大的二元线性分类算法。需要注意的是,尽管"逻辑回归"名字带有“回归”二字,但逻辑回归是一个分类算法,而不是回归算法。 我认为ÿ…...
Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦
文章目录 背景架构HDFS HA配置错误原因解决方案方案一方案二方案三(首先查看自己各参数文件是否配置出错) 后记补充failovertransitionToActive 常用端口号及配置文件常用端口号hadoop3.xhadoop2.x 常用配置文件 这里说一下配置Hadoop HA集群可能出现的两…...
[Go版]算法通关村第十一关白银——位运算的高频算法题
目录 专题1:位移的妙用题目:位1的个数(也被称为汉明重量)解法1:遍历所有位,判断每个位的数字是否是1Go代码 解法2:依次消除每个1的位 numnum&(num-1)Go代码 题目:比特位计数思路…...
Swift 基础
工程目录 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 点击下载代码:swift-01...
IDEA的常用设置,让你更快速的编程
一、前言 在使用JetBrains的IntelliJ IDEA进行软件开发时,了解和正确配置一些常用设置是非常重要的。IDEA的强大功能和定制性使得开发过程更加高效和舒适。 在本文中,我们将介绍一些常用的IDEA设置,帮助您更好地利用IDEA进行开发。这些设置包…...
docker 镜像的导出与导入 save 与 load
一、镜像导出 docker save 导出 将系统中的镜像保存为压缩包,进行文件传输。使用 docker save --help 查看命令各参数,或者去docker官网查看.以 hello-world镜像为例。 A:将镜像保存为tar包 docker save image > package.tar docker sa…...
WPF显示初始界面--SplashScreen
WPF显示初始界面–SplashScreen 前言 WPF应用程序的运行速度快,但并不能在瞬间启动。当第一次启动应用程序时,会有一些延迟,因为公共语言运行时(CLR)首先需要初始化.NET环境,然后启动应用程序。 对于WPF中…...
08- AD/DA模/数转换
AD/DA模/数转换 8、AD/DA模/数转换8.1 AD转换注意 示例8.2 DA转换DAC转换原理: 8.3 PWM的DAC 8、AD/DA模/数转换 8.1 AD转换 通道引脚对照表: ADC的引脚: 规则通道和注入通道: 各个通道可以在单次、连续、扫描或者间断模式里…...
DTC服务(0x14 0x19 0x85)
DTC相关的服务有ReadDTCInformation (19) service,ControlDTCSetting (85) service和ReadDTCInformation (19) service ReadDTCInformation (19) service 该服务允许客户端从车辆内任意一台服务器或一组服务器中读取驻留在服务器中的诊断故障代码( DTC )信息的状态…...
【国护攻防场景下的沙箱技术对比】
目录 前言 沙箱技术分析 总结 前言 真高兴呀,又是受到红队大佬青睐的一天,今天下午很荣幸的收到了来自红队大佬的恶意投喂,把我们各位在座100年工作经验的蓝队师傅们吓得赶忙拔掉自己的电脑电源,断掉自己的网线,…...
springboot综合案例第三课
SpringSecurity入门 什么是SpringSecurity Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。 (https://projects.spring.io/spring-security/) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别 是使…...
面试经典150题——罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#x…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
轻量安全的密码管理工具Vaultwarden
一、Vaultwarden概述 Vaultwarden主要作用是提供一个自托管的密码管理器服务。它是Bitwarden密码管理器的第三方轻量版,由国外开发者在Bitwarden的基础上,采用Rust语言重写而成。 (一)Vaultwarden镜像的作用及特点 轻量级与高性…...
React、Git、计网、发展趋势等内容——前端面试宝典(字节、小红书和美团)
React React Hook实现架构、.Hook不能在循环嵌套语句中使用 , 为什么,Fiber架构,面试向面试官介绍,详细解释 用户: React Hook实现架构、.Hook不能在循环嵌套语句中使用 , 为什么,Fiber架构,面试向面试官介绍&#x…...
