重新捡起SQL,搜了本《菜鸟级SQL21天自学通》的pdf开始看(感谢译者王永宏),决定认认真真的再学一遍。
1.SQL介绍
SQL是什么?还记得大学那阵学SQL的时候认为SQL也是一种语言,像C,C++一样,有相应的关键词,有一定的语法规则。的确,SQL是一种语言,他的全称是结构化查询语言(Structured Query Language),上世纪七十年代诞生于IBM实验室,如很多目前广为流行的开发语言一样,设计之初只是为特定的系统特定的目的而开发,SQL起初只是为IBM的DB2系列数据库开发的。后来经过一系列标准化组织的完善,才形成了目前广泛使用的SQL语言。当然不同厂商也对SQL进行了、定制,不同厂商的SQL语言存在些许差异,但总的来说很多基本的SQL语句还是比较通用的。
2.关系型数据库
说到SQL,不得不提一下关系型数据库。正如书中所说,“是SQL造就了RDBMS“。所谓关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。Codd的十二定律也许记不下来,但是这十二定律规定的一些关系型数据库所具有的基本特性我们应该清楚,比如一个关系形的关系数据库管理系统必须能完全通过它的关系能力来管理数据库;所有信息都应该在逻辑一级上用表中的值这一种方法显式的表示;依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项;数据的物理独立性 无论数据库的数据在存储表示或访问方法上作任何变化,应用程序和终端活动都保持逻辑上的不变性等等。依据Codd的定义,"在关系模式下数据被存入类似于表格的结构中这种表格由独立的数据元组被称为列或字段所组合而成一组数据信息被存储为一行".SQL的语言设计正是遵循或者得益于这些准则进行的(让我们想想SQL中的Select ,Insert等语句吧)。
3.C/S模型与数据库
C/S的架构已经常见的不能再常见了,但是不得不说C/S确实是一种很好用的架构。在关于C/S,书中是这样说明的:
C/S系统就是把单一的任务分解到多个处理器上进行协同处理,就像在单个处理器上运行时一样一个完备的客户机/服务器系统可以将多个处理器捆绑在一起以提供一个单一系统虚拟环境共享的资源可以被位于远端的客户机通过特殊的服务来访问这种结构可以逐级递归所以一级服务器可以在最后转变为客户机进需要求其他的服务器提供服务就这样一直下去。
我们的数据库也是如此,我们一般通过一个客户端软件登陆到本地的数据库服务器进行维护和更新。同时这种服务模型也保证了数据库很好的通用性,我们只需维护一个server上数据,而不需对各个平台的操作系统做适配(那是客户端要干的事)
4.ODBC
ODBC(Open Database Connectivity)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。
概括来说ODBC就是向上负责提供一套访问数据库的标准接口,向下使用针对不同数据库的驱动,达到以统一的方式访问所有数据库的目的。
最后说一下,SQL 是一种非过程型语言,它决定了应该做什么而不是如何去做。数据库必需实现SQL 的要求,这种特性在交叉平台和交叉语言开发环境中非常有利。