如何学习数据库知识

如何学习数据库知识,第1张

 要说数据库,一般以SQL Server作为入门的学科,它适合中小型项目开发,而现在比较流行于大型开发的有:\x0d\Oracle\x0d\现在具有企业大型软件的绝对占有率\x0d\DB2 在以IBM服务的公司以及单位(中国银行)\x0d\MySql 相对不是很正式的开发,使用MySql\x0d\当然还有一些:Access(桌面数据库),FoxPro(中国教育),Informix的数据库系统\x0d\刚开始入门的时候可以找点视频教程来学习,视频教程一般讲得比较好,但不要企图于通过它达到比较高的水平。然后要学会将自己所知道的去实践,多实践。当觉得实践到一定程度而没有什么冲劲了,就去学习理论,当觉得理论知识需要发挥的时候就去实践,时间的周期不一定,没有什么定论,但自己的时间安排需要定论就可以了。\x0d\我一直都认为在计算机行业要学会一门技术太简单了,但如果要把技术发挥到一定程度就有难处了,一定程度是什么意思,就是把技术如何发挥到具体的业务之中,会动脑筋去思考,而把技术作为相对次要的东西了。\x0d\数据库的DBA人员需要兼有系统分析员和运筹学的业务素质。在技术上讲,我个人认为数据库的前续学科是“数据结构”。\x0d\我现在刚学SQL Server一段时间,就自己的感想谈谈:\x0d\1数据库是非常快的数据处理程序,其内在的本质依旧是"文件"因为\x0d\Windows *** 作系统管理机制就有:磁盘、文件、目录。Linux的方式只有文件。所以数据库重本质的角度来说是一种平台软件,是将文件翻译成逻辑语言的软件,成为我们软件程序数据交换的中心,为什么那,一个很重要的原因就是“快”,还有就是“安全”、“集成”等等。因为以前的语言程序要处理数据要编写大量算法十分麻烦而且很容易出错等等。大家就想到集成了。。。。。\x0d\2其实,要谈到 *** 作数据库,简单的就太简单了,但是数据库最难的不是 *** 作,而是在数据库的设计上。一个大型程序设计者肯定是一个数据库的高手,因为大型程序要死板地去完成它是非常困难和不理智也是不安全不稳定的,我们要充分利用自己所有的能力去挖掘其数据之间的奥秘,然后体系化数据库结构,相当于在数据库中如何层次化地建立数据结构。将需求中的矛盾事物改变成可以相互融合的。\x0d\我说的数据库 *** 作简单是指一般 *** 作,如果难的 *** 作还是有点技术的,但还是难不到那里去。下面我把我的一个小数据库程序给你看看:(下面这个程序已经建立数据库library,然后用dbo用户建立了表relatBook,并将表的第一个字段设置为“主键”PK)\x0d\该程序想说的第一点是:程序按照标准用户写入法则写入。\x0d\另外就是在执行多个 *** 作的时候每一步骤的 *** 作我们都必须为其设置错误的回滚 *** 作。所以程序前两个段落都是一样的,在插入的时候故意出现异常,看第1和第3个语句是否能成功执行。\x0d\从上面看出点什么没有,你我执行了三个 *** 作,第一个 *** 作是肯定成功的,第二个是肯定失败的,第三个跟在后面,那么你想一想第一个和第三个 *** 作能插入数据库中吗?我这个程序没有什么意义,但只是未了说明问题。\x0d\答案是:不能。\x0d\为什么不能,这是SQL所支持的“事务”外完成的,这是技术问题,没有什么的,会了大家都会。为什么要这样做那,那才是要学习的前提。你想一想如果你建立了一个地区的帐物管理系统,当一个单位向另外一个单位转帐的时候,需要执行两个 *** 作就是将一边的信息刷掉,一边的信息添加上去,而当执行一半的时候出现了某种异常中断,比如高优先级的抢占,服务器重起、停电。当时你知道有多少人在访问你的服务器,那要造成多大的数据库信息丢失,甚至于导致数据库的查询的严重失败。那么我就知道需要上面知识的支持了。\x0d\3为什么说上面的东西都很简单那,因为只要你会,那就可以了,而设计方面的东西是永远不是那么简单的,永远带有创新和追求,没有最高的境界。\x0d\就一个十分常见的问题,如何在数据库中配合好人员、角色、权限、类别、级别、可 *** 作性这几者的关系,如果是没有经验的人直接上手可能会乱来(我们最早也是这样的)。有经验的人也会设计一段时间,而且随着软件复杂性的增加,其数据库的这几者之间的复杂性就越来越复杂。所以大型软件是非常难的。就一个很简单的例子,在很多的网站中,有上百的栏目信息,而每一个栏目间又保持独立。的位置和的信息都是动态更新的。某些网站的可 *** 作性都以树型结构提供,而树型结构的子树类别和和叶子都是不重复而不错误。而且其层数都是动态的。有些人给我说可以通过前台的判定语句来执行树型结构的生成,但我问了一个问题,如果是一个邮政编码系统,有几十万个邮政编码你在前台要写多少个case语句,而且每一次要遍历一次已经生成的树,还有用前台的case语句编写出来的树型结构其二级子树全部“定死”,而且树型结构的层树也被定死。这不是完全动态级别的网站。为以后对网站的维护带来麻烦。\x0d\总之,数据库是一门入门容易却达到高手很难的学科,通过不断在失败中吸取经验,才能得到一些书籍上无法学会的东西,那才是真正的高手。也就是说,学技术是很快的,要会将技术运用于实际的业务分析,才可以成为一个自我型的DBA,而不是一个简单的程序员。

首先概念要先了解:

1、数据库的基本概念,主要是特点

2、如何连接数据库

3、如何创建数据库,用户,角色,权限分配

4、表,查询,视图,存储过程

5、如何备份和恢复数据

6、如何优化数据库

其次就软件选择而言可以考虑以下顺序:

ACCESS->MSSQL->ORACLE

不过不管什麼数据库,都要记住SQL语言是数据库的灵魂,只有熟练掌握SQL语言,数据库才能用得好。

就有点SQL的基础知识,该怎么学好Oracle

--从SQL起步,依次学习select,insert,update,delete,分组函数,各种连接,合并,权限管理,同义词,schema

然后学习PL/SQL的函数,存储过程,序列,触发器,事务,动态SQL,异常处理

SQL优化也要了解一些(执行计划)

如果不学DBA这些就足够了

另外问一下sqlserver和Oracle是处理数据的软件吗,还是指什么(一提数据库,都说SQLSERVER,Oracle,Access他们本质上是什么是软件,还是指储存数据的不同模式)

--对,都是数据库软件

本人有C++基础,学数据库要用的除SQL外的编程语言吗(要用到多少)

--Oracle要用到PL/SQL(和SQL有所不同如果你学SQL Server,要用到T-SQL)

另外推荐几本书看看(这是重点)

--推荐steve feurstein的oracle pl/sql programming(不好意思,我看的都是英文书可以去书店找找影印版)

基本上 *** 作各种数据库不近相同,其中access是小型数据库,sqlserver与oracal是中型的,DB是大型数据库。

1、学习数据库的SQL语句,每个数据库基本上上不多,但是都有自己的不同,有的时间类型用‘’标识有的用#等。但是基本的SQL都是一样的select ,update,Insert,Delete,基本上学会了基础的,就学习高深一点的,如何联合表查询,编辑,修改。

2、这些熟悉以后,就要学习一下数据库的一些常用的系统函数,再之后就是要学习,存储过程,函数,触发器,事务。基本数据库这部分就没有什么问题了,只要不做高级的科研什么的,这些知识就都够了。要想学好数据库,就要多联系,自己创建一个带有逻辑的符合第三范式以上的数据库,然后写写SQL、触发器、存储过程、试图等。最重要的就是,把他们之间的逻辑搞清楚。

1大型的数据库主要有:Oracle,SQL server,Sybase,MySQL,DB2;

单机版的有dBASE,ForBASE,ForPro,ACCESS

2比较常用的是Oracle,SQL server,ACCESS,MySQL,DB2;

