Oracle简单基础面试题01

 Oracle基础面试题:
1.常见的数据库有哪些?区别是?尤其是mysql、oracle
大型数据库有:Oracle、Sybase、DB2、SQL server
小型数据库有:Access、MySQL等
Orcale :Orcale属于大型数据库系统,主要适用于大、中小型应用系统,或作为客户机/服务器系统中服务器端的数据库系统。
较安全、较贵
MySQL :由于其体积小、速度快、总体拥有成本低,开放源码
DB :最适于海量数据,性能较高适用于数据仓库和在线事物处理。
SQLServer :SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,多用户时性能不佳
access :界面友好、易学易用、开发简单、接口灵活
sybase :是一种典型的UNIX或Windows平台上客户机/服务器环境下的大型数据库系统。
2.如何优化数据库
查询操作建立合适的索引
避免使用*,尽量使用字段代替*和常量
避免第一范式、第二范式                                                                                                                             
避免使用where子句中对字段进行表达式操作和函数操作
尽可能使用变长字段
避免使用游标、因为游标效率较差
尽量避免大事务操作,提高系统并发能力
3.数据库对象有哪些(模式)
表、视图、索引、序列、存储过程、触发器
4.char/varchar/varchar2的区别
char :长度固定、区分中英文、中文占2个字节、英文占一个字节、适用于长度比较固定的,一般不含中文的情况、最大长度为2K字节
varchar :长度不固定、区分中英文、最大长度为4K字节
varchar2 :基本和varchar一样、不同在于,varchar2用null代替varchar的空字符串
varchar和varchar2适合用于长度不固定的,一般不含中文的情况
nvarchar和nvarchar2是长度不固定的,不区分中英文,其长度定义的是字符数
nvarchar/nvarchar2适用于存放中文
5.to_date、to_char、to_number
to_date :将字符串按照指定的格式转换为日期数据
to_char :将日期数据转换为字符串数据
to_number :将字符转换为数字
6.nvl/trunc/round/initcap/lower/upper/trim/substr/length
nvl :空值处理
trunc :截取
round :四舍五入
initcap :将参数字符串的每个单词的第一个字母转换为大写,其余为小写
lower :转为大写
upper :转为小写
trim :删除指定的字符串
substr :返回字符串的一部分字符
substrb :返回字符串的一部分字节
length :求长度   返回以字符为长度单位
lengthb :求长度   返回以字节为长度单位
7.decode
相当于if ...    
用法:decode(判断条件,匹配1,值1,匹配2,值2,...)
8.数据库中去重关键字
distinct
9.where/having的区别

having :必须用于有group by;先分组,再扫描表;条件中可以用聚合函数

where :可以单独使用;先扫描表,再分组;条件中不可以使用聚合函数

10.聚合函数有哪些?
count、avg、sum、max、min
11.排序的关键字,升序,降序,分别是什么,默认是什么?
order by 
升序:asc
降序:desc
默认:asc
12.数据库的语言分类?
分为五类:
数据定义语言(DDL)  :CREATE、DROP、ALTER等语句。
数据操作语言(DML)  :INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
数据查询语言(DQL)  :SELECT语句。(一般不会单独归于一类,因为只有一个语句)。
数据控制语言(DCL)  :GRANT、REVOKE等语句。
事务控制语句(TCL)  :COMMIT、ROLLBACK等语句。
分为三类:
DDL  :CREATE、ALTER、DROP、TRUNCATE、COMMENT、GRANT、REVOKE 
DML  :SELECT、INSERT、UPDATE、DELETE、CALL(PL/SQL or Java subprogram)、EXPLAIN PLAN(explain access path to data)、LOCK TABLE(control concurrency)
DCL  :COMMIT 、SAVEPOINT、ROLLBACK、SET TRANSACTION 
13.数据库中删除操作有哪些?区别是?
DELETE :DML、删除数据,不腾出表空间的空间、可以在不删除表的情况下删除所有的行、Oracle数据库不要求必须使用FROM关键字

TRUNCATE :DDL、删除表中所有行的数据,但是会保留表的结构、不能rollback、速度快、删的数据不能恢复、只能以表或簇为操作对象,而不能操作视图、同义词等模式对象、释放表所占用的磁盘空间、不会触发表的删除触发器

语法格式:TRUNCATE TABLE [schema.]table_name;

DROP :DDL、删除数据和表、使用DROP TABLE语句删除表时,表不会被立即删除,Oracle数据库将表进行了重命名并放入回收站中,这样还可以通过闪回操作复删除的表。

14.关联查询与子查询的区别?

子查询就是查询中又嵌套的查询

子查询是指子查询返回的结果集是 N 行 N 列的一个表数据。

关联子查询会引用外部查询中的一列或多列,这种子查询之所以被称为关联子查询,是因为他的确与外部语句相关。

关联子查询 :exists 、not exists

exists 与 in 的比较 :

in操作符实现指定匹配查询

exists操作符只是检查行是否存在,针对行的存在性

在使用not exists 和 not in 时,如果一个值列表中包含有空值,not exists 返回true ,而 not in 返回false

15.内连接,左外连接,全外连接的结果集分别是什么?

内连接  :   join ...on       表1 join 表2  on 条件

内连接结果集是可以在两张表中查询到匹配数据的数据记录

左外连接  :  表1 left join 表2 on 条件   

左外连接结果集:驱动表的所有记录与其在匹配表中相匹配的数据===>驱动表的数据一个都不能少

全外连接  :   表1 full join 表2 on 条件

全外连接是将两个表的所有记录都查询出来

全外连接的结果集=内连接的结果集+驱动表在匹配表中与之匹配不上的记录和空值+匹配表中在驱动表中与之匹配不上的记录和空值

驱动表与匹配表可以互换

16.驱动表(主表)、匹配表(从表)?

驱动表与匹配表  :  表1 join 表2  on 条件

a.表1是驱动表(主表),表2是匹配表(从表)

b.等值连接下,驱动表与匹配表是可以互换位置的,不影响结果

c.执行方式:遍历驱动表,在匹配表中找到与驱动表相匹配的数据

17.并集、差集、交集的关键字

并集  :union/union all

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值