第07章基本SQL语句ppt课件_第1页
第07章基本SQL语句ppt课件_第2页
第07章基本SQL语句ppt课件_第3页
第07章基本SQL语句ppt课件_第4页
第07章基本SQL语句ppt课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章基本SQL语句,Transact-SQL语言是Microsoft为SQLServer开发的一种标准化SQL语言的实现,也是SQLServer的核心。不过,Transact-SQL并非严格按照标准化SQL语言实现,而是对标准化SQL语言进行了一定程度上的裁剪和拓展。本章主要介绍Transact-SQL语言的基本语句。,7.1Transact-SQL语言,Transact-SQL语言是对标准SQL语言的实现。不过,由于不同的数据库系统,厂商实现的SQL语言并不相同,这就导致了数据库的具体SQL语言间存在一定程度上的差异。所以,用户在使用SQL语言时,一定要明确特定SQL语言的特殊性,而且应尽量使用标准化SQL语句,而不要去使用那些特殊性的SQL语句。,7.2数据定义语言,Transact-SQL语言是一种数据定义语言。所谓数据定义语言,是指用于定义数据格式的语言。这里所说的数据格式是存储数据的结构以及所存储数据项之间的关系。数据格式定义包括创建格式、删除格式、更改格式,而对应的语句分别为CEATE语句、DROP语句、ALTER语句。REVOKE语句是处理权限的主要语句。CEATE语句、DROP语句、ALTER语句和REVOKE等语句并不是一个语句,而是一组语句。,7.2.1CREATE语句:创建数据库,CREATE语句主要用于数据定义,包括定义数据的格式,以及其他属性。其中,数据定义的格式和属性限制了插入数据库中的数据的格式。所以,在数据库设计时,数据定义阶段的工作很重要。为了做好数据定义工作,在定义数据结构前,用户需要对企业的常用数据的格式进行分析。,7.2.2DROP语句:删除数据库,在SQLServer里,DROP语句和CREATE语句是对应的,二者甚至在形式和数目上都很相同。如CREATEDATABASE语句对应于DROPDATABASE语句。不过,DROP语句一般都是较为简单的,不像CREATE语句那样具有复杂的语法结构。一般情况下,DROP语句的格式如下。DROP对象对象名,7.2.3ALTER语句:修改数据库,从ALTER语句的含义来看,ALTER语句是很友好的。因为ALTER语句能够在定义对象后,对对象进行修改。不过,实际的情况却并不如想象中那么好。在对象设计阶段,可以使用ALTER修改,但是在现实工作中,用户最好不要使用ALTER语句。该语句可能造成数据的丢失或数据精度的降低。,7.2.4REVOKE语句:安全性语句,上面介绍的语句都是关于数据库对象的,这里的REVOKE语句则是关于安全性的。REVOKE语句、GRANT语句以及DENY等语句定义了对象的权限。关于权限,将在后文中叙述。这里只是强调说明权限也是数据定义的一部分。,7.3数据操纵语言,在使用数据定义语言(DDL)定义了数据存储的格式和位置后,用户就可以使用数据操纵语言(DML)来操作定义的对象。数据操纵语言主要包括数据查询与数据更新,其中,数据查询主要是SELECT,而数据更新则包括插入(INSERT语句)、更新(UPDATE语句)、删除(DELETE语句)。这四类语句可以简称为“查增改删”。,7.3.1SELECT语句:查询数据,所有基于数据库的应用系统都会使用SELECT语句从数据库中提取数据,并将获得的数据按用户的要求输出给用户。根据用户使用具体SELECT语句的不同,数据库从不同角度向用户展示数据库中的数据。SELECT语句执行后,将返回一组记录,而这组记录就是记录集(结果集)。不过,SELECT语句是很复杂的。,7.3.2INSERT语句:插入数据,在SQLServer中,INSERT语句负责向数据库中插入记录。在获取一条新的记录后,就需要使用INSERT语句向数据库插入一个新行(记录)。,7.3.3UPDATE语句:更新数据,在使用INSERT语句向数据库中插入数据后,数据就保存到了数据库中。不过,如果外界数据发生变化,就需要对数据库中的数据进行更新。在SQLServer中,主要使用UPDATE语句更新数据库中的数据,特别是更新部分字段。与INSERT不同,这里并不插入新行(记录),而是修改原行(记录)。,7.3.4Delete语句:删除数据,如果表中的数据不再使用或已经备份完毕,那么为了释放服务器的资源,就需要及时删除表中的数据。,7.4其他常用语句,上面介绍了SELECT、INSERT、UPDATE、DELETE等语句的基本形式。下面将介绍一些常用的子句,这些子句在与上述4个语句配合使用时,可以实现更加强大的数据操作功能。1带WHERE子句的SELECT语句2带WHERE子句的UPDATE语句3带WHERE子句的DELETE语句,7.4.1WHERE子句:给出条件语句,在SQLServer中,WHERE子句可以用于SELECT语句、DELETE语句、UPDATE语句中。1带WHERE子句的SELECT语句2带WHERE子句的UPDATE语句3带WHERE子句的DELETE语句,7.4.2带AND关键字的WHERE子句,在介绍AND关键字之前,需要介绍一下布尔表达式。所谓布尔表达式是指表达式的各成分由关系连接符连接,而且表达式的值为TRUE或FALSE。其中,用于连接布尔表达式的连接词有NOT(非)、AND(积)、OR(和)3个。这里将以AND为例,介绍这3个连接词。,7.4.3GROUPBY子句:分组语句,GROUPBY子句具有符合ISO的语法和不符合ISO的语法两种结构。在一条SELECT语句中只能使用一种语法样式,在这里,用户使用符合ISO的语法,因为不符合ISO语法的目的是为了实现向后兼容。这里仅介绍符合ISO的语法,如下。1不带WHERE子句仅含GROUPBY子句的SELECT语句2带WHERE子句和GROUPBY子句的SELECT语句,7.4.4HAVING子句:分组条件,HAVING子句通常在GROUPBY子句中使用。如果不使用GROUPBY子句,那么HAVING的行为与WHERE子句一样。不过,这种方式不推荐使用,因为有很多限制。HAVING子句的所有列都必须出现在SELECT语句的列表中。具体HAVING子句的用法大致分为以下几种情况。1带HAVING子句而不带WHERE子句的SELECT语句2带HAVING子句和WHERE子句的SELECT语句,7.4.5ORDERBY子句:排序语句,ORDERBY子句用在指定SELECT语句返回的结果集后,主要用于对结果集进行排序。在默认情况下,由SELECT语句返回结果集中的记录是按照表中记录的物理顺序排列的。,7.4.6TOP子句:查看前几条记录,TOP表达式可用在SELECT、INSERT、UPDATE和DELETE语句中。不过,TOP表达式主要用于SELECT语句中,其表达式语法结构如下。TOP(Expression)PERCENTWITHTIES,7.4.7DISTINCT子句:去掉重复记录,提到关键字DISTINCT,就不得不提到关键字ALL。ALL是指结果集中可以包含重复行,而且它是默认值。而关键字DISTINCT可从SELECT语句的结果集中消除重复的行。不过,如果没有指定DISTINCT,将返回所有行(包括重复的行)。,7.4.8BETWEEN子句:指定范围条件,在SQLServer中,BETWEEN子句是较为重要的字句,用于指定一个范围条件,其语法结构如下。test_ExpressionBETWEENBEGIN_ExpressionANDEND_Expression其实,该子句相当于数学中的两个不等式:BEGIN_Expression=test_Expression=END_Expression,7.4.9模糊查询LIKE子句,上面介绍WHERE子句时,说到了字符串比较的问题。不过,那种字符串比较主要是、=等关系运算符连接。在某种程度上,这些运算符都可以说是字符串的精确比较。在Transact-SQL中,还提供了LIKE子句用于字符串的模糊比较,即模糊匹配。,7.4.10IN子句:值包含在列表中,在SQLServer中,IN语句主要用于确定指定列的值在子查询或列表中。IN语句的语法结构如下。test_ExpressionIN(subquery|Expression,n),7.4.11NOTIN子句:值不包含在列表中,当然,IN语句与LIKE语句一样,也可以和NOT语句配合使用。NOT语句将IN语句的值取反,即如果IN语句为TRUE,那么NOTIN子句则为FALSE。这里之所以单独列出NOTIN,是因为用户经常用到NOTIN,便于用户查询本书。,7.4.12COMPUTE子句:用于生成统计信息,COMPUTE子句用于生成统计信息,并将统计信息显示在结果集的后面。COMPUTE子句的语法结构如下。COMPUTEAVG|COUNT|MAX|MIN|STDEV|STDEVP|VAR|VARP|SUM(Expression),nBYExpression,n,7.4.13COMPUTEBY子句:计算统计信息,COMPUTEBY子句与COMPUTE子句类似,也可能在未来版本中删除,所以不建议使用。如果使用COMPUTEBY,那么必须使用ORDERBY子句。表达式的列必须与在ORDERBY中的列相同或是其子集,并且顺序相同。例如,如果ORDERBY子句为ORDERBYa,b,c,那么COMPUTE子句的可用形式如下。COMPUTEBYa,b,c。COMPUTEBYa,b。COMPUTEBYa。,7.4.14列的别名,前面的许多示例都用到了列的别名,而且在前面介绍其他类型时,笔者也介绍了列的别名类型。其实,列的别名在SELECT语句中经常用到。其中,列的别名类型主要由AS和=来命名。基于前面的介绍,下面将给出一个在查询中使用列别名的示例。如下SQL语句将查询数据库database_demo的表,并使用别名显示查询到的字段。,7.5关系连接,在SELECT语句涉及到多个表时,可以用子查询解决。SQLServer还提供了一组关键字来处理多个表的查询,这组关键字组成了关系连接的核心。所谓关系连接,就是连接查询这是一种不同于子查询使用多个表的查询方式。可以说,前面介绍的SQL语句都是基础语句,在工作中较少用到那样简单的语句。连接查询是最常用、最重要的查询方式。,7.5.1连接查询介绍,既然两个表可以用于连接查询,那么两个表必须要有联系两个表之间存在相同意义的列。,7.5.2笛卡尔乘积,上面介绍连接查询时提到过,SQLServer将参与连接查询的表的所有记录进行组合并形成笛卡尔积(交叉连接)。根据上面介绍的连接查询的执行步骤,用户不难了解生成和实现笛卡尔积的方法:在连接查询中,将WHERE子句、GROUPBY子句、ORDERBY子句以及SELECT语句中的聚合函数等都省略,直接使用表中的记录组合形成笛卡尔积。,7.5.3内部连接,内部连接(INNERJOIN)是相对于外部链接而言的,内部连接用来组合两个或多个表的记录。通常,内部连接按照连接条件,从生成的结果集中删除在其他表中没有被匹配的记录。根据内部连接使用比较方式的不同,内部连接可以分为等值连接、自然连接、不等连接。,7.5.4使用表别名,表的别名是连接查询中经常用到的处理表的方法。将表名定义为一个简单的别名,解决了编写SQL语句时语句过长的问题。其中,表别名的规则与前面介绍的列的别名相同。这里仅给出一个简单的SQL示例。USEdatabase_demoGOSELECTtb1.*FROMtable_1AStb1,7.5.5外部连接,前面介绍的连接查询都是返回满足条件的记录。在工作中,用户可能遇到这种情况,即显示某一个表的全部内容(包括不符合连接条件的记录)。这个时候就需要用到外部连接,其可以使不符合条件的记录也出现在结果中。,7.5.6自连接,这里介绍的自连接是连接查询的一个特例。所谓自连接,就是表与自身的连接,是内部连接的一种。自连接可以使用户同时操作同一个表的不同行。它使用较少,但是很重要。自连接适用于如下场景:某班级学生表student中包含了该班学生今年选修的课程以及课程分数。现在,需要查看同一个学生的不同学科的成绩。,7.5.7联合查询,在Transact-SQL中,还有一类查询,叫联合查询。联

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论