渣渣小本求职复习之路每天一博客系列——数据库基础(MySQL)(1)

      前情回顾:前面五篇博客简单地复习了一边TCP/IP协议栈的东西,今天问舍友意见下面该复习哪些东西。他先是建议继续复习计算机网络的相关内容,我说复习也分一轮二轮的吧,把太多的连续时间花在这上面我怕别的方面复习不到。紧接着他就说不如复习数据库基础好了,因为他在给我做模拟面试的时候问了一些最基本的数据库知识我都没能回答出来。好吧,下一阶段,目标进发!

      昨天把环境配好项目跑起来了,上午想了一个上午的解决方案,想着怎么把某BUG给干掉。下午前辈问我工作进度,我给他说了一下,他说不是那样做的。我去到他位置上问是什么情况,后来才知道,之前安排工作给我的那个同事没有给我说清楚。

      我的第一反应就是:次奥,那个家伙怎么能这样,安排工作从来都不讲清楚,都是让我朝着不那么正确的方向做了一段时间才知道要怎么做。后面冷静下来,不能总是埋怨别人嘛,肯定是有自己的原因的。如果我当时多问几句,问到具体的问题所在或者解决思路的话,哪怕他不懂也会帮我问其他前辈,就不会出现现在这种情况了。我最近在看一本书,叫做《99%的新人,没用心做好的50件事》,里面讲的都是职场新人怎么做或许会更好的建议。其中提到的一个观点,我觉得很适合我现在这种情况。作为新人,在技术上不可能比老人牛很多,而在经验上则肯定比老人要少得多。那么就要多问,多问不是不动脑子,而是在思考过后把不明白的地方提出来,以免误解了别人交代给自己的任务。作为新人的觉悟,不要害羞,多问几句是不会被认为自己低能的。(当然也要注意,不要问出“1+1等于几啊”之类的问题,至少是尽量避免)

———————————————————————————————闲聊结束——————————————————————————————

      本来想一上来就先复习SQL,然后再是数据库优化之类的东西,但是翻了翻之前上《数据库概念基础》的课件,发现有几个东西还是了解一下比较好。

      第一章:数据库基础中几个需要注意的概念

      第一节:什么是关系型数据库呢?

      关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。——摘自《百度百科》(更多深入的理解还是看资料比较好,涉及的内容比较多,如果全部都贴出来会很冗长。例如,什么是关系模型,集合代数又是什么,都是要了解的。我之所以单单贴出来这句话,是为了之后在看到的时候可以根据这句话想起相关的内容。有的时候,一句话的概念并不是要我们去背,而是去理解,自然而然就会记得住记得牢。)

第二节:笛卡尔积是什么?

首先,我们来看看定义:

设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成的有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.
看着定义不是很明白?没关系,结合例子就会一目了然了。看例子:
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)} 
再结合数据库的举例就更加清楚了:http://www.cnblogs.com/zerocc/archive/2011/11/03/2234458.html。大家有空看看。这里提出一个问题:为什么我们要知道什么是笛卡尔几呢?知道了之后有什么用呢?期待童鞋们在给出精彩的答案。
第三节:等值连接、自然连接、外连接(包含左外连接、右外连接以及全外连接)
什么是等值连接?
等值连接是条件连接在连接运算符为“=”号时的特例。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组。
什么是自然连接?
自然连接就是在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉。举例如下图:
什么是外连接?(老师给的课件里,有这么一张图)
为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接。外连接=自然连接+未匹配的元组(悬挂元组)
左外连接=自然连接+左侧表中未匹配的元组
右外连接=自然连接+右侧表中未匹配的元组
全外连接=自然连接+两侧表中未匹配的元组
 
 
简单地列举了几个面试中容易问到的基本概念,有些还没贴图。记得怎么回事的童鞋脑子可以脑子里回忆一下,不记得怎么回事的童鞋赶紧去翻翻教材或者问度娘咯。其实还有一个重要部分没讲到,就是关系运算部分,例如选择、投影、赋值等等。当初学的时候稀里糊涂,不知道为啥要知道这些,现在重新看了一遍课件才知道跟后面要学到的结构化查询语言SQL有紧密的关系。或许可以这么说,关系代数是公式(1+1),而SQL就是将其在计算机中实现运算的语言(a=1;b=1;c=a+b;)。
举例可能不太恰当,大家将就着看吧。
 
第二章:结构化查询语言SQL概述
虽然SQL翻译过来是结构化查询语言,但它并不是一门只是用来查询的语言,还有其他的功能,例如操作数据、定义数据等功能。请看下图:
SQL不是某个特定数据库供应商专用语言。几乎所有重要的关系型数据库管理系统都支持SQL,通用是它的一大特点。另外,SQL看上去很简单,但它实际上是一种很强力的语言,我看过网上一些写得很巧妙的SQL语言,可以进行非常复杂和高级的数据库操作。大家有兴趣的话可以去搜搜看,自己试着写写。
这一章只是一个简单的介绍,在之后的内容里,会有一个比较详细的介绍和举例。大概会用两到三天的时间,复习一下数据定义、数据更新、查询、视图以及索引五个方面的内容。
 
——————————————————————————第六天————————————————————————
喜欢这种在夜深无人的环境下写东西。
1.看着班上一个又一个同学拿到非常不错的offer,心里说不羡慕嫉妒恨一点不着急肯定是骗人的。这是他们应得的,平时的努力和一次又一次的尝试,终究会有回报的。至于我嘛,最近算是进入复习状态,不会像以前那样什么都不想,也不会绷得太紧。在看书写东西的时候积攒一点点的自信心,在闲下来想到自己还没着落的时候又一点点地焦虑起来,循环往复中。
2.最近实习那边被催得很紧,连续三天都没什么时间看自己的东西。感受一下工作时的状态也好,其实我是很懒的人,不是很喜欢这种紧绷的感觉,特别不喜欢别人催我,而且还是用“一定要在什么什么时候完成”之类的话。可是转念一想,正式工作之后的工作强度和紧张程度一定会更大,而且是大得多,现在开始转变自己的态度和适应适应也不错。有点像是在磨砺自己,谁叫以前太懒散了呢。
3.今天从早上到公司坐下,一直到下午下班走人,一直在弄那个bug。晚上回来也没什么状态写东西。因为平时写,都是白天看了一段时间的资料有个大概的印象,晚上才组织语言开始动手码字。这篇内容少是少了点,下面几篇会注意增添一些内容。
 
 
 
 
 
 
posted @ 2013-10-24 09:03  LevenYes  阅读(1157)  评论(10编辑  收藏  举报