【面试收货】数据库部分

来源:互联网 发布:mac qq邮箱 pop服务器 编辑:程序博客网 时间:2024/05/02 19:25

1.关于Oracle中left join 俩种写法

select * from a,b where a.id=b.id(+);--该写法的执行效率高
select * from a left join b on a.id=b.id;

不熟悉Oracle,所以本问题有待实验。


2.数据库范式

参考博客:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html
第一范式:具有原子性,所有字段值都是不可分解的原子值。

      如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。


第二范式:确保表中的每列都和主键相关在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

下图不符合第二范式

下图满足第二范式


第三范式:确保每列都和主键列直接相关,而不是间接相关。


3.解释下DML与DDL

参考博客:http://blog.csdn.net/tomatofly/article/details/5949070

主要的区别是DML是显示提交,能回滚. DDL是隐式提交,不能回滚.


1. 数据查询语言DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>

2 .数据操纵语言DML
数据操纵语言DML主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE

3. 数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、
索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
表 视图 索引 同义词 簇

DDL操作是隐性提交的!不能rollback 


0 0