第一部分:SQL基础
1. 为什么学习SQL
自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献、档案、资料、数据等);在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到前所未有的广度和深度。如何管好和用好信息,是(而且将一直是)IT行业一块重要的领域。
在过去几十年中,关系数据库一直在这一领域占主导地位,而建立在关系理论基础之上的SQL也成为数据库领域的既定标准。
目前的数据存储领域可称为三分天下:
a. 少量数据的存储:
自定义数据文件或通用数据文件(单机数据库),通过自定义接口或通用API访问数据。如需要存储数据的单机软件或小型的动态网站。
b. 对一致性要求高的大量数据的存储:
关系数据库管理系统(RDBMS)。如各种传统的信息系统(ERP、CRM、HRMS、MIS等)。
c. 对并发性要求高的大量数据的存储:
NoSQL数据库系统。。
以上,“狐假虎威”地借数据存储的重要性来阐述了一番学习SQL的伟大意义。但重要的是,对SQL善于做什么和不善于做什么有个清楚的认识。
2. 学习SQL的参考资料
不久前整理了数据库图书ABC一文,对数据库相关的参考资料作了粗略的分类。
对于初学者而言,可以结合着《数据库系统概念(第5版)》一书和某个DBMS平台的入门技术手册练习,自行寻找或构思一个小需求,建一个数据库,创建几个表和视图,练习写查询和修改语句。基础理论和技术实践可以相互促进。
3. 几组基本概念
. 单机数据库与服务器级数据库
单机数据库(如sqlite、Access等,Excel也勉强可以算是)是应用于单个计算机的数据库引擎,通常不具备网络连接功能,适用于小型应用;程序部署时,一般只需要附带数据文件即可。有时也称作桌面数据库。
服务器级数据库(如Oracle、DB2、SQL Server、MySQL、PostgreSQL等)是具备网络连接功能、可作为单独数据库服务器的DBMS,适用于大型信息系统;程序部署时,需要专门安装相应的DBMS,甚至要单独进行数据库服务器的架构设计。此类数据库是我们讨论的重点。
. 服务器(Server)与客户端(Client)
数据库服务器是运行在一台主机(Host)(或主机集群)上的服务程序,维护着一个或多个数据库,并通过网络连接响应数据库客户端提交的SQL语句。
数据库客户端是向数据库服务器发送查询请求的应用程序,可能是DBMS的GUI管理界面或命令行应用程序,也可能是前端的Web服务器。数据库客户端和数据库服务器可能是在同一台主机上,但更多情况下则是位于不同的主机上,通过局域网访问。
例如对于SQL Server来说,一个服务器实例(Instance)即是一个数据库服务器,一台主机上可以安装多个服务器实例;而查询分析器或SSMS、sqlcmd、以及连接数据库服务器的IIS,都是数据库客户端。
比如你在SSMS中备份/还原/附加一个数据库,或是通过xp_cmdshell执行一个命令程序,所操作的都是你所连接的数据库服务器所在主机的文件,而不是你运行SSMS数据库客户端所在主机的文件。
一台主机有时候会被称作一台(操作系统)服务器,而数据库服务器和Web服务器都是运行在主机之上的应用服务器。它们都被称作服务器,不要因此搞混了。
一个典型的基于SQL Server的网站系统的架构示例如下:
用户浏览器(Web Client) <----> IIS(Web Server/DB Client) <----> SQL Server(DB Server)
. 数据库(DB)与数据库管理系统(DBMS)
“数据库”这个词已经被滥用,可能用来指一个数据系统(如中国移动的号码数据库),可能用来指一种数据存储技术(如关系数据库和NoSQL数据库),还可能用来指DBMS(如人们常说SQL Server是数据库软件)。这种混乱已然形成,恐怕难以改变(比如上文的描述即是如此)。我们只能根据上下文来判断具体含义。
按最狭义的技术含义,数据库(Database)是指位于一个数据库服务器实例上的一个库,而DBMS则是指类似SQL Server、Oracle等等此类软件。初学者要注意这些概念之间的差别。论坛上常常见到这样的帖子:“连不上数据库”、“数据库打不开了”,又没有上下文,可见发问者概念混乱,搞得解答者也是一头雾水。
. SQL与SQL方言(dialect)
SQL是一个关系数据库查询语言的标准,而SQL方言则是各种DBMS在SQL标准上进行的扩展,如增加新的关键字、查询功能、特有的数据类型、支持过程化的控制流语句等。例如SQL Server的T-SQL和Oracle
SQL学习资料CSDN 来自淘豆网m.daumloan.com转载请标明出处.