`
demojava
  • 浏览: 540512 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《Oracle Database 11g & MySQL 5.6开发手册 》 试读心得

阅读更多

《Oracle_Database_11g___MySQL_5.6开发手册》 试读心得

瞎掰:

作为web开发者,是需要和数据库打交道的。面试少不了会问数据库的。
尤其最怕面试官刨根问底的问:你都用过那些数据库?oracle,mysql,sqlserver 能不能介绍其中一些差异,和相关函数。。顿时能把你整懵了。。里面函数一大把。皱眉都下干饭了(忘记了) 更有换工作每次笔试少不了的 sql,一直用ORM的我,sql 很多都下干饭了(忘记了).有一次笔试被数据库坑了一次,决定好好恶补下sql。
看书名 oracle 11g mysql 大概讲2种数据库的一些知识点吧。开始 试读...

 

题外话:
首先先了解下:mysql 的2个版本:
企业版:可靠,安全,有官方技术支持的
社区版: 没有企业版安全。出现任何问题,Mysql官方概不负责。

 

前三章:

打开pdf目录页,啊你将看到15章知识点,15章都看完,我相信sql应该不错了吧。
跳过前3章,(开篇第一章讲了TCP/IP协议一下知识,作为知识积累用。貌似前3章没什么关于sql的知识点样的,之前会sql的可以跳过了,不会的应该照着做一边了,比如新手)

 

第3 章 安 全 模 型
开始就把我整懵了
MySQL 并不支持例如传统的Oracle 数据库这样的虚拟专用数据库(Virtual Private Database ,VPD) 这个专业术语没接触过...

注释了一个经验:
Oracle Database 11g 可以给数据文件加密。这样可以避免其他人通过读取数据文件中的数据从而突破操作系统的安全屏障。目前的MySQL 5.5 尚不具备如此强大的安全功能。这个功能就好了。一般都在写入和读取有自己的规则实现比如:用户名密码加密。开篇都介绍了 oracle 和mysql 的细微的差异
一张图,清晰的展示了 php多层网站架构

数据控制语言DCL 这个可是大的知识点,面试很有用处的用列表的形式说oracle 和mysql的 DCL 语句的差异这些都不是一般网上能整理全的。。

小知识点:
Mysql 支持通配符的形式授权用户:
GRANT ALL ON lib.* TO 'student'@'%';
这个在其他数据库 中貌似没有这个功能样的。
哎呦,没看到后面还有15个习题的。。我看过的书很少有这个。估计这是本书的一大亮点。

 

第7 章 修改用户和结构

这一章是重点了。。尤其是索引,在读本书之前,我就知道什么聚集索引非聚集索引,就知道索引能提高查询速度,就不知道什么情况下创建索引,平常都是添加主键自动生成的唯一索引,本章索引是我要读重点。不知能不能看到。

开篇提到 创建用户 平常很少用,但在一些电信bi,银行bi系统有专门的用户。。公司有专门的DBA 开章就详细介绍了 用户口令丢失情况,如何修改口令。


知识点:

1.用sql命令查询出约束和列(一般都点开表一个个看,没想到还有命令的,学习了)
2.UPPER() 函数将文字都改成大写。
3.用一个列表的形式介绍; 约束规范代码(C check约束,P PRIMARY 主键约束,R FOREIGN 外键约束 V是 唯一约束)看完发现V是唯一,平常都用U来表示唯一约束


开章就来了一大片的 alter table 语句规范。哎呦幸好下面有一个个解说的.看了一下里面有很多关键字没见过的比如:MODIFY SORT

下面知识点多了

知识点:

1.Oracle 添加列 alter table tablename add(column_name type)可以添加多个的。书中又提到了一种添加列的写法:
一般都:
alter   table   Tablename   add(column1   varchar2(20),column2   number(7,2)...)
第二种:需要注意到是 两个ADD 子句之间并没有逗
ALTER TABLE rental_item
 ADD (rental_item_price NUMBER)
 ADD (rental_item_type NUMBER);
又介绍了添加主键,和约束的语法。并举例说明。

2.ALTER TABLE (表名) RENAME COLUMN (当前列名) TO (新列名);
3.MODIFY 修改列名的时候  如果存在数据则会失败
4. MODIFY 的时候可以添加 约束的(这个学习了,平常都没注意这些的)
ALTER TABLE calendar
 MODIFY (start_date DATE CONSTRAINT nn_calendar_1 NOT NULL);
上面的例子 修改列的类型,并添加了not null 约束并起了名字
5.oracle 和mysql 在删除当一列有多列的UNIQUE 约束引用的时候会有差别的(这个平常哪有注意的,可见本书介绍的细了)
看到这,下面有介绍了 Mysql 添加列和删除列的差异(哎呦,这个直接把oracle 和mysql 做了一个差异对比。。)
6.在添加列的过程中 Mysql 和Oracle 还是有差异的你要在ADD 子句之间
添加逗号,而且可以在已经存在行的列上分配NOT NULL 约束。MySQL 数据库支持 PRIMARY KEY、NOT NULL、UNIQUE 和FOREIGN KEY 约束,但不支持CHECK 约束。(这些细节问题,平常不会留意的)
7. (笔者认为这个change 没用过) mysql change 用来修改列名
ALTER TABLE calendar
 CHANGE month_shortname short_month_name VARCHAR(3);
8.Oracle 在修改列的顺序的时候,只能删除列,在新建列,而Mysql有内置的函数。
mysql> ALTER TABLE rental_item
    MODIFY rental_item_price int unsigned AFTER item_id
    , MODIFY rental_item_type int unsigned AFTER rental_item_price;
解说下:
把列 rental_item_price修改在 item_id之后 mysql 神奇的函数
9. 这个绝对是高级部分了
抛弃MySQL 数据库的列和约束 MySQL 数据库允许你删除表中的列或者约束。在抛弃列时是没有恢复点的,因为这是一条DDL 语句,被删除的数据并不会被记录在日志中。而在另一方面,Oracle 数据库则支持闪回(flashback)技术提供了恢复点。
10。哎呦又来一个高级部分:
Oracle CASCADE CONSTRAINTS 用于删除有外键引用的表使用
drop table A cascade constraints;(其他表引用了A的主键作为外键)
话说这个 purge 我第一次见,不得不百度下
当我们drop table A时,其实只是将table A 放到了回收站中,改了个系统的名字。如果想彻底删除该表,需要 drop table A purge;
    drop table A; //将A送入回收站中
    purge table A;//将A从回收站中删除
Mysql 就不能使用 CASCADE 来确保当前表有外键引用  使用  if exists 查找  sysforeignkey 表来判断
if exists(select 1 from sys.sysforeignkey where role='FK_EMP_RELATIONS_DEPT') then
    alter table emp
       delete foreign key FK_EMP_RELATIONS_DEPT
end if
终于看到索引了。。

7.5小节详细介绍了 oracle 和mysql 的索引差异
完了看完这一小章。就发现如何禁用索引,重建,创建联合索引,修改使用已存在是索引。。完了。和我预期的不一样。比如:什么时候会用索引,那些查询需要在注意地方,比如什么查询会走索引提高效率,什么列需要重建索引
7.6 小节 介绍了 oracle 和mysql 的视图的差异。也就是 oracle 能在drop的时候用 CASCADE CONSTRAINTS 而 mysql 只能用  IF EXISTS;

12章介绍了,导入(合并导入)导出数据 Oracle 和mysql 的使用。使用csv 文件
这一章代码比较多,敲错一个就坑爹(建议新手,或不熟悉命令的直接百度个可以用的,照书做个实验,要对比这来就可以了) 希望 本书配有光盘。。

知识点:
mysql 和Oracle 都可以是用 外部csv文件导入数据 mysql 5.5可以用xml做数据源。看完12章发现 相对而言第七章还是很棒的。但对于介绍索引的地方就有点少了或许考虑到第七章前半部分占用的篇幅太多了,还是写书的人压根对这个索引都不重视。希望深入索引的朋友,建议搜下资料。

 

酷读后感:
这是一本介绍oracle 和mysql 一些语句差异的书
对有用过oracle 和mysql 的开发 深入oracle和mysql 知识梳理想到有帮助的,
新手买这本书的话 即学了oracle 有了解了mysql 当然最好是有是有用过其中之一的最好了。
这样加深知识点的理解. 初级开发用来自己充电,高级开发,那天说不定你当面试官了,可以用来坑面试的(坏笑...)吐舌头
结尾在来回顾开始场景:
面试官:你都用过那些数据库?
应聘:用过oracle,mysql,sqlserver
面试官:能不能介绍其中一些差异,和相关函数。。
应聘:*&*#^$&^&^*&(^&^%^$%#

(你就把看完本书的内容 给面试官整上几个经典的对比。。。跟你讲绝对是亮点)

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics