`
superich2008
  • 浏览: 315122 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]浅谈数据库怎么学和怎么玩

sql 
阅读更多

转载自:http://www.shenyisyn.org/2013/06/26/shujuku.htm

最近有人问我数据库怎么学?要学哪些?以下我谈一些个人想法。
  其实我的数据库知识不是很扎实,真心的。
当年我学这个东西时某个大神告诉我“学会sql server”走遍天下都不怕。事实上,这几年如果只会sqlserver根本到哪都很怕。
原因?
1、如果是政府软件,虽然不像互联网那样高,但是数据存储量确实很大很大,大家想想譬如财政数据、公积金数据、民政局数据等,而且很多数据不能使用缓存,必须实时计算,当sql2008还没出现时,确实在大数据计算性能上不如oracle
2、由于某些原因,政府很少会同意使用windows服务器平台,大都会使用unix或linux平台,这就决定了sqlserver或者.net应用很难卖出去(当然不是完全不行,有些局部部门的软件还是可以的,机密数据那想都不要想)
3、对于企业项目,很多中小企业为了节约成本又想有节操的不使用盗版,那么mysql是他们最好的选择。
4、对于自己做网站,前期如果不想花大成本购买独立服务器的话,使用mysql是正道,便宜而且好用,最重要的是前期也没有这么多数据和人气让我们需要上高级数据库。
  其实我个人认为,至少掌握1-2个数据库是很有必要的,譬如mysql和oracle,至于sqlserver不是它简单,而是微软的东西在用户体验和易学性上确实做得更甚一筹(易学性既是优点也是缺点,缺点在于出了问题你很难找到最根本的原因)
以下有几个建议关于怎么玩数据库。
换个方法学习
  一、 不建议按部就班的学习,因为你这么学,别人也是这么学,而每个人的理解能力、技术基础、记忆力、周边环境和自己肚皮饱饿程度都是不同的,这些要素直接影响你的学习速度。
  如果大家都在同一起跑线上,使用相同的学习办法是不可取的
二、自己逼自己
  模拟项目学习是我个人认为最好的办法。
  首先需要了解基本的语法,譬如select insert update 等等
  譬如我们新建一个新闻表叫做 news ,里面包含 id,title,content(text型),addtime,clickcount 5个字段。
  然后手工insert into 这张表50万条数据,注意必须是50万或更多且新闻内容必须要大。
  然后做一个页面,展示某一条新闻的详细,右边边栏展示(1、相关新闻 2、人气排行 3、两天内发布的新闻 等各10条)
(1) 这时你会发现,取数据还真不能简单的 select * from 表 where id=X,你会需要学习如何创建字段索引、如何需要在该表中加入冗余字段,你还会发现当新闻表特别大的时候,用户每点击一次新闻此时如果update这张表的clickcount时页面很慢,你的笔记本风扇很烫。
(2) 如果再复杂点需求,你会发现用视图比较好,或者用存储过程来更新一些数据效率更高,然后你会发现新增新闻时还要使用事务才行。于是逼着你去学这些知识。
(3) 再进一步,你会发现自己做的新闻页面好丑好丑,于是逼着你去学css和html 和jquery
(4) 然后你把表中的数据扩展到200万以上,你会发现某些功能还真不是一张表可以搞定的。貌似还得了解数据库的分区甚至分表。 你还会学会用数据库sql查询分析器来分析哪条sql语句占了很大性能。甚至不同的sql语句有的比较耗内存,而有的sql语句让你的cpu涨到了100%。
于是,我个人认为你本来学1个月然后做测试项目,共需2个月左右才能基本掌握一个数据库知识,如果用同步边学边自虐的方式很可能时间要节约20%以上,并且让你掌握的更扎实。
  这就是为什么有的计算机系大学毕业的学生不如其他专业转行的学生。
总结:
  当然,技术(这里主要指开发相关)做到高级境界 其实是数学知识和自然社会知识的碰撞,和编程语言也就关系不大了。但是数据库知识是必须掌握的,不管你做什么样的应用,只要你需要存储数据那么必须了解数据库。
  如果你想作为业余爱好更深入的了解数据库,那么你可以从数据结构学起,深入了解数据库是怎么运作的,当然mysql都是开源的,学学思想很不错,当然我从没看过。
  如果在你还没有成为大神时就想自己开发一个关系型数据库,那可能不太现实。在我国玩这种事情的前提是必须要有钱,然后才能谈技术、谈团队、谈产品,否则你会深陷泥塘不可自拔。

还有一句话,好的并且是赚钱的程序员大部分都是逼出来的,在这个范围内没有天才。

分享到:
评论

相关推荐

    浅谈数据库设计技巧[pdf]

    说到数据库,我认为不能不先谈数据结构。1996 年,在我初入大学学习计算机编程时, 当时的老师就告诉我们说:计算机程序=数据结构+算法。尽管现在的程序开发已由面向过 程为主逐步过渡到面向对象为主,但我...

    浅谈数据库与地理信息系统.doc

    浅谈数据库与地理信息系统 针对目前市场上对数据库系统及GIS的认识,笔者通过对数据库系统、GIS的概念,阐 述两者之间的关系以及发展方向,阐明目前大家对数字化概念的认识及要求,与建库、 GIS的区别,从数字图到...

    浅谈PLC学习的5个阶

    浅谈PLC学习的5个阶 1、学习PLC首先要选好学习那一个厂家的PLC,日系的 PLC内部软件集成度高应用简单.早期的OMRON、三菱应 用比较多、现在由于贸易和国际间的合作关系应用西门 子PLC、罗克韦尔的多一点,(尽管说学...

    浅谈数据库设计技巧

    火龙果软件工程技术中心 说到数据库,我认为不能不先谈数据结构。1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法。尽管现在的程序开发已由面向过程为主逐步过渡到面向...

    浅谈学习乐高机器人对孩子的帮助.pdf

    浅谈学习乐高机器人对孩子的帮助.pdf

    浅谈ADO.NET数据库脚本

    最近跟着公司做了一个小项目,虽然不是很好,却也有点心得,在此和大家分享一下,希望高手能不吝赐教啊。。。还有很多得更加努力学习啊

    浅谈chatgpt未来强势发展

    技术提升的方式,一是需要将海量数据,尤其是实时的新数据增加到原有的文本数据库中,对其中不实、偏见或过时的信息进行更正,并以更新的文本数据库为基础,进行进一步的模型训练,以实现技术模型和应用工具的...

    浅谈常用Java数据库连接池(小结)

    主要介绍了浅谈常用Java数据库连接池(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    浅谈数据分析.docx

    百分比和百分点 浅谈数据分析全文共4页,当前为第2页。百分比:百分比是相对数中的一种,他表示一个数是另一个数的百分之几,也成为百分率或百分数。百分比的分母是100,也就是用1%作为度量单位,因此便于比较。 浅...

    MySql数据库中的子查询与高级应用浅析

    主要给大家介绍了关于MySql数据库中子查询与高级应用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    浅谈入门级oracle数据库数据导入导出步骤

    主要介绍了浅谈入门级oracle数据库数据导入导出步骤,文章通过步骤解析介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    浅谈关于能量管理系统

    这是对EM S 应用软件的源程序、画面和数据库进行改造, 调节改变有关算法的控制参数, 使运行人员可以直接在EM S 监视器画面上对状态估计和调度员潮流等模块计算的过程和计算的收敛精度进行控制。 3. 4 EMS 计算结果...

    浅谈MyBatis-Plus学习之ActiveRecord.docx

    Active Record(简称AR),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。而MP也对AR有一定支持。 在MP中开启AR,仅需要实体类继承Model类并实现主键指定...

    浅谈网络安全防护技术.doc

    浅谈网络安全防护技术 摘要:随着计算机网络应用的广泛深入.网络安全问题变得日益复杂和突出。目前计 算机病毒技术和黑客技术的融合,使得计算机所受到的威胁更加难以预料。本文从常见 的网络安全防护方法入手,...

    浅谈数据挖掘与数据分析?.pdf

    浅谈数据挖掘与数据分析? 浅谈数据挖掘与数据分析? 和数据挖掘都可以做为"玩数据"的⽅法论,两者有很多的共性,也有显著的差异。从分析的⽬的来看,数据分析⼀般是对历史数据进⾏ 统计学上的⼀些分析,数据挖掘更...

    浅谈Django学习migrate和makemigrations的差别

    本文主要研究的是Django中migrate和makemigrations的差别,具体如下。 在你改动了 model.py的内容之后执行下面的命令: Python manger.py makemigrations 相当于 在该app下建立 migrations目录,并记录下你所有的...

    基于PCB的浅谈数控系统故障诊断的一般方法.zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

    浅谈Matlab在复变函数论中的应用.pdf

    浅谈Matlab在复变函数论中的应用.pdf

Global site tag (gtag.js) - Google Analytics