SQL 复习 03

这篇具有很好参考价值的文章主要介绍了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 属性用于确保数据事务在数据库系统中得到可靠处理。对数据的单个逻辑操作称为事务。文章来源地址https://www.toymoban.com/news/detail-655914.html

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

到了这里,关于SQL 复习 03的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【手写数据库toadb】SQL字符串如何被数据库认识? 词法语法分析基础原理,常用工具

    ​ 专栏内容 : 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学

    2024年02月08日
    浏览(52)
  • MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)

    本篇博客深入详细地介绍了数据库索引的概念和重要性。内容包含:索引的概念和目标、索引的优点与缺点。此外,博客还深入解析了三种主要的索引结构:B-Tree、B+Tree和Hash,提供了详细的结构解析和优化方法,并通过插图进一步增强了理解。 博客的部分内容专注于对B-Tr

    2024年02月21日
    浏览(64)
  • 好文分享 | 记一次Oracle12c数据库SQL短暂缓慢问题分析

    本文为墨天轮社区作者 张sir 原创作品,记录了日常运维Oracle数据库过程中遇到的一个慢SQL问题的解决、优化过程,文章内容全面具体、分析到位,且含有经验总结,分享给各位。 这次出问题的数据库比较特殊,承接的系统交易要求很高,SQL基本都是短平快,响应时间基本不

    2024年02月05日
    浏览(57)
  • 数据库期末复习(SQL,范式,数据库设计例题)

    创表 视图 例题:建立一个视图V1,显示老师与学生的授课关系,包括年份,学期,课程名称,老师ID,老师姓名,学生ID,学生姓名 向表中添加或删除约束 添加信息 例题:给“Aufr”同学选上2010年秋季学期的所有课程 删除信息 例题:删除“Comp. Sci.”学院“Ploski”同学,所有

    2024年02月02日
    浏览(65)
  • 【手写数据库toadb】SQL解析器的实现架构,create table/insert 多values语句的解析树生成流程和输出结构分析

    ​ 专栏内容 : 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学

    2024年02月05日
    浏览(68)
  • 大型数据库期末总复习【SQL server 2008 基础教程】

    Microsoft SQL Server 2008系统由4个主要部分组成。这4个部分被称为4个服务,这些服务分别是 数据库引擎、分析服务、报表服务和集成服务 。这些服务之间相互存在和相互应用,它们的关系示意图如图所示: 1.Microsoft SQL Server 2008系统提供了两种类型的数据库,即系统数据库和用户

    2024年02月06日
    浏览(91)
  • 数据库系统概述——第三章 关系数据库标准语言SQL(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月10日
    浏览(69)
  • 读SQL学习指南(第3版)笔记03_创建和填充数据库

    3.2.3.1. ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT; 5.4.3.1. sql 5.4.3.2. %a 星期几的简写,比如Sun、Mon、... 5.4.3.3. %b 月份名称的简写,比如Jan、Feb、... 5.4.3.4. %c 月份的数字形式(0…12) 5.4.3.5. %d 月份中的天数(00…31) 5.4.3.6. %f 微秒数(000000…999999) 5.4.3.7. %H 24小

    2024年02月11日
    浏览(47)
  • 《Microsoft SQL Server入门教程》第03篇 示例数据库和示例表

    在接下来的教程中,我们将会使用一个名为 BikeStores 的示例数据库,它的实体关系图(ERD)如下: 从上图可以看出,BikeStores 数据可靠包含两个模式(Schema),分别是 sales 和 production。这两个模式总共包含 9 个数据表。 sales.customers sales.customers 表存储了客户的信息,包括名字

    2024年02月05日
    浏览(67)
  • 分析型数据库:分布式分析型数据库

    分析型数据库的另外一个发展方向就是以分布式技术来代替MPP的并行计算,一方面分布式技术比MPP有更好的可扩展性,对底层的异构软硬件支持度更好,可以解决MPP数据库的几个关键架构问题。本文介绍分布式分析型数据库。 — 背景介绍— 目前在分布式分析型数据库领域,

    2023年04月14日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包