一、oracle和mysql的区别:
1.前者是一个对象关系数据库管理系统,收费的数据库系统。后者是一个关系数据库管理系统,是一个开源的数据库系统。
2.数据库安全的方面,mysql使用3个参数验证用户,即用户名密码位置。oracle使用了许多安全功能。
3.二者语法上有区别。有一些保留字和数据类型有所区别,常用的语法是相通的。
4、存储上的区别:与Oracle相比,MySQL没有表空间,角色管理,快照,同义词和包以及自动存储管理。
为什么要写这个呢,面试的时候基本要熟悉多种数据库,我基本就熟悉这两个,用的多的是mysql,所以说面试官肯定会问一下这两数据库的区别,这个答案也不是很全面,我只是挑了重点的写了。

二、什么是存储过程,优缺点?
存储过程是指编译之后可以以一种可执行的形式永久地存储在数据库中的SQL语句。
它的优点有:
(1)提高运行速度
(2)模块化程序设计
(3)减少网络通信量
(4)保证系统的安全性
缺点:
如果需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新调用,等等,这时候估计会比较繁琐了
我感觉这个被问到挺多的,之前培训出来那一段找工作的时候,好多同学被问到,所以拿出来总结一下

三、drop、delete与truncate分别在什么场景之下使用
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate
这个我感觉实际工作中也用的上,但是尽量少用删除语句哦

四、索引是什么?有什么作用以及优缺点?
(1)是一种快速查询表中内容的机制,类似于新华字典的目录
(2)运用在表中某个些字段上,但存储时,独立于表之外
索引加快数据库的检索速度
索引降低了插入、删除、修改等维护任务的速度
唯一索引可以确保每一行数据的唯一性
索引需要占物理和数据空间
这个被问的也挺多的

五、什么是事物
一个Session中所进行所有的操作,要么同时成功,要么同时失败
Session是指一个终端用户与交互系统进行通信的时间间隔
以及其间的一些操作
这个是我总结的,第一次被问的时候有点懵

六、数据库的乐观锁和悲观锁是什么?
乐观锁和悲观锁是并发控制主要采用的技术手段。
深入了解的话还是有挺多远离的,上面答案只是说个大概

七、主键、外键分别是什么?
主键(主码):数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。
外键:在一个表中存在的另一个表的主键称此表的外键。
这个是很基础的,被问也挺多

八、SQL 约束有哪几种?
NOT NULL: 用于控制字段的内容一定不能为空(NULL)。
UNIQUE: 控件字段内容不能重复,一个表允许有多个 Unique 约束。
PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。
FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。
基础

九、varchar和char的区别
Char是一种固定长度的类型,varchar是一种可变长度的类型
基础

十、数据库运行于哪种状态下可以防止数据的丢失?
archivelog mode(归档模式)
这个我之前没遇到过,所以罗列出来

十一、数据库优化
1.sql语句优化
2.结构优化:
范式优化,消除冗余
拆分表
3.服务器硬件优化
这个是被问最多的,这3个方面展开来讲的话还能扩充出来很多,这里就简单的罗列一下,主要太多也记不住。