1. 首页
  2. 数据库
  3. SQLServer
  4. SQL必知必会

SQL必知必会

上传者: 2019-09-14 16:59:21上传 PDF文件 1.58MB 热度 19次
SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能。, 本书是深受世界各地读者欢迎的SQL经典畅销书,内容丰富,文字简洁明快,针对Oracle、SQL Server、MySQL、DB2、PostgreSQL、SQLite等各种主流数据库提供了大量简明的实例。与其他同类图书不同,它没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述实际工作环境中最常用和最必需的SQL知识,实用性极强。通过本书,读者能够从没有多少SQL经验的新手,迅速编写出世界级的SQL!, 本书是麻省理工学院、伊利诺伊大学等众多大学的参考教材。除了作为教程之外,独目录引言致谢第1课了解SQL11数据库基础1.1.1数据库1.1.2表113列和数据类型1.14行1.15主键12什么是SQL13动手实践14小结第2检索数据2.15 ELECT语句22检索单个列23检索多个列24检索所有列25检索不同的值26限制结果2.7使用注释28小结第3课排序检索数据3.1排序数据32按多个列排序33按列位置排序34指定排序方向35小结第4课过滤数据4.1使用 WHERE子句42 WHERE子句操作符42.1检查单个值422不匹配检查4.2.3范围值检查4.2.4空值检查43小结第5谋高级数据过滤5.1组合 WHERE子句5.11AND操作符5.1.2R操作符5.13求值顺序52N操作符53NOT操作符54小结第6课用通配符进行过滤6.1LKE操作符6.1.1百分号(%)通配符6.1.2下划线()通配符613方括号([])通配符62使用通配符的技巧63小结第7课创建计算字段7.1计算字段72拼接字段使用别名73执行算术计算74小结第8课使用数据处理函数8.1函数函数带来的问题82使用函数82.1文本处理函数822日期和时间处理函数823数值处理函数83小结第9课汇总数据9.1聚集函数911AVG()函数9.12 COUNT()函数9.13MAX函数914MⅣNO函数915SUM(函数92聚集不同值93组合聚集函数94小结第10课分组数据10.1数据分组10.2创建分组10.3过滤分组104分组和排序105 SELECT子句顺序10.6小结第11课使用子查询11.1子查询11.2利用子查询进行过滤1.3作为计算字段使用子查询14小结第12课联结表12.1联结12.1.1关系表12.12为什么使用联结122创建联结1221 WHERE子句的重要性1222内联结1223联结多个表123小结第13课创建高级联结13.1使用表别名132使用不同类型的联结13.2.1自联结1322白然联结1323外联结133使用带聚集函数的联结134使用联结和联结条件135小结第14课组合查询14.1组合查询142创建组合查询142.1使用UN|N1422UNON规则1423包含或取消重复的行1424对组合查询结果排序143小结第15课插入数据15.1数据插入151.1插入完整的行151.2插入部分行15.1.3插入检索出的数据152从一个表复制到另一个表153小结第16课更新和删除数据16.1更新数据162删除数据163更新和删除的指导原则164小结第17课创建和操纵表17.1创建表17.1.1表创建基础17.12使用NULL值17.1.3指定默认值17.2更新表17.3删除表174重命名表17.5小结第18课使用视图18.1视图18.1.1为什么使用视图18.12视图的规则和限制182创建视图18.2.1利用视图简化复杂的联结1822用视图重新格式化检索出的数据1823用视图过滤不想要的数据1824使用视图与计算字段183小结第19课使用存储过程19.1存储过程192为什么要使用存储过程19.3执行存储过程194创建存储过程19.5小结第20课管理事务处理20.1事务处理20.2控制事务处理202.1使用 ROLLBACK202.2使用 COMMIT2023使用保留点203小结第21课使用游标21.1游标212使用游标212.1创建游标2122使用游标2123关闭游标213小结第22课高级SQL特性22.1约束221.1主键2212外键2213唯一约束2214检查约束222索引23触发器224数据库安全225小结附录A样例表脚本A.1样例表A.2获得样例表A21下载可供使用的数据文件A22下载 DBMS SQL脚本附录B流行的应用程序B1使用 Apache Open Office BaseB2使用 Adobe cold fusionB.3使用BMDB2B.4使用 MariaDBB5使用 Microsoft accessB6使用 Microsoft ASPB7使用 Microsoft asPnetB8使用 Microsoft QueryB9使用 Microsoft SQL Server(包括 Microsoft SQL Server Express)B.10使用 MySQLB.11使用 OracleB.12使用 Oracle ExpressB.13使用PHPB14使用 PostgresQlB15使用 SQLiteB.16配置ODBC数据源附录CSQL语句的语法C1 ALTER TABLEC, 2 COMMITC 3 CREATE INDEXC 4 CREATE PROCEDUREC, 5 CREATE TABLEC 6 CREATE VIEWC7 DELETEC 8 DROPC, 9 INSERTC10 INSERT SELECTC 11 ROLLBACKC12 SELECTC 13 UPDATE附录DSQL数据类型D.1字符串数据类型D2数值数据类型D.3日期和时间数据类型D4二进制数据类型附录ESQL保留字常用SQL语句速查引言SQL是使用最为广泛的数据库语言。不管你是应用开发者、数据库管理员、Web应用设计师、移动应用开发人员,还是只使用 MicrosoftOffice,掌握良好的SQL知识对用好数据库都是很重要的本书可以说是应需而生。我讲授了多年的Web应用开发,学生们经常要求我推荐一些SQL图书。SQL方面的书很多,有的其实很不错,但它们都有一个共同的特点,就是讲授的内容太多了,多数人其实不需要了解那么多。很多图书讲的不是SQL本身,而是从数据库设计、规范化到关系数据库理论以及管理问题等,事无巨细都讲一通。当然,这些内容也很重要,但大多数读者仅想学习SQL,他们未必感兴趣。因此,我找不到合适书籍推荐给学生,只好把在谋堂上给学生讲授的SQL知识汇编成了本书。本书将讲授读者需要了解的SQL知识,从简单的数据检索入手,逐步过渡到一些较为复杂的内容,如联结、子查询、存储过程、游标、触发器以及表约束等。读者将从本书中循序渐进、系统而直接地学到SQL的知识和技巧本书写到了第4版,它已经教会了英语国家近30万的读者使用SQL,并且还翻译出版了十多种其他语言的版本。现在轮到你了,让我们翻到第课,开始学习吧。你将很快编写出世界级的SQL。读者对象本书适合以下读者SQL新于;希望快速学会并熟练使用SQL希望知道如何使用SQL开发应用程序;·希望在无人帮助的情况下有效而快速地使用SQL,本书涵盖的DBMs般来说,本书中所讲授的SQL可以应用到任何数据库管理系统(DBMS)。但是,各种SQL实现不尽相同,本书介绍的SQL主要适用于以下系统(需要时会给出特殊说明和注释)Apache Open office BaseIBM DB2Microsoft accessMicrosoft SQL Server (Ef Microsoft SQL Server Express )MariaDBMySQL;Oracle(包括 Oracle Express);· PostgreSQLSQLite本书中的所有数据库示例(或者创建数据库示例的SQL脚本例子)对于这些DBMS都是适用的,它们可以在本书的网页htp/ / forta con/ books/0672336073/上获得。本书约定本书采用等宽字体表示代码,读者输入的文本与应该出现在屏幕上的文本也都以等宽字体给出。如:It will look like this to mimic the way text looks on your screen变量和表达式的占位符用斜体表示,你可以用具体的值代替它。代码行前的箭头()表示代码太长,上一行容纳不下。在符号后输入的所有字符都应该是前一行的内容。说明给出上下文讨论中比较重要的信息。提示就某任务给出建议或更简单的方法。注意提醒可能出现的问题,避免出现事故新术语清晰定义重要的新词汇输入V读者可以自己输入的代码,通常紧挨着代码出现。输出V强调某个程序执行时的输出,通常出现在代码后分析V对程序代码进行逐行分析。致谢感谢Sams出版团队这些年来对我的支持、奉献和鼓励。特别要感谢 Mark taber,他促成了这本早就该更新的书,建议并帮助对书中的代码进行着色,更增加了新版的可读性,提升了书的价值感谢我的同事 Greg Wilson,他为本书做了仝面的技术审校。感谢众多的读者对本书前三版提供的反馈。幸运的是,这些反馈多半是给与了我充分的肯定,在此深表感谢!这使得本版做了相应的改进和提高。欢迎大家对新版继续提出宝贵意见。有好几十所学校将本书作为其「和计算机科学课程的教材或参考书,在此特别表示感谢。能如此得到这些教授和老师的信任,对我是极大的鼓励,也让我诚惶诚恐。最后,要感谢购买了本书前几版的接近30万的广大读者,你们使本书不仅成为我自己最畅销的一本书,而且也成为SQL方面最畅销的书之你们持续的攴持是作者能得到的最宝贵的奖赏。ben forta第1课了解SQL这一课介绍SQL宄竟是什么,它能做什么事情11数据库基础你正在读这本SQL图书,这表明你需要以某种方式与数据库打交道。SQL正是用来实现这一任务的语言,因此在学习SQL之前,你应该对数据库及数据库技术的某些基本概念有所了解你可能还没有意识到,其实自己一直在使用数据库。每当你从电子邮件地址簿里査找名宇时,就是在使用数据库。你在网站上进行搜索,也是在使用数据库。你在作中登录网络,也需要依靠数据库验证用户名和密码。即使是在自动取款机上使用ATM卡,也要利用数据库进行密码验证和查询余额。虽然我们一直都在使用数据库,但对究竞什么是数据库并不十分清楚。更何况人们可能会使用相同的数据库术语表示不同的事物,进一步加剧了这种混乱。因此,我们首先给出一些最重要的数据库术语,并加以说明提示:基本概念回顾后面是一些基本数据库概念的简要介绍。如果你已经具有一定的数据库经验,可以借此复习巩固一下;如果你刚开始接触数据库,可以由此∫解必需的基本知识。理解数据库概念是掌握SQL的重要前提,如果有必要,你或许还应该参阅其他一些有关数据库基础知识的书籍11.1数据库数据库这个术语的用法很多,但就本书而言(从SαL的角度来看),数据库是一个以某种有组织的方式存储的数据集合。最简单的办法是将数据库想象为一个文件柜。这个文件柜是一个存放数据的物理位置,不管数据是什么,也不管数据是如何组织的数据库( database)保存有组织的数据的容器(通常是一个文件或一组文件注意:误用导致混淆人们通常用数据库这个术语来代表他们使用的数据库软件,这是不正确的,也因此产生了许多混淆。确切地说,数据库软件应称为数据库管理系统(即DBMs)。数据库是通过DBMS创建和操纵的容器,而具体它究竟是什么,形式如何,各种数据库都不一样。11.2表你往文件柜里放资料时,并不是随便将它们扔进某个抽屜就完事了,而是在文件柜中创建文件,然后将相关的瓷料放入特定的文件中。在数据库领域中,这种文件称为表。表是一种结构化的文件,可用来存储某种特定类型的数据。表可以保存顾客清单、产品目录,或者其他信息清单。表(tab|e)某种特定类型数据的结构化清单。这里的关键一点在于,存储在表中的数据是同一种类型的数据或清单。决不应该将顾客的清单与订单的清单存储在同一个数据库表中,否则以后的检索和访问会很困难。应该创建两个表,每个清单一个表。数据库中的每个表都有一个名字来标识自己。这个名字是唯一的,即数据库中没有其他表具有相同的名字。说明:表名使表名成为唯一的,实际上是数据库名和表名等的组合。有的数据库还使用数据库拥有者的名字作为唯一名的一部分。也就是说,虽然在相同数据库屮不能两次使用相同的表名,但在不同的数据库屮完全可以使用相同的表名。表具有一些特性,这些特性定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。描述表的这组信息就是所谓的模式( schema),模式可以用来描述数据库中特定的表,也可以用来描述整个数据库(和其中表的关系模式关于数据库和表的布局及特性的信息。11.3列和数据类型表由列组成。列存储表中某部分的信息。列( column)表中的一个字段。所有表都是由一个或多个列组成的。理解列的最好办法是将数据库表想象为一个网格,就像个电子表格那样。网格中每一列存储着某种特定的信息、。例如,在顾客表中,一列存储顾客编号,另一列存储顾客姓名,而地址、城市、州以及邮政编码全都存储在各自的列中。提示:分解数据正确地将数据分解为多个列极为重要。例如,城市、州、邮政编码应该总是彼此独立的列。通过分解这些数据,才有可能利用特定的列对数据进行分类和过滤(如找出特定州或特定城市的所有顾客)。如果城市和州组合在一个列中,则按州进行分类或过滤就会很困难。你可以根据自己的具体需求来决定把数据分解到何种程度。例如,一般可以把门牌号和街道名一起存储在地址里。这没有问题,除非你哪天想用街道名来排序,这时,最好将门牌号和街道名分开。数据库中每个列都有相应的数据类型。数据类型( datatype)定义了列可以存储哪些数据种类。例如,如果列中存储的是数字(或许是订单中的物品数),则相应的数据类型应该为数值类型。如果列屮存储的是日期、文本、注释、金额等,则应该规定好恰当的数据类型。数据类型所允许的数据的类型。每个表列都有相应的数据类型,它限制(或允许)该列屮存储的数据。数据类型限定了可存储在列屮的数据种类(例如,防止在数值字段屮录入字符值)。数据类型还帮助正确地分类数据,并在优化磁盘使用方面起重要的作用。因此,在创建表时必须特别关注所用的数据类型。注意:数据类型兼容数据类型及其名称是SQL不兼容的一个主要原因。虽然大多数基本数据类型得到了一致的支持,但许多高级的数据类型却没有。更糟的是,偶然会有相同的数据类型在不同的DBMS中具有不同的名称。对此用户毫无办法,重要的是在创建表结构时要记住这些差异114行表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。例如,顾客表可以每行存储一个顾客。表中的行编号为记录的编号。行(row)表中的一个记录说明:是记录还是行?你可能听到用户在提到行时称其为数据库记录( record)。这两个术语多半是可以交替使用的,但从技术上说,行才是正确的术语11.5主键表中每一行都应该有一列(或几列)可以唯一标识自己。顾客表可以使用顾客编号,而订单表可以使用订单D。雇员表可以使用雇员D或员社会安全号。主键( primary key)一列(或一组列),其值能够唯一标识表屮每一行。唯一标识表中每行的这个列(或这几列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行就极为困难,因为你不能保证操作只涉及相关的行。提示:应该总是定义主键虽然并不总是需要主键,但多数数据库设计者都会保证他们创建的每个表具有一个主键,以便于以后的数据操作和管理。表中的任何列都可以作为主键,只要它满足以下条件:任意两行都不具有相同的主键值;每一行都必须具有一个主键值(主键列不允许NULL值)主键列中的值不允许修改或更新;主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)主键通常定义在表的一列上,但并不是必需这么做,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)还有一种非常重要的键,称为外键,我们将在第12课中介绍
下载地址
用户评论