• 数据库面试题及答案


    1. 触发器的作用?

       触发器是一种特殊的存储过程, 主要是通过时间来出发而被执行的. 它可以强化约束,

    来维护数据的完整性和一致性, 可以跟踪数据库内的操作从而不允许未经许可的更新和变化. 可以级联运算 

    2. 什么是存储过程? 用什么来调用?

      存储过程是一个预编译的SQL语句, 有点事允许模块化的设计, 只需要创建一次,就可以被多次调用,

    如果需要执行多次SQL,那么存储过程的速度更快. 可以用命令对象来调用存储过程. 可以供外部程序调用, 如java程序

    3. 存储过程的有优缺点?
      优点: 存储过程是一个预编译的SQL语句, 执行效率高
      放在数据库中,直接调用,减少网络通信
      安全性高
      可重复使用
      缺点: 移植性差

    4. 存储过程与函数的区别?   

      存储过程: 在数据库中完成指定的增删改查操作
      申明: procedure
      函数: 在编程语言中进行任务的处理
      申明: function

    5. 索引的作用? 和他的优点缺点是什么?   

      索引就是一种特殊的查询表, 数据库的搜索可以利用它加速对数据的检索. 类似于现实生活中的目录. 不需要查找整本书就可以找到想要的结果.

    6. 什么样的字段适合建立索引?   

      唯一, 不为空, 经常被查询的字段 7. 索引的类型有哪些?
      逻辑上: 单行索引,多行索引,唯一索引,非唯一索引,函数索引,域索引.
      物理上: 分区索引, 非分区索引
      B-tree: 正常性B树
      反转型B树
      bitmap位图索引
    8. 什么是事务? 什么是锁?
      事务就是被绑在一起作为一个逻辑工作单元的SQL语句分组, 如果任何一个语句操作失败那么整个操作就会失败, 会回滚到之前的状态. 要么全部执行, 要么一个都不执行.
      锁: DBMS中, 锁是实现事务的关键.
    9. 什么叫视图? 游标是什么?
      视图就是一种虚拟的表, 具有和物理表相同的功能. 可以对视图进行增改查操作, 视图通常是一个表或多个表的行或列的子集
      游标是遍历结果集的一个指针, 用来逐条处理数据
    10. 视图的优缺点?
      优点: 对数据的选择性访问
      用户可以通过简单的查询从复杂查询中得到结果
      维护数据的独立性
      对相同的数据产生不同的视图
      缺点: 性能
    11. 列举几种表连接的方式,有什么区别?
      左连接: 左边为主表表数据全部显示, 匹配表的不匹配部分不显示
      右连接: 右边为主表表数据全部显示, 匹配表的不匹配部分不显示
      内连接: 只有两个元素表相匹配的才能在结果集中显示
      全外连接: 连接中的不匹配的数据全部会显示出来
      交叉连接: 笛卡尔乘积, 显示的结果是连接表数的乘积
    12. 主键和外键的区别?
      主键在本表中是唯一的,不为空的, 外键可以重复和为空.
      外键和另外一张表相关联, 不能创建对应表中不存在的外键.
    13. 在数据库中查询语句速度很慢, 如何优化?
      建立索引
      减少表之间的关联
      优化SQL语句
      简化查询字段
    14. 数据库三范式是什么?
      第一范式: 列不可再分
      第二范式: 行可以唯一区分, 主键约束
      第三范式: 表的非主属性不能依赖其他表的非主属性外键约束
    15. union和union all有什么不同?
      union会删掉重复的记录, union all不会
    16. varchar2和varchar有什么区别?
      varchar2是Oracle自己开发的, 目前varchar2和varchar是同义词, 关键点是varchar是可变长度的, 可以根据实际的长度来存储
    17. oracle和mysql的区别?
      库函数不同
      Oracle是用表空间来管理的, mysql不是
      SQL语句不同
      分页查询不同
    18. oracle语句有多少类型?
      DDL, DML, DCL
      DDL: 建表,建数据库,建立约束,修改约束,权限修改
      DML: insert, update, delete
      DCL: 管理用户权限
    19. oracle的分页查询语句?
      select * from table where row_num between 1 and 10;
    20. 从数据库中随机选择50条?
      select * from (select * from example order by dbms_random.random) where rownum <= 50;
    21. order by与group by的区别?
      order by是排序查询
      group by是分组查询 having只能在group by之后, 使用group by查询的语句需要使用聚合函数
    22. commit在哪里会运用?
      Oracle的commit就是DML语句提交数据. 在未提交之前你的操作都是保存在内存中, 没有更新到物理内存中.

      执行commit从用户角度来讲就是更新到物理文件了. 事实上commit还写入了日志文件
    23. 行转列, 列转行怎么转?
      使用decode函数, 或者使用case when语句
    24. 什么是PL/SQL?
      PL/SQL是一种程序语言,叫做过程化SQL语言, PL/SQL是对oracle数据库对SQL语句的扩展.

      在普通的SQL语句的使用上增加了编程语言的特点. 通过逻辑判断,循环等操作来实现复杂的功能或者计算.     

      PL/SQL只有Oracle数据库有, mySQL现在不支持PL/SQL
    25. 序列的作用?
      Oracle使用序列来生成唯一的编号, 用来处理一个表中的自增字段.
    26. 表和视图的关系?
      视图其实就是一条查询语句, 用于显示一个或多个表或其他视图中的数据, 表就是关系型数据库中实际存储数据用的.
    27. oracle基本数据类型?
      字符串 char nchar varchar varchar2 nvarchar2
      数字 number integer
      浮点 binary_float binary_double float
      日期时间 date timestamp
      字符块 blob clob nclob bfile
    28. truncate与delete的区别?
      delete table: 删除内容, 不删除定义, 不释放空间
      truncate: 删除内容和定义,释放空间
    29. oracle获取系统时间?
      select to_char(sysdate,"yyyy-MM-dd") from dual
    30. oracle如何去重?
      使用distinct关键字

  • 相关阅读:
    HTML基础知识笔记摘要
    Shiro安全框架的说明及配置入门
    空指针问题的解决
    Log4j的配置及使用
    有关于注解的说明
    SpringMVC整合mybatis基于纯注解配置
    使用springmvc进行文件的上传和下载
    数据库设计入门及ERMaster的安装和使用
    spring mvc 接收ajax 复杂结构数据
    idea git ignore 插件
  • 原文地址:https://www.cnblogs.com/zjulanjian/p/10526856.html
Copyright © 2020-2023  润新知