史上最全数据库相关面试题(二)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 史上最全数据库相关面试题(二)

十一、drop、delete与truncate分别在什么场景之下使用?


参考回答:

(1)不再需要一张表的时候,用drop;
(2)想删除部分数据行时候,用delete,并且带上where子句;
(3)保留表而删除所有数据的时候用truncate;


十二、什么是视图?以及视图的使用场景有哪些?


参考回答:
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。

对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。只暴露部分字段给访问者,所以就建一个虚表,就是视图。

查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异。


十三、什么是三个范式


参考回答:
(1)第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。

(2)第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。 


(3)第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:关键字段→非关键字段 x →非关键字段y。


十四、触发器的作用?


参考回答:
触发器是一特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。
如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。


非关系型数据库和关系型数据库区别,有什么优势?


参考回答:

非关系型数据库的优势:
(1)性能:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。(2)可扩展性:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
关系型数据库的优势:
(1)复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。(2)事务支持:使得对于安全性能很高的数据访问要求得以实现。
拓展:
(1)对于这两类数据库,对方的优势就是自己的弱势,反之亦然。
(2)NOSQL数据库慢慢开始具备SQL数据库的一些复杂查询功能,比如MongoDB。
(3)对于事务的支持也可以用一些系统级的原子操作来实现例如乐观锁之类的方法来曲线救国,比如Redisset nx。


什么是临时表,临时表什么时候删除?


参考回答:
临时表可以手动删除:

DROP TEMPORARY TABLE IF EXISTS temp_tb;

临时表只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间。因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表。
创建临时表的语法与创建表语法类似,不同之处是增加关键字TEMPORARY,
如:

CREATE TEMPORARY TABLE tmp_table
(
NAME VARCHAR (10) NOT NULL,
timedate NOT NULL
);
select* from tmp_table;


十七、什么是存储过程?


有哪些优缺点?参考回答:存储过程是一些预编译的SQL语句。更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。


(1)存储过程是一个预编译的代码块,执行效率比较高。

(2)一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率。

(3)可以一定程度上确保数据安全。


十八、存储过程如何调用


参考回答:
1)可以用一个命令对象来调用存储过程。 
2)可以供外部程序调用,比如:java程序。


十九、存储过程与函数的区别


参考回答:
存储过程:
(1)用于在数据库中完成特定的操作或者任务(如插入、删除等)


(2)程序头部声明用procedure
(3)程序头部声明时不需描述返回类型可以使用in/out/in out 三种模式的参数
(4)可作为一个独立的PL/SQL语句来执行
(5)可以通过out/in out 返回零个或多个值
(6)SQL语句(DML 或SELECT)中不可调用存储过程
函数:
(1)用于特定的数据(如选择)


(2)程序头部声明用function
(3)程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句
(4)可以使用in/out/in out 三种模式的参数
(5)不能独立执行,必须作为表达式的一部分调用
(6)通过return语句返回一个值,且改值要与声明部分一致,也可以是通过out类型的参数带出的变量
(7)SQL语句(DML 或SELECT)中可以调用函数


二十、什么是 内连接、外连接、交叉连接、笛卡尔积?


参考回答:

(1)内连接: 只连接匹配的行
(2)左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
(3)右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行

(4)全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
(5)交叉连接: 生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
10天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
6月前
|
NoSQL 安全 Unix
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(中)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
50 0
|
4月前
|
canal 消息中间件 缓存
面试题:如何解决缓存和数据库的一致性问题?
面试题:如何解决缓存和数据库的一致性问题?
86 1
|
3月前
|
缓存 监控 Go
[go 面试] 缓存策略与应对数据库压力的良方
[go 面试] 缓存策略与应对数据库压力的良方
|
4月前
|
SQL 安全 Java
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
53 0
|
4月前
|
druid Java 数据库连接
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
83 0
|
4月前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
66 0
|
4月前
|
SQL 监控 Java
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
299 0
|
6月前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
487 9
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
6月前
|
存储 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(下)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
262 1
下一篇
无影云桌面