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 属性用于确保数据事务在数据库系统中得到可靠处理。对数据的单个逻辑操作称为事务。

  • 原子性:要求每笔交易要么全有,要么全无。这意味着如果事务的一部分失败,则整个事务失败并且数据库状态保持不变。
  • 一致性:一致性属性确保数据必须满足所有验证规则。简而言之,您可以说您的事务在未完成其状态的情况下永远不会离开数据库。
  • 隔离性:该属性确保不满足执行的并发性。提供隔离的主要目标是并发控制。
  • 持久性:持久性仅仅意味着一旦事务被提交,它将保持不变,甚至可能出现断电、崩溃或错误。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 多进程

目录 0x01 linux中特殊的进程 0x02 进程的标识 0x03 创建子进程 0x01 linux中特殊的进程 0号进程:idle进程,系统启动加载的进程1号进程:systemd进程,系统初始化,是所有进程的祖先进程 init2号进程:kthre…

YOLOv5白皮书-第Y6周:模型改进

📌本周任务:模型改进📌 注:对yolov5l.yaml文件中的backbone模块和head模块进行改进。 任务结构图: YOLOv5s网络结构图: 原始模型代码: # YOLOv5 v6.0 backbone backbone:# [from, number, module, args]…

每日汇评:黄金在 200 日移动平均线附近似乎很脆弱,关注美国零售销售

1、金价预计将巩固其近期跌势,至 6 月初以来的最低水平; 2、对美联储再次加息的押注继续限制了贵金属的上涨; 3、金融市场现在期待美国零售销售报告带来一些有意义的推动; 周二金价难以获得任何有意义的牵引力,并在…

Mac RN环境搭建

IOS RN ios android原生环境搭建有时候是真恶心,电脑环境不一样配置也有差异。 我已经安装官网的文档配置了ios环境 执行 npx react-nativelatest init AwesomeProject 报错 然后自己百度查呀执行 gem update --system 说是没有权限,执行失败。因…

POSTGRESQL 关于安装中自动启动的问题 详解

开头还是介绍一下群,如果感兴趣Polardb ,mongodb ,MySQL ,Postgresql ,redis ,SQL SERVER ,ORACLE,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加 liuaustin3微信号 &…

OpenSSH 远程升级到 9.4p1

OpenSSH 远程升级到 9.4p1 文章目录 OpenSSH 远程升级到 9.4p1背景升级前提1. 升级 OpenSSL2. 安装并启用Telnet 升级OpenSSH 背景 最近的护网行动,被查出来了好几个关于OpenSSH 的漏洞。这是因为服务器系统安装后,直接使用了系统自带版本的OpenSSH &am…

2023-08-15 linux mipi 屏幕调试:有一个屏幕开机时候不显示,开机后按power 按键休眠唤醒就可以显示。原因是reset gpio 被复用

一、现象:今天更新了一个新版本的buildroot linux sdk ,调试两个mipi 屏幕,这两个屏幕之前在其他的sdk都调好了的,所有直接把配置搬过来。但是有一个屏幕可以正常显示,有一个屏幕开机时候不显示,开机后按po…

CentOS防火墙操作:开启端口、开启、关闭、配置

一、基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 : systemctl enable firewalld systemctl是…

angular注入方法providers

在Angular中有很多方式可以将服务类注册到注入器中: Injectable 元数据中的providedIn属性 NgModule 元数据中的 providers属性 Component 元数据中的 providers属性 创建一个文件名叫名 hero.service.ts叫 hero 的服务 hero.service.ts import { Injectable } from angular…

C语言,结构体,结构体大小,

1、结构体: 用于存储不同数据类型的多个相关变量,从而形成一个具有独立性的组合数据类型。 结构体的声明: struct 结构体类型名{ 数据类型 成员1; 数据类型 成员2; 数据类型 成员3; ……… }&#xff1…

转行软件测试四个月学习,第一次面试经过分享

我是去年上半年从销售行业转行到测试的,从销售公司辞职之后选择去培训班培训软件测试,经历了四个月左右的培训,在培训班结课前两周就开始投简历了,在结课的时候顺利拿到了offer。在新的公司从事软件测试工作已经将近半年有余&…

深信服数据中心管理系统 XXE漏洞复现

0x01 产品简介 深信服数据中心管理系统DC为AC的外置数据中心,主要用于海量日志数据的异地扩展备份管理,多条件组合的高效查询,统计和趋势报表生成,设备运行状态监控等功能。 0x02 漏洞概述 深信服数据中心管理系统DC存在XML外部实…

WPS-0DAY-20230809的分析和利用复现

WPS-0DAY-20230809的分析和初步复现 一、漏洞学习1、本地复现环境过程 2、代码解析1.htmlexp.py 3、通过修改shellcode拿shell曲折的学习msf生成sc 二、疑点1、问题2、我的测试测试方法测试结果 一、漏洞学习 强调:以下内容仅供学习和测试,一切行为均在…

Keil开发STM32单片机项目的三种方式

STM32单片机相比51单片机,内部结构复杂很多,因此直接对底层寄存器编码,相对复杂,这个需要我们了解芯片手册,对于复杂项目,这些操作可能需要反复编写,因此出现了标准库的方式,对寄存器…

ES中倒排索引机制

在ES的倒排索引机制中有四个重要的名词:Term、Term Dictionary、Term Index、Posting List。 Term(词条):词条是索引里面最小的存储和查询单元。一段文本经过分析器分析以后就会输出一串词条。一般来说英文语境中词条是一个单词&a…

日期时间常用功能和函数

1 time 模块 time 模块提供了很多与时间相关的类和函数,下面我们介绍一些常用的。 1.1 struct_time 类 time 模块的 struct_time 类代表一个时间对象,可以通过索引和属性名访问值。对应关系如下所示: 索引属性值0tm_year(年&a…

Docker容器与虚拟化技术:Docker资源控制、数据管理

目录 一、理论 1.资源控制 2.Docker数据管理 二、实验 1.Docker资源控制 2.Docker数据管理 三、问题 1.docker容器故障导致大量日志集满,造成磁盘空间满 2、当日志占满之后如何处理 四、总结 一、理论 1.资源控制 (1) CPU 资源控制 cgroups&#xff0…

Java Vue Uniapp MES生产执行管理系统

本MES系统是一款B/S结构、通用的生产执行管理系统,功能强大! 系统基于多年离散智造行业的业务经验组建,主要目的是为国内离散制造业的中小企业提供一个专业化、通用性、低成本的MES系统解决方案。 联系作者获取

Linux(进程控制)

进程控制 进程创建fork函数初识fork函数返回值写时拷贝fork常规用法fork调用失败的原因 进程终止进程退出码进程常见退出方法 进程等待进程等待必要性获取子进程status进程等待的方法 阻塞等待与非阻塞等待阻塞等待非阻塞等待 进程替换替换原理替换函数函数解释命名理解 做一个…

re学习(32)【绿城杯2021】babyvxworks(浅谈花指令)

链接:https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取码:b9xf wp:首先找不到main函数,然后寻找特殊字符串, 交叉引用 反汇编 主函数在sub_3D9当中,但是IDA分析错了 分析错误后,删除函数 创建函数 操…