【面试分享】面试题——数据库

一、题目

1.Oracle和MySQL的区别?
2.手机端数据库的了解
3.简单说一下用过哪些数据库,用过索引吗?
4.你项目数据库用的是明文还是密文
5.考虑一下,怎么给用户名,密码加密和解密
6.介绍一下innodb和Mylsam,他们有什么区别?
7. MySQL存储引擎有哪些,默认用哪个?
8.C3P0连接池的使用和好处
9.数据库3大范式的理解
10.oracle实例和用户的关系
11.0racle中怎么使用行转列?
12.SQL的执行顺序?
13.oracle提供哪些内置函数?
14.Oracle怎么实现分组查询?
15.连接表的时候是怎么操作的?
16.Oracle中左连接是怎么使用的?
17.给出一个内查询的例子
18.mysql怎么做全连接?
19.在oracle大数据量下的分页解决方法?
20.说一下left join 和innerjoin的用法及区别
21.如果想查询某个时间段的数据,该怎么查?
22.数据库怎么优化查询?
23.sql分页查询怎么实现,如何查询行间信息?
24.分页组件怎么是实现,在sql中怎么实现
25.如何实现多条修改? 26.MySQL创建和删除表的关键字
27.truncate、delete、drop的区别?
28.比较表和视图的区别
29.视图为什么比一般的语句好用?
30.什么是索引,索引优缺点
31.索引的底层运作
32.什么数据不适合索引?
33.索引怎么使用,在一张表上创建很多索引可以吗,为什么?
34.索引的实现方式?
35.为什么索引查询比较快?
36.MySQL的索引是用什么数据结构,并介绍内部如何实现?
37.索引会对更新造成影响吗,为什么?
38.怎么为视图创建索引?
39.什么是存储过程,怎么创建存储过程?
40.简单的说一下事务,事务的特性?
41.事务的传播属性有哪几种?分别有什么作用
42.oracle中的五个约束条件是什么?

二、答案

1、Oracle和MySQL的区别?

    Oracle是大型数据库管理系统,适用于企业级应用,提供高级功能如RAC、ASM等。MySQL是轻量级数据库,简单易用,适合中小型应用。

2、手机端数据库的了解?

    手机端常使用SQLite数据库,因为它轻量、不需要配置服务器、易于集成到移动应用中。

3、简单说一下用过哪些数据库,用过索引吗?

    我用过MySQL和Oracle数据库。索引用于加快数据检索速度,我在数据库设计中经常使用。

4、你项目数据库用的是明文还是密文?

    数据库中存储敏感信息(如密码)应使用密文。

5、考虑一下,怎么给用户名、密码加密和解密?

    使用哈希函数(如SHA-256)加密密码,不存储解密密钥。用户名通常不加密,但敏感操作前会验证其合法性。

6、介绍一下InnoDB和MyISAM,他们有什么区别?

    InnoDB支持事务处理、行级锁定和外键,是MySQL的默认存储引擎。MyISAM不支持事务处理,使用表级锁定,适合读密集型应用。

7、MySQL存储引擎有哪些,默认用哪个?

    MySQL有多种存储引擎,如InnoDB、MyISAM、Memory等。默认存储引擎是InnoDB。

8、C3P0连接池的使用和好处?

    C3P0是一个开源的JDBC连接池,用于管理和重用数据库连接。它减少了连接开销,提高了数据库操作的性能。

9、数据库3大范式的理解?

    第一范式要求表内每个字段都是原子性的;第二范式要求非主键字段完全依赖于主键;第三范式要求非主键字段不依赖于其他非主键字段。

10、Oracle实例和用户的关系?

    Oracle实例是数据库运行的环境,包括内存结构和后台进程。用户是访问数据库的逻辑实体,通过实例与数据库进行交互。

11、Oracle中怎么使用行转列?

    可以使用PIVOT操作符或CASE语句结合聚合函数来实现行转列。

12、SQL的执行顺序?

    SQL执行顺序大致为:FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT(非SQL标准,但适用于多数数据库)。

13、Oracle提供哪些内置函数?

    Oracle提供了大量内置函数,如字符串处理(SUBSTR, TRIM)、数学计算(ROUND, FLOOR)、日期时间处理(TO_DATE, SYSDATE)等。

14、Oracle怎么实现分组查询?

    使用GROUP BY子句对查询结果进行分组,结合聚合函数(如SUM, AVG, COUNT)进行统计。

15、连接表的时候是怎么操作的?

    使用JOIN语句(如INNER JOIN, LEFT JOIN)根据关联条件连接两个或多个表。

16、Oracle中左连接是怎么使用的?

    使用LEFT JOIN(或LEFT OUTER JOIN)语法,从左表返回所有行,即使右表中没有匹配的行。

17、给出一个内查询的例子?

18、MySQL怎么做全连接?

    MySQL没有直接的全连接(FULL OUTER JOIN),但可以通过UNION结合左连接和右连接来模拟。

