数据库面试常问问题有哪些?

好嘞,咱们来聊聊数据库里这几个挺重要的概念,用大白话给你捋一捋哈。

1 . 啥叫数据库事务? 简单说,数据库事务就是一个“一次性完成”的工作单元。
你可以把它想象成你在超市购物:从选商品、排队结账到拿到收据,这一系列连贯的操作,要么全部成功,要么就啥都没发生,不能中间选了几样就付款走人,或者只付款没拿货。
数据库事务就是这样的,里面可能包含很多操作(比如查数据、改数据、删数据),但它们必须作为一个整体来执行,要么都成功提交,要么在遇到问题的时候全部回滚,保证数据库状态的一致性。

2 . 数据库事务的四大特点(ACID原则) 原子性(Atomicity): 就是你刚才说的,事务里的所有操作要么全部成功,要么全部失败,没有中间状态。
打个比方,转账要么两边金额都变动了,要么两边都没变。
一致性(Consistency): 事务执行前后,数据库都要从一个“规矩”的状态变成另一个“规矩”的状态。
这个“规矩”就是数据库的规则(比如不能有负数金额,记录不能有重复)。
它确保了数据总是符合业务逻辑和约束,不会出现半途而废导致的数据混乱。
隔离性(Isolation): 假设好几个人同时在银行办业务,你存钱的时候,我希望别人不能在你存钱的过程中帮你取钱或者存别的钱,对吧?隔离性就是保证并发执行的事务彼此互不干扰,就像它们是按顺序一个接一个执行的,这样结果才正确。
持久性(Durability): 一旦事务提交了(也就是操作成功了),那么它对数据库产生的影响就是永久性的,就算系统突然崩溃了,这些改变也不会丢失。

3 . 啥是数据库连接泄露? 这个问题其实挺常见的。
你在用数据库编程的时候,通常需要先建立连接(像去银行柜台排队),然后通过连接执行SQL语句(办业务),最后把连接关掉(离开柜台)。
如果有时候你写代码漏掉了关连接这一步,或者关闭连接的代码出了Bug,那么这个连接就“活”着了,但也没人去管它。
系统里这类“没关掉的连接”多了,就会像排队的人越来越多,后面想排队的就进不去了,最终导致你的程序没法获取新的数据库连接,系统就卡死了。
所以,及时关闭连接(Connection、Statement、ResultSet这些)非常重要。

4 . 聚集索引是啥? 你可以把聚集索引想象成书的目录。
书的页面(数据行)是按顺序物理存放的,比如按书名排序。
聚集索引就是让数据库表里的数据行也按照某个(或某些)列的值物理排序存储。
比如,如果一张表里有“ID”列,并且这个表建立了聚集索引在“ID”上,那么ID值小的记录就存前面,ID值大的就存后面。
所以,如果你根据ID查一个很大的数字,数据库就能直接找到磁盘上对应的位置,因为它知道这个ID的记录应该在后面。
关键是,因为数据行是物理顺序,所以一张表通常只能有一个聚集索引。

5 . 主键和外键是啥关系? 在一张关系型数据库表里,每条记录(比如一个用户)都有很多信息(字段)。
主键就像是给这条记录起的一个全球唯一的名字或身份证号。
有了主键,数据库就能准确无误地找到并区分每一条记录,不能有重复或者空的主键。
外键呢,就好比是两个表之间的“关系纽带”。
如果你在表A里有一个字段,它的值必须对应表B里某个主键字段的值(也就是说,表A的这个字段引用了表B的唯一标识),那么这个字段在表A里就叫做外键。
有了外键,就能保证表A里的记录和表B里的记录之间的关联是有效的,比如确保你不会在表A里插入一个不存在的用户ID。
这就像用朋友的身份证号(主键)来记录你通讯录里朋友的姓名和电话(表A和表B)。

MySQL面试题目10道必考题10道mysql面试题

嘿,小伙伴们!今天咱们来聊聊MySQL面试中那些必不可少的1 0道题。
MySQL这玩意儿,咱们都知道,是Web后端存储的大热门,所以面试官们肯定得考考你的MySQL功底。
下面,我就来给大家详细说说这些题目,顺便带点小解释,好让咱们在面试时能胸有成竹!
1 . 数据库里的“表”是个啥?简单来说,表就是存放数据的行和列的组合,每个表都有自己的名字,方便咱们区分。
每一行代表一条记录,每一列代表一个字段。

2 . 外键是个啥?它就像是两个表之间的桥梁,确保一个表中的数据与另一个表中的数据能对得上号,保证数据的一致性和完整性。

3 . SQL里的JOIN都有哪些分类?JOIN就是用来把两个或多个表连接起来的操作。
常见的有内连接、左连接、右连接和全外连接,每种连接方式都有它的用武之地。

4 . 怎么给数据库改名?用ALTER DATABASE命令,格式是ALTER DATABASE old_db_name RENAME TO new_db_name,把老名字换成新名字就搞定了。

5 . SQL视图有什么用?视图就像是个虚拟的表,它其实是由查询语句构成的,可以简化我们的查询和数据管理,让开发更轻松。

6 . 存储过程是啥?它就像是一段预先写好的SQL代码,可以重复使用,有参数、条件、循环和错误处理等功能,能提高数据库的安全性和效率。

7 . 索引是个啥?它就像是一本书的目录,能让我们快速找到需要的数据,提高查询速度。

8 . 怎么创建MySQL用户?用CREATE USER命令,比如CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';这样就创建了一个新用户。

9 . 怎么备份和还原MySQL数据库?备份用mysqldump命令,还原用mysql命令,简单几步就搞定了。

1 0. 怎么查看数据库里的所有表?用SHOW TABLES命令,如果想看表的详细结构,就用DESCRIBE table_name。

这些就是面试中常见的MySQL问题,掌握它们,面试时就不怕啦!不过,MySQL的世界可大着呢,还得继续学习和实践哦!

30个sql面试题及答案(数据分析师福利)

嘿,聊聊SQL面试那点事儿吧。
想搞懂数据库,你得懂SQL,这玩意儿可太重要了。
SQL,就是结构化查询语言,说白了就是跟数据库打交道用的工具,啥选择数据、更新数据、删数据、插数据,都得靠它。
它是ANSI标准的一部分,所以用起来挺普遍的。

数据库嘛,说白了就是存数据的,里面最基本的就是表和字段。
表就是一堆数据的集合,列就叫字段,记录就是表里的那些行,数量可不限。
数据库就是用来组织和管理信息的系统,而DBMS(数据库管理系统)就是具体负责管理这些数据的,有啥关系型、分层、网络、面向对象这些类型,不过关系型DBMS最常用,像用JOIN连接不同表啥的。

SQL命令挺多的,有DDL、DCL、DML、DQL、TCL这些,分别对应定义数据结构、权限管理、数据操作、查询数据和事务控制。
视图就是个虚拟表,用SELECT语句创建,能省点内存;JOIN用来合并数据,有内连接、外连接这些;查询就是获取数据的基本请求,子查询就是嵌套在主查询里的查询。
自动增量就是在插入数据时自动生成唯一的数字,而Constraints(约束)就是保证数据完整性,比如NOTNULL、唯一键、主键这些。

SQL里的键类型有主键、外键、唯一键和复合键,设计数据库时得考虑规范化和非规范化。
存储过程是一组预编译的SQL语句,索引能提高查询速度,聚集和非聚集索引各有各的特点,触发器在数据更改时执行特定操作。
数据库的ACID特性保证了事务的原子性、一致性、隔离性和持久性。
SQL包含多种语句类型,比如数据定义、操作、交易和会话控制,还有WHERE和HAVING这些用来筛选结果的字句。
聚合函数如AVG、COUNT这些用于汇总数据,字符串函数处理文本数据。
排序规则定义了数据比较方式,游标是执行SQL查询时的工作单元,SQLServer是Microsoft的RDBMS实例,运算符用于WHERE子句中的条件判断。
NULL值、空格和0虽然看起来差不多,但各有各的含义。
数据仓库是集中式数据存储,区别于主键和唯一键,它们在表中的角色和允许空值的规定也各有不同。

理解这些概念对于成为高效的数据分析师太重要了。
在面试中,展示对这些概念的深入理解将有助于展示你的专业素养。

Oracle面试题(基础篇)

嘿,小伙伴们,今天咱们来聊聊Oracle面试中的基础知识。
Oracle Database,也就是我们常说的Oracle RDBMS,是一款由甲骨文公司推出的关系型数据库管理系统。
下面是几个常见的面试题,让我们一起学习一下吧!
1 . Oracle和SQL Server 2 005 有什么区别?
宏观上,Oracle可以在多种平台上运行,而SQL Server主要在Windows平台上使用,这直接影响了它们的稳定性和安全性。

微观上,可以从数据类型、数据库结构等方面来对比。

2 . Oracle中的游标怎么用?
游标分为显示游标和隐式游标。

显示游标用于处理SELECT查询返回的多条记录,而隐式游标在执行INSERT、DELETE、UPDATE等操作时自动生成。

3 . Oracle的Function和Procedure有何不同?
函数可以没有参数但必须返回值,而存储过程可以没有参数也不需要返回值。

函数使用RETURN语句,而存储过程通过OUT参数返回值。

4 . Oracle的导入导出有哪些方法,有何区别?
使用exp/imp工具进行二进制数据导入导出,而PL/SQL工具处理的是SQL语句文本文件。

5 . Oracle中有哪些文件类型?
数据文件(.dbf或.ora)、日志文件(.log)、控制文件(.ctl)。

6 . 如何优化Oracle数据库?
优化IO是关键,包括物理和逻辑优化。

物理优化涉及运行环境、优化器选择、实例参数配置等。

逻辑优化则涉及应用程序级别的优化,如逻辑分割表、使用占位符等。

7 . Oracle中字符串连接用什么符号?
使用||符号,比如 'abc' || 'd'。

8 . Oracle分区如何优化数据库?
分区可以提高可用性、减少关闭时间、简化维护、均衡I/O,并提高性能。

9 . Oracle是如何实现分页的?
使用rownum进行分页,这是最有效的方法。

1 0. Oracle能存储哪些类型的文件?
Clob、nclob、blob、bfile等。

1 1 . Oracle中索引列在哪些操作中会使用索引?
WHERE条件查询、分组、排序、使用聚集函数等。

1 2 . 如何实现数据库每隔3 0分钟自动备份?
通过操作系统定时任务执行导出脚本。

1 3 . Oracle中WHERE条件查询和排序的性能如何?
ORDER BY使用索引的条件非常严格,性能可能不高,建议尽量避免。

1 4 . 冷备份和热备份的区别及优缺点是什么?
冷备份在数据库关闭时进行,速度快,但只能恢复到特定时间点。

热备份在数据库运行时进行,可以秒级恢复,但维护难度大。

1 5 . 解释datablock、extent和segment的区别。

datablock是Oracle的最小逻辑单位,extent由多个相邻的block组成,segment则是由多个extent组成的。
tablespace是数据库中数据的逻辑存储单位。