由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 新手如何快速学习数据库
相关主题
数据库问题求解DBA职业要求
数据库的资格认证考试很认真地问一下数据库的问题,求助了
新手请教,怎么学习数据库问一个转行到数据库方面的事,急求大家建议!
数据库问题一问谁能帮忙推荐Austin的数据库方面的工作
zz: Oracle推出免费数据库产品有没有免费的数据库啊
怎么学database ?新手学数据库:到底是从Oracle 还是 SQL server 学起,还是
问个基础的理论问题----数据库的基本差异CINAOUG/CINASSUG讲座-Oracle数据库架构及备份
湾区哪些学校有开设专门数据库的课程CS新手请问该学那个数据库?
相关话题的讨论汇总
话题: join话题: 客户话题: excel话题: oracle话题: 数据库
进入Database版参与讨论
1 (共1页)
z******4
发帖数: 4716
1
学习数据库最大的难度是太多概念,太多名词,新手很容易迷失。而且到处都是学习资
料,那些事有必要记住,那些是要参考,对新手来说,难以判断。
今天我就来,用魔派速成大法学习数据库
好,对于大多数新人来说,数据库是什么,可能都没有概念,但是excel不熟悉的,太
少了吧,不熟悉excel的,赶紧先补课。
我就用Excel来比喻,如何学习数据库
一个Excel里面,会有几个sheet,每一个sheet里面,有行有列,这些是基本的,大家
都懂吧
现在我要记录一下销售信息
新建一个Excel文件,sheet1取名叫客户,格式如下
姓名 年龄 地址 联系电话
客户1
客户2
在另外一个sheet里面,记录销售信息
好了,这东西太简单,没啥好讲的,大家记住就好了,下面就把excel的信息 映射成数
据库名词
行 - Row
列 - Column
sheet - table
excel文件 - tablespace
到这里新手头脑一定很清楚,这没什么,对吧,接下来用一些场景来进一步阐述数据库
结构,这些名词是一定要理解记忆的
1. 数据字典
假如,我有很多个sheet,记录了很多信息,例如 北京客户表,上海客户表,广州客户
表,全国地市客户表
拿我的问题来了,我要看北京客户表,你不可能让我把所有的sheet名字一一看过吧,
我一定要有个索引一样的东西,告诉我,这个excel文件里,到底有没有北京客户表,
有,我才接着找,对吧
好,这就是数据字典的来由,那么数据字典里面都包含什么哪,无所不包,你脑子里有
这个印象就好了,这事你数据库的基础
你要记住的就是几个user开头的数据字典表
User_Objects (为啥叫Object,你别管)
user_tables
记住,不要深究,先明白概念,这东西很重要,敲门砖,想不通了,就想像,你excel
文件中专门有一个sheet记录了每个sheet都有什么信息,就理解了
2.数据查询
好了,我知道数据在哪里了,下一步,我就看数据了吧
新手在excel里面怎么看,选哪个sheet,找标题对吧
对应在Oracle里面
1. 我先要知道表到底在不在
Select * from user_tables where table_name='北京客户表'
2. 去看表的结构
Select * from '北京客户表'
3.里面有一大堆相信,好了,我就要看海淀区的客户
Excel里面怎么做,找到区域的列,用过滤对吧,Oracle哪
Select * from '北京客户表' where 区域='海淀'
好了,你明白概念就行,SQL不熟悉,哪只能多练,多多运用Google
接下来,我要看客户1的购买金额,excel用什么,vlookup,Oracle用什么,join
你就简单理解, join就是把信息连接在一起
Select 客户.*,销售.* from
客户表 inner join 销售表
on 客户表.客户id=销售表.客户id (这个on就代表 用什么把信息联系在一起)
where 客户表.客户id=’客户1‘
好了,到此为止,数据库学完了,简单吧,新手学习到这里,先要停下来,你要先熟悉
这部分,才能接下去学习
什么叫熟悉,就是SQL会自己写,能运行,能看到数据,Groupby,where, join要会用
你会在这期间,遇到,SQL写错,不熟悉字段名,不熟悉语法,没关系,这阶段就是要
熟悉这些,才能进一步深入,而且要开始熟悉oracle的概念
但是,你先安装一个window Oracle,有人问,用SQL Server好不好,我告诉你,不好
,两者的差别是资深人士才能分辨的清楚的,但在界面,对于新手都差不多,但是学习
资料上,Oracle还是多,就业前景也好
z******4
发帖数: 4716
2
数据库结构
加入同学们,上面都熟悉了,简单SQL会写了,那么下面要稍微深入数据库学习了,这
段,我们来学习数据库结构,记住,同学们都要熟悉背住这些名词,面试必备啊,不会
的话,肯定完蛋
前面,我们用Excel创建了一个简单初级数据库,哪实际的数据库哪,当然不会那么简单
我们来看这个图
一步步来,先看最底下一层
Data files
好了,我前面指出一个excel文件就像一个tablespace,什么是tablespace哪,就是这
些表都在这个tablespace里面
哪我又十几个excel文件,是不是会有十几个tablespace,是的,一般一个tablespace
会建在一个datafile里面
,哪一般oracle数据库在创建时会有几个data file哪
system
user
temp
redo
好了,你发现,你的头脑开始糊涂了吧,这些datafile 妈的和excel到底有什么关系
举例,user data file 里面可以创建user1 tablespace,user2 tablespace,每个
tablespace就相当于一个excel文件
简化的意思,这些data file都包含不同的信息
system 包含 system tablespace, 里面有数据字典
user 包含 user tablespace, 里面有用户信息
temp 包含 temp tablespace, 里面有临时数据
下面开始介绍特殊的文件
redo
这个比较麻烦,你也别搞他了,就记住一件事情,redo相当于小贴纸,你有些信息来不
及记到excel里面了,你先记到小纸条上
以后你深入了再搞
log
这个干嘛那,相当于日志,某年某月我干了什么,例如,今天我创建了一个表,表里有
什么,昨天我把什么删了
Control
你就把这个想象成参数,例如,里面写了,我创建个新的data file,默认是10m等等
好了同学们,数据文件学完了,理解了嘛,没理解加强理解
请参考此帖,熟悉相应的数据字典
http://www.cnblogs.com/damonlan/archive/2012/07/27/2604132.html
你可以试着运行,先熟悉熟悉
z******4
发帖数: 4716
3
霸占
z******4
发帖数: 4716
4
霸占
z******4
发帖数: 4716
5
霸占
z******4
发帖数: 4716
6
霸占
h********o
发帖数: 2316
7
原创?
太感谢了,这个东西对于我这种初学者很好
z******4
发帖数: 4716
8
是,无聊了

