没有合适的资源?快使用搜索试试~ 我知道了~
SQL基础123.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 148 浏览量
2022-06-27
03:28:14
上传
评论
收藏 748KB PDF 举报
温馨提示
试读
17页
SQL基础123.pdfSQL基础123.pdfSQL基础123.pdfSQL基础123.pdfSQL基础123.pdfSQL基础123.pdfSQL基础123.pdfSQL基础123.pdf
资源推荐
资源详情
资源评论
第一部分:SQL 基础
1. 为什么学习 SQL
自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献、档案、资料、
数据等);在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到前
所未有的广度和深度。如何管好和用好信息,是(而且将一直是)IT 行业一块重要的领域。
在过去几十年中,关系数据库一直在这一领域占主导地位,而建立在关系理论基础之上的
SQL 也成为数据库领域的既定标准。
目前的数据存储领域可称为三分天下:
a. 少量数据的存储:
自定义数据文件或通用数据文件(单机数据库),通过自定义接口或通用 API 访问数据。如
需要存储数据的单机软件或小型的动态网站。
b. 对一致性要求高的大量数据的存储:
关系数据库管理系统(RDBMS)。如各种传统的信息系统(ERP、CRM、HRMS、MIS 等)。
c. 对并发性要求高的大量数据的存储:
NoSQL 数据库系统。如 Web2.0 网站的后台数据系统。
以上,“狐假虎威”地借数据存储的重要性来阐述了一番学习 SQL 的伟大意义。但重要的是,
对 SQL 善于做什么和不善于做什么有个清楚的认识。
2. 学习 SQL 的参考资料
不久前整理了数据库图书 ABC 一文,对数据库相关的参考资料作了粗略的分类。
对于初学者而言,可以结合着《数据库系统概念(第 5 版)》一书和某个 DBMS 平台的入门技
术手册练习,自行寻找或构思一个小需求,建一个数据库,创建几个表和视图,练习写查询
和修改语句。基础理论和技术实践可以相互促进。
3. 几组基本概念
3.1. 单机数据库与服务器级数据库
单机数据库(如 sqlite、Access 等,Excel 也勉强可以算是)是应用于单个计算机的数据库引
擎,通常不具备网络连接功能,适用于小型应用;程序部署时,一般只需要附带数据文件即
可。有时也称作桌面数据库。
服务器级数据库(如 Oracle、DB2、SQL Server、MySQL、PostgreSQL 等)是具备网络连接
功能、可作为单独数据库服务器的 DBMS,适用于大型信息系统;程序部署时,需要专门
安装相应的 DBMS,甚至要单独进行数据库服务器的架构设计。此类数据库是我们讨论的
重点。
3.2. 服务器(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)
3.3. 数据库(DB)与数据库管理系统(DBMS)
“数据库”这个词已经被滥用,可能用来指一个数据系统(如中国移动的号码数据库),可能
用来指一种数据存储技术(如关系数据库和 NoSQL 数据库),还可能用来指 DBMS(如人们
常说 SQL Server 是数据库软件)。这种混乱已然形成,恐怕难以改变(比如上文的描述即是
如此)。我们只能根据上下文来判断具体含义。
按最狭义的技术含义,数据库 (Database)是指位于一个数据库服务器实例上的一个库,而
DBMS 则是指类似 SQL Server、Oracle 等等此类软件。初学者要注意这些概念之间的差别。
论坛上常常见到这样的帖子:“连不上数据库”、“数据库打不开了”,又没有上下文,可见发
问者概念混乱,搞得解答者也是一头雾水。
3.4. SQL 与 SQL 方言(dialect)
SQL 是一个关系数据库查询语言的标准,而 SQL 方言则是各种 DBMS 在 SQL 标准上进行
的扩展,如增加新的关键字、查询功能、特有的数据类型、支持过程化的控制流语句等。例
如 SQL Server 的 T-SQL 和 Oracle 的 PL/SQL 都是常见的 SQL 方言。
这就好比 ANSI C 标准与各种编译器实现的 C 语言的差别。但不同 SQL 方言之间的差异远
大于不同 C 编译器之间的差异。SQL 方言之间的差异,对于跨 DBMS 的学习和开发,都是
必须注意的。
3.5. 语句、表达式和断言
语句(statement)是 SQL 中一个可以单独执行的单元。如 SELECT * FROM table;即是一个语
句,其中包含了 SELECT 子句(clause)和 FROM 子句。SQL 标准规定用分号作为语句的结束,
但在目前的 T-SQL 中,语句结束的分号是可选的。
表达式(expression)是 SQL 中的一个值(可能是变量、常量、查询字段或计算结果),对应一
种特定的数据类型。SQL 中的表达式分为标量表达式和表值表达式,其中表值表达式作为
单独语句则 是 SELECT 语句,作为语句的一部分则称为子查询。比如 0, col + 2,
DATEADD(second, 30, GETDATE())都是(标量)表达式。
需要特别说明的是,SQL 中的 CASE WHEN 是标题表达式,而不是条件语句。比如 CASE
WHEN 中可以使用表达式,却不能使用语句;CASE WHEN 的结果是一个特定数据类型的
标量值;CASE WHEN 可以用在 SELECT、GROUP BY 或 ORDER BY 子句中,但 IF ELSE
则不行。
断言(predicate)是 SQL 中进行比较的结果,即真值,可理解为布尔表达式,因为 SQL 中没
有 bool 数据类型,所以将断言特别从表达式中区分出来。比如1 是一个标量表达式,而1 =
1 则是一个断言,后者可以用在WHERE、ON、HAVING、CHECK 等需要真值条件的地方,
但前者则不可以。由于 NULL 的存在,SQL 中的断言是三值逻辑,即 True/False/Unknown,
详见下文“NULL 与三值逻辑”。
下文中多次用到计算和比较两个词。表达式和表达式进行计算,结果是新的表达式;表达式
和表达式进行比较,结果是一个断言;断言和断言可以进行逻辑运行(AND/OR/NOT),结果
是新的断言。注意其中的区别。
4. SQL 不同于一般编程语言的地方
4.1. SQL 操作的是数据
SQL 是数据库的查询语言,因而可以对系统数据产生持久化影响。在常规编程中,一个错
误通常只会造成程序的 crash 或 bug,修改并重新调试往往就可以了;而在SQL 中,一个不
小心就可能造成系统数据的破坏和丢失。常常有新手执行 SQL 时,不小心遗漏了 DELETE
或 UPDATE 语句中的 WHERE 子句,这往往是很大的麻烦。
因此,学习和使用 SQL,一开始应该养成两个习惯:
1. 细心。在执行 SQL 语句认真检查一下,要清楚自己在做什么。
2. 及时备份,并考虑对系统的元数据进行版本控制。为偶尔的意外准备好后悔药。
常见的可能造成破坏性影响的 SQL 关键词:DELETE, UPDATE, DROP, TRUNCATE TABLE。
4.2. SQL 是基于集合的说明式语言
SQL 擅长集合操作,而不是循环。所谓说明式语言,你只需要告诉 SQL 需要做什么,而不
是怎么做。
初学 SQL 的人,思维往往难免带有过程式语言的痕迹,解决问题时常常不由地考虑循环。
在学习 SQL 编程时,每当想要用循环时,先反问一下自己:这个问题是不是必须用循环来
解决?事实上,多数情况下,这个问题的答案是否定的。
有本书中讲,SQL 代码中出现一次 IF 便要减一些分(比如-1),出现一次 WHILE 便要减很
多分(比如-10 或-50,不夸张)。可以尝试用这样的方法为自己的存储过程打分。
5. SQL 的三个子集
SQL 从功能上可以划分为三个子集:
1. DML(Data Manipulation Language):
数据操纵语言,是对数据进行查询和修改(增、删、改)操作的语言。
包含语句:SELECT+INSERT/DELETE/UPDATE
使用对象:DB User
2. DDL(Data Definition Language):
数据定义语言,是对域(数据类型)和关系(表)及其它数据库对象进行定义的语言。
包含语句:CREATE/DROP/ALTER
使用对象:DB Designer/Developer
3. DCL(Data Control Language):
数据控制语言:是对数据的访问进行权限控制的语言。
包含语句:GRANT/DENY/REVOKE
使用对象:DBA
补充说明:
- 严格地说,DML 只包含对数据进行修改的语句(INSERT/DELETE/UPDATE),但 SELECT
语句与 DML 关系紧密、形式类似,故通常放在一起。既可以统称为 DML,也可以并称为
Query+DML。
- 以上三个子集不包含 BACKUP/RESTORE 语句。
第二部分:从关系角度理解 SQL
6. 从关系角度理解 SQL
6.1. 关系和表
众所周知,我们目前所用的数据库,通常都是关系数据库。关系自然在其中处于关键位置。
剩余16页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功