19、在Oracle大数据量下的分页解决方法?

    使用ROWNUM或FETCH FIRST ... ROWS ONLY(Oracle 12c及以后)进行分页,结合子查询优化性能。

20、说一下LEFT JOIN和INNER JOIN的用法及区别?

    LEFT JOIN返回左表所有行和右表中匹配的行,右表无匹配则返回NULL。INNER JOIN只返回两个表中都有匹配的行。

21、如果想查询某个时间段的数据,该怎么查?

    使用WHERE子句结合日期时间字段,如WHERE date_column BETWEEN '2023-01-01' AND '2023-01-31'。

22、数据库怎么优化查询?

    优化查询包括使用合适的索引、避免SELECT *、优化查询语句、使用连接池等。

23、SQL分页查询怎么实现,如何查询行间信息?

    分页查询通常使用LIMIT和OFFSET子句(MySQL)或ROWNUM、FETCH FIRST(Oracle)。行间信息可能需要使用窗口函数(如ROW_NUMBER())。

24、分页组件怎么实现,在SQL中怎么实现?

    分页组件通常在应用层实现,通过传递页码和页面

25、如何实现多条修改?

    对于多条记录的修改,如果记录之间没有直接的依赖关系,可以使用UPDATE语句结合WHERE子句来逐一修改。如果需要同时修改多条具有相同条件的记录,可以直接在一个UPDATE语句中完成。对于复杂的更新,可能需要结合使用子查询或临时表。

26、MySQL创建和删除表的关键字?

    创建表:使用CREATE TABLE关键字,后跟表名、列定义(包括数据类型、约束等)。

    删除表:使用DROP TABLE关键字,后跟表名。注意,这会永久删除表及其所有数据,操作前需要谨慎。

27、truncate、delete、drop的区别?

    TRUNCATE:快速删除表中所有行,不记录个别行删除动作,不能回滚,不触发触发器。

    DELETE:删除表中符合条件的行,可以回滚,可以触发触发器。

    DROP:删除表的结构及数据,操作不可回滚。

28、比较表和视图的区别

    表:是实际存储数据的容器,具有物理存储空间。

    视图:是虚拟表,基于SQL语句的结果集,不存储数据,仅保存查询逻辑。

29、视图为什么比一般的语句好用?

    视图可以简化复杂的SQL查询,提高数据访问的安全性,逻辑上表示数据子集或组合。

30、什么是索引,索引优缺点

    索引:是数据库表中一列或多列的值进行排序的一种结构,帮助快速访问数据库表中的特定信息。

    优点:加快查询速度,减少I/O操作。

    缺点:占用额外存储空间,降低更新表的速度(因为索引也需更新)。

31、索引的底层运作

    索引底层通常使用B树(如B+树)或其变种来实现,以支持快速的查找、顺序访问、插入和删除操作。

32、什么数据不适合索引?

    大量重复数据的列,如性别;频繁变动的数据列;很少查询的列;参与计算或函数的列。

33、索引怎么使用,在一张表上创建很多索引可以吗,为什么?

    根据查询条件创建索引。不建议在一张表上创建过多索引,因为会降低更新表的速度并占用更多存储空间。

34、索引的实现方式?

    索引主要通过B树(B+树)、哈希表等数据结构实现,具体取决于数据库管理系统的实现。

35、为什么索引查询比较快?

    索引减少了数据检索时需要扫描的数据量,通过索引可以快速定位到数据在磁盘上的位置。

36、MySQL的索引是用什么数据结构,并介绍内部如何实现?

    MySQL主要使用B+树作为索引的数据结构。B+树是一种自平衡的树结构,所有值都存储在叶子节点,非叶子节点仅存储键值信息,支持高效的查找、顺序访问和范围查询。

37、索引会对更新造成影响吗,为什么?

    是的,索引会对更新(包括INSERT、UPDATE、DELETE)造成影响,因为每次数据变动时,索引也需要被相应地更新以保持与数据的同步。

38、怎么为视图创建索引?

    视图本身不支持直接创建索引。但可以在视图所基于的表上创建索引,以间接提高视图查询的效率。

39、什么是存储过程,怎么创建存储过程?

    存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程需要参数)来执行它。

    创建:使用CREATE PROCEDURE语句,后跟存储过程名和SQL语句块。

40、简单的说一下事务,事务的特性?

    事务:是数据库操作的一个最小工作单元,作为一个整体一起提交或回滚。

    特性:ACID(原子性、一致性、隔离性、持久性)。

41、事务的传播属性有哪几种?分别有什么作用

    PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。

    PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式继续运行。

    其他属性还包括PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED等,分别用于不同的事务管理场景。

42、oracle中的五个约束条件是什么?

    NOT NULL:非空约束,保证列中所有数据不为NULL。

    UNIQUE:唯一约束,保证列中所有数据值唯一。

    PRIMARY KEY:主键约束,唯一标识表中的每一行,且不允许为空。

    FOREIGN KEY:外键约束,用于两个表之间建立关系,保证参照完整性。

    CHECK:检查约束,用于限制列中值的范围,确保列中的值满足指定的条件。

  • 25
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值