此章写Join
Oracle有四种join方式,妈的,真麻烦,真难记,怎么办,我告诉你,超级简单,大家
都学过数学的集合吧
交集,并集,看下面的图
http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128777027
inner join
就是图中AB部分
left join (A left join B)
就是 A和AB部分
full join (A full join B)
就是 A和B 全部
结束,简单吧
那么Oracle在实际join过程中,数据是怎么match的哪,且听下回分解
==========================================================
下面讲join的具体方式
例如,我有个电信话单记录表,还有个产品id和描述表,现在我要拿到产品的说明,按
产品算消费金额,例如168套餐,这个月有多少收入
你用头脑想,你怎么做,肯定是拿一行,按产品id去产品代码表找描述,对吧
Oracle不是神,Oracle也只能这么做
问题来了,加入,北京移动一天话单1000万吧,算少些,产品就算有100个吧,完蛋了
一个月的收入,1000万*30*100,数据库崩溃了
1. Nest loop join
假如我第一行产品id 是 product1,那么如果我手工的话,假设产品描述再一个柜子里
,如果柜子上按产品id排序了,那就好了,product1直接找product1的抽屉,拿出产品
说明书,有了
我的join次数就变成
1000万*30*1, 对吧,每个产品只想要一个
那,就是Oracle Nest Loop join,就是在外表上有索引,并且主表和外表都有相同的
查找字段
2. Sort merge join
可是Nest Loop Join有条件限制啊,我不是每个join都正好有索引啊,哪咋办
好,我头脑一激灵,没必要从头扫到尾啊,如果排序后,就可以用2分法,更快了
例如product51,肯定再product50之后,那就不用扫描前面的了
这个的问题,是先要排序
3 hash join
前面提到要排序,问题来了
如果是手机号码表,就算北京移动2000万手机号码
2000万*1000万*30
Oracle是上帝也搞不定啊,怎么办,先排序,要死人啊,3亿记录排个序,再和2千万
join,大家可以休息了
于是,Oracle想出了另一种join 方式hash join
就是把要join的字段,生成hash值 ,然后按hash值 join
例如product1 的hash值 AABBDDXXXUUU1
这里hash value是否排序,据我读到的文档,没有提到排序 (排序是个很浩的工作,你
自己用excel手工拍一下,就知道了),用的是hash 矩阵,效率
比sort merge join高很多,具体原理不好意思,没学会,你知道就完了
4.produt join
最后实在没招了,怎么办,硬着头皮上把,就叫product join
=================================================================
新手说,这些有必要知道吗,你知道个大概就完了
记住,要熟悉名词,妈的,上次有人面试,我正好忘了nest loop join,被人拒了,很
伤心啊
那实际过程中,怎么join的
码表一般用nest loop join, 可是码表不一定有索引啊,Oracle很聪明,它实际上是偷
偷给你建了索引,你不知道罢了
那么还有一些技巧哪,就是,你指定join方式一定用nest loop join
剩下的嘛,大多数都是sort merge join, 从oracle 11开始oracle推荐用hash join
好了,join讲完了,第二部分学会四种join的名词就完了,就我所知,薪水6k以下的
developer没几个搞得明白的,新手更没必要了