3世上无难事,只怕有心人

4SQL的语法都是基本相通的,可以先学习基本的语法吧,建议先从SQL server,ACCESS学起,而ACCESS则更简单但是要比较熟练的话,那至少也要三五个月吧,重要的是态度和方法,要踏踏实实的学,不要想著能够一朝成才,因为学习是一个循序渐进的过程,而且要坚持理论与实践相结合

1、 自己在windows和linux上安装了mysql,自学linux的基础知识,学习mysql的最基础的知识,即怎么写sql,存储过程,表的设计等,从0到熟悉大概花了3个月 ,推荐《mysql入门很简单》。

2、系统地较为深入地学习mysql的sql优化,备份和恢复,参数优化,架构优化,硬件层面的优化,高可用方案,复制技术等等,这段时间你不一定能实际接触到这些,就像我当初那样,肯定没什么公司招一个小白。

我选择自己看书,推荐《高性能mysql》,里面所有的章节都需要看一遍,以现在的水平肯定看不懂,但需要知道大概怎么回事,为后续的找mysql初级dba的工作打一个铺垫,这个过程大概也需要3个月。

3、 纸上得来终觉浅,完成以上两步,我开始准备找一份mysql相关的工作,而不是天天用着excel表格做着select from table_sb这样的工作。

当然我这么猥琐的人肯定不会裸辞,该画的电路板也一样画,业余时间开始投初级mysql dba的工作,并且不间断地学习,网上各种找mysql面试的相关题目(实际上我当时完全没有任何实战经验),陆续收到一些面试,凭借之前自学的mysql知识,开始胡乱吹牛逼,先混进去再说。

你不做mysql实际相关的工作,永远也不知道自己之前认知的db知识有多幼稚。

友情提示一点,一般公司都没有专职dba的,所以面试的时候一定要自信,其实你学了这么多,虽然毫无实战经验,理论知识很大概率比面试你的人牛逼,所以各种吹,我就这样真正进入初级dba的圈子(由于这时对linux还处于cd ls的水平,所以之前也根本没做过运维),这个边工作边找工作的过程又持续了2个月。

4、真正进入互联网,接触生产环境后,这是我进步最大的时候。

第一步需要将之前所学真正地应用起来,并且应用的过程中,再回头看之前的书籍,这时候需要真正去理解,而不是似是而非,一知半解。

这时再推荐《高性能mysql 第三版》,全本再看一遍,这时需要全部看懂,另外还有《mysql技术内幕:innodb存储引擎》等等。

总之这段时间就需要开始关注mysql一些细节了,比如db故障处理,高可用,负载均衡等等的具体实现了。

另外,linux的知识同步也要深入去学习,至少会写shell脚本,常见的linux知识等,我在这花了1年多;

5、 dba的工作一般是非常轻闲的,毕竟不是大公司,技术能力有限,该学的也学得差不多了,接触不到海量数据,高并发等比较锻炼人的场合,于是我又准备跳了。

于是来了公有云,现在每天运维万多个db实例,平均每天处理5+个紧急db故障,几乎mysql会遇到的问题,感觉都遇到了,能感觉到技术实力和经验也在每天都在积累,在进步。

但是感觉还是欠缺了很多,下一步就看你选择了,是再去研究源代码,底层原理的东西多点,还是数据库运维和应用多一点,就比如业界姜承尧,何登成与叶金荣的区别。

由于我的历史原因,对c++等几乎不懂,平时也用不到,所以看代码等事实际太累,于是我再去学mongodb,接了公司mongodb运维的活,算是在广度上的一个扩展,万一哪天mysql不行了呢

6、 总之,对于db小白来说,最重要的一点就是,学习的过程不能断。

PS 上面的方法比较野路子,适合没什么基础的童鞋,如果本来就是DBA,比如从oracle转到mysql,那么建议直接看mysql官方文档,而官方文档是db达到一定水平后必看,出问题时必查的权威文档。

以上就是关于如何学习数据库知识全部的内容,包括:如何学习数据库知识、学数据库应该先学什么、怎么可以学习数据库呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10196951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存