Oracle数据库面试题总结

时间:2024-10-29 13:18:56

 

1、SQL语句分类

DQL(数据查询语言)select

DML(数据操作语言)insert、delete、update

DDL(数据定义语言)create、drop、alter

DCL(数据控制语言)grant:把权限授予用户、revoke:把权限从用户收回

TPL(TCL,事务控制语言):commit、rollback

 

2、Oracle是怎样分页的

Oracle用rownum进行分页

分页语句的步骤:

a.最内层sql,查询要分页的所有数据

b.第二层sql,通过rownum伪列确定显示数据的上限,并且给查询的数据添加rownum伪列的值

c.最外层sql,设置显示数据的下限

select*from

(select a.*,rownum r from

(select*from表名 where条件 orderby) a

whererownum<=页数*条数) b where r>(页数-1)*条数

 

3、truncate和delete区别

1)Truncate和delete都可以将数据实体删掉,truncate操作不记录到rollback日志,同时数据不能恢复

2)Truncate是数据定义语言(DDL),delete是数据操作语言(DML)

3)Truncate不能对视图进行操作,delete操作不会腾出表空间的内存

 

4、说说Oracle中经常使用到的函数

length长度、lower小写、upper大写、to_date转化日期、to_char转化字符、to_number转化数字Ltrim去左边空格、rtrim去右边空格、substr截取字符串、add_month增加或减掉月份、

 

5、主键有几种?

复合型、整数型、字符型

 

6、怎样创建一个索引,索引使用的原则,有什么优缺点

create index 索引名 on 表名(列名)

原则:

建议索引列建立not null约束

经常与其他表进行连接的表,在连接列上建立索引

优缺点:

创建索引能大大加快检索速度,加强表与表的连接,但是创建索引很占用空间

 

7、使用oracle伪列删除表中的重复数据中的一条

delete fromtable t where !=(select max() from table t1 =)

 

8、如何只显示重复数据

select * fromtable group by id having count(*)>1

 

9、什么是数据库的映射

就是将数据库中表与字段对应到模型层类名与属性的过程

 

10、如何设计数据库

首先分析项目,看看项目中有多少实体(矩形),为每个实体添加属性(椭圆),明确实体之间的关系(菱形),绘制E-R图,将E-R图转换成表格

 

11、如何实现数据库的优化

1)调整数据库结构的设计:需要考虑是否使用分区功能、是否建立索引等

2)调整数据库的SQL语句

3)调整服务器的内存分配

4)调整硬盘I/O

5)调整操作系统参数

 

12、关系型数据库的关系操作有哪些?

选择(查询某些行)、投影(查询某些列)、链接(把多张表连接获取数据)、增加、删除、修改      

 

13、你知道哪些菲关系型数据库,与关系型数据库的区别是?

 

14、SQL语句与SQL*PLUS命令的区别

1)SQL是关系型数据库的标准操作语言,而SQL*PLUS是一个客户端工具,除了执行标准的SQL外,还可以执行工具本身的一些命令。

2)SQL语句不可以缩写,而SQL*PLUS命令可以缩写

 

15、oracle数据库中如何显示表的结构

新建命令窗口,输入desc 表名

 

16、oracle中数据库对象的命名规则

1)必须由字母开始,长度在1-30个字符之间

2)包含字母、数字、_、$、#

3)同一个Oracle服务器所拥有的对象名不能重复

4)名字不能为Oracle 的保留字

5)大小写不敏感

 

17、数据库的三大范式是什么?

1)第一范式:原子件,要求每一列的值不能再拆分了

2)第二范式:一张表只描述一个实体(若列中有冗余数据,则不满足)

3)第三范式:所有列与主键直接相关

 

18、事务的特性(ACID)是指什么?

1)原子性(Atomic):事务中的各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败

2)一致性(Consistent):事务结束后系统状态是一样的

3)隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态

4)持久性(Durable):事务完成后,即使发生灾难性的故障,通过日志和同步备份可以在故障发生后重建数据

 

19、MySQL数据库与Oracle数据库有什么区别

1)应用方面:MySQL是中小型应用的数据库,一般用于个人项目或中小型网站及论坛。Oracle属于大型数据库,一般在具有相当规模的企业应用。

2)自动增长的数据类型方面:MySQL有自动增长的数据类型。Oracle没有自动增长的数据类型,需要建立一个自增序列

3)group by用法:MySQL中group by在select语句中可以随意使用,但是在Oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的或者是group by子句中的列,否则报错

4)引号方面:MySQL中可以用单引号、双引号包起字符串,Oracle中只可以用单引号包起字符串