【在 h********o 的大作中提到】
: 原创?
: 太感谢了,这个东西对于我这种初学者很好

l**********g
发帖数: 503
9
漏了right join?
很不错,请继续。

【在 z******4 的大作中提到】
: 是,无聊了
:
: 此章写Join
: Oracle有四种join方式,妈的,真麻烦,真难记,怎么办,我告诉你,超级简单,大家
: 都学过数学的集合吧
: 交集,并集,看下面的图
: http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128777027
: inner join
: 就是图中AB部分
: left join (A left join B)

B*****g
发帖数: 34098
10
顶原创

【在 z******4 的大作中提到】
: 是,无聊了
:
: 此章写Join
: Oracle有四种join方式,妈的,真麻烦,真难记,怎么办,我告诉你,超级简单,大家
: 都学过数学的集合吧
: 交集,并集,看下面的图
: http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128777027
: inner join
: 就是图中AB部分
: left join (A left join B)

相关主题
怎么学database ?DBA职业要求
问个基础的理论问题----数据库的基本差异很认真地问一下数据库的问题,求助了
湾区哪些学校有开设专门数据库的课程问一个转行到数据库方面的事,急求大家建议!
进入Database版参与讨论
e*******l
发帖数: 165
11
yes, very good summary,
Ding
d****n
发帖数: 12461
12
我能碰么?
有人说,数据库不就那啥存数据的地方嘛,你能把我这个xml整个存在数据库里面以后
我直接查询就能生成网页吗?
也有人说,数据库方便啊,几百万数字塞进去,随便几个函数就做出统计和排序可以生
成漂亮的报表了。
这样类似的想法和意识10年前可以有,草根网站可以有,新手可以有。但是只要还是停
留在这样的阶段,就是落后别人10年。

【在 z******4 的大作中提到】
: 学习数据库最大的难度是太多概念,太多名词,新手很容易迷失。而且到处都是学习资
: 料,那些事有必要记住,那些是要参考,对新手来说,难以判断。
: 今天我就来,用魔派速成大法学习数据库
: 好,对于大多数新人来说,数据库是什么,可能都没有概念,但是excel不熟悉的,太
: 少了吧,不熟悉excel的,赶紧先补课。
: 我就用Excel来比喻,如何学习数据库
: 一个Excel里面,会有几个sheet,每一个sheet里面,有行有列,这些是基本的,大家
: 都懂吧
: 现在我要记录一下销售信息
: 新建一个Excel文件,sheet1取名叫客户,格式如下

z******4
发帖数: 4716
13
大数据这块我不熟

【在 d****n 的大作中提到】
: 我能碰么?
: 有人说,数据库不就那啥存数据的地方嘛,你能把我这个xml整个存在数据库里面以后
: 我直接查询就能生成网页吗?
: 也有人说,数据库方便啊,几百万数字塞进去,随便几个函数就做出统计和排序可以生
: 成漂亮的报表了。
: 这样类似的想法和意识10年前可以有,草根网站可以有,新手可以有。但是只要还是停
: 留在这样的阶段,就是落后别人10年。

