数据库常见面试题

2022-02-24 09:51发布

1)表的操作

      表的创建:create table 表名 (列名1 类型 约束, 列名2 类型 约束...)

      表的删除:drop table 表名

      表的更改:alter table 表名 add|drop 列名|约束名

      插入记录:insert into 表名... value...

      更新记录:update 表名 set 列名=值 where 条件

      删除记录:delete from 表名 where 条件

      查询记录:select 列名... from 表名 where 条件


(2)什么是数据库约束,常见的约束有哪几种?

       约束可以分为:主键约束primary key、

                              外键约束foreign key、

                              唯一约束unique、

                              检查约束check、

                              空值约束not null、

                              默认值约束default


(3)主键和外键的区别?

      主键在本表中是唯一的,不可为空的,外键可以重复可以为空。

      外键和另一张表的主键关联,不能创建对应表中不存在的外键。


(4)什么是索引?优缺点?

      对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

      优缺点:优点:利用索引可以加速对数据的检索,索引是可以唯一的,创建索引允许指定单个列或者多个列

                    缺点:减慢了数据录入速度,同时也增加了数据库的尺寸大小

(5)order by和group by的区别?

      order by为排序查询、

      ASC升序  DESC降序

     group by为分组查询、

     having只能用于group by子句、作用于组内、

     having条件子句的查询语句需要使用聚合函数


(6)sql的表连接方式有哪些?

       内连接、外连接、交叉连接

       内连接:inner join in ,两表都满足的组合

       外连接:分为左连接、右连接、全连接

       左连接  A left(outer) join B     

                   以A表为基础,A表的全部数据,B表有的组合,没有的为null

       右连接  A right(outer) join B   

                   以B表为基础,B表的全部数据,A表有的组合,没有的为null

      全连接  A full(outer) join  

                  两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有,A表没有的显示为null

       交叉连接:cross join,即使笛卡尔乘积


(7)在数据库中查询语句速度很慢,如何优化?

      ① 建立索引

      ② 减少表之间的关联

      ③ 优化sql语句,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的排在前面

      ④ 简化查询字段,没用的字段不要

      ⑤ 尽量用PreparedStatement来查询,不要用Statement


(8)什么是游标?

      游标是一种能从包括多条数据记录的结果中每次提取一条记录进行处理的机制。

      游标的使用步骤:① 定义游标  declare cursor 游标名称 for select 查询语句[for {readonly|update}]

                                   ② 打开游标  open cursor

                                   ③ 从游标中操作数据  fetch...  current of cursor

                                   ④ 关闭游标  close cursor


(9)如何在删除主表记录时,一并删除从表相关联的记录?

      如果两张表存在主外键关系,那么在删除主键表的记录时,如果从表有相关联的记录那么将导致删除失败

      在定义外键约束时,可以同时指定3种删除策略:一是将从表记录一并删除(级联删除);

                                                                               二是将从表记录外键字段设置为NULL;


(10)列举几种常用的聚合函数?

      sum函数   avg函数  max函数    min函数   count函数


(11)oracle基本数据类型?

      ① 字符串类型  char  、nchar 、 varchar 、  vachar2

      ② 数字类型  number 、 integer