d*****n
发帖数: 3084
14
其实我们学很多就是弄明白名词,每个行业都有自己的语言。
一旦熟悉了语言,绝大多数的领域都是符合我们的生活常识以及中学教育的基本科学逻
辑常识的。在工业界,都这样。工业界还有标准,企业标准,实际的工作远不是那么深
奥。
数据库的根本目的是用户服务的,这里面的具体细节和技巧只有做苦工的才需要去知道
。Excel所以成功就是我们很容易理解它的功能,作为用户我根本不需要考虑软件本身
,可以专注我的工作。我买这个软件的目的就是因为它能帮助我的工作。
我相信,数据库这东西会越来越简单,最后除了少数数据库公司的维护开发人员,一般
性的数据库管理工作会变成很低端的,越来越多的专业性服务公司就像水管工一样招之
即来,大大降低对从业人员的数量需求。
不要神话数据库。没有用户你连饭都吃不上。

【在 d****n 的大作中提到】
: 我能碰么?
: 有人说,数据库不就那啥存数据的地方嘛,你能把我这个xml整个存在数据库里面以后
: 我直接查询就能生成网页吗?
: 也有人说,数据库方便啊,几百万数字塞进去,随便几个函数就做出统计和排序可以生
: 成漂亮的报表了。
: 这样类似的想法和意识10年前可以有,草根网站可以有,新手可以有。但是只要还是停
: 留在这样的阶段,就是落后别人10年。

c*********e
发帖数: 16335
15
数据库的integration,表格里,更新数据是非常重要的。我的有些邮件,有的公司就会
寄给我的旧地址,尽管我在它公司网站上更新了我的地址。

【在 z******4 的大作中提到】
: 学习数据库最大的难度是太多概念,太多名词,新手很容易迷失。而且到处都是学习资
: 料,那些事有必要记住,那些是要参考,对新手来说,难以判断。
: 今天我就来,用魔派速成大法学习数据库
: 好,对于大多数新人来说,数据库是什么,可能都没有概念,但是excel不熟悉的,太
: 少了吧,不熟悉excel的,赶紧先补课。
: 我就用Excel来比喻,如何学习数据库
: 一个Excel里面,会有几个sheet,每一个sheet里面,有行有列,这些是基本的,大家
: 都懂吧
: 现在我要记录一下销售信息
: 新建一个Excel文件,sheet1取名叫客户,格式如下

p********g
发帖数: 27
16
顶。
写得太好了!
c*********e
发帖数: 16335
17
这个图非常的重要,做dba,对这个图要烂熟在心。还有启动,关闭database的时候的几
种方法的区别,比如mounting干什么用的,instance是什么。

简单

【在 z******4 的大作中提到】
: 数据库结构
: 加入同学们,上面都熟悉了,简单SQL会写了,那么下面要稍微深入数据库学习了,这
: 段,我们来学习数据库结构,记住,同学们都要熟悉背住这些名词,面试必备啊,不会
: 的话,肯定完蛋
: 前面,我们用Excel创建了一个简单初级数据库,哪实际的数据库哪,当然不会那么简单
: 我们来看这个图
: 一步步来,先看最底下一层
: Data files
: 好了,我前面指出一个excel文件就像一个tablespace,什么是tablespace哪,就是这
: 些表都在这个tablespace里面

j******e
发帖数: 696
18
超赞!
C*******e
发帖数: 420
19
Thanks a lot for sharing!
1 (共1页)
进入Database版参与讨论
相关主题
CS新手请问该学那个数据库?zz: Oracle推出免费数据库产品
data storage developer的职业发展前景如何?怎么学database ?
新手请教:无数据库,有数据,需要SQL 做表join问个基础的理论问题----数据库的基本差异
sql question湾区哪些学校有开设专门数据库的课程
数据库问题求解DBA职业要求
数据库的资格认证考试很认真地问一下数据库的问题,求助了
新手请教,怎么学习数据库问一个转行到数据库方面的事,急求大家建议!
数据库问题一问谁能帮忙推荐Austin的数据库方面的工作
相关话题的讨论汇总
话题: join话题: 客户话题: excel话题: oracle话题: 数据库