SQL基本语句课件_第1页
SQL基本语句课件_第2页
SQL基本语句课件_第3页
SQL基本语句课件_第4页
SQL基本语句课件_第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语言是一种数据定义语言。所谓数据定义语言,是指用于定义数据格式的语言。这里所说的数据格式是存储数据的结构以及所存储数据项之间的关系。数据格式定义包括创建格式、删除格式、更改格式,而对应的语句分别为CREATE语句、DROP语句和ALTER语句。REVOKE语句是处理权限的主要语句。CREATE语句、DROP语句、ALTER语句和REVOKE等语句一般以一组语句的形式使用。7.2.2DROP语句:删除数据库在SQLServer中,DROP语句和CREATE语句是对应的,两者甚至在形式和数目上都很相同,如CREATEDATABASE语句对应于DROPDATABASE语句。不过,DROP语句一般都是较为简单的,不像CREATE语句那样具有复杂的语法结构。一般情况下,DROP语句的格式如下。DROP对象对象名前面提到过,删除数据库对象database_demo的DROP语句如下。DROPDatabasedatabase_demo7.2.3ALTER语句:修改数据库ALTER语句的操作和CREATE语句类似,如创建表的CREATETABLE语句中定义了列后,可以用ALTERTABLE语句来修改列,而这两者列的定义是类似的:“列名数据类型约束”。由于前面没有介绍CREATE语句,所以这里也不便详细介绍ALTER语句。与CREATE语句一样,将在使用时介绍。其实,ALTER语句相当于DROP语句+CREATE语句。也就是说,一个ALTER操作相当于执行一次DROP操作和一次CREATE操作,有些类似于删除重建的概念。所谓删除重建包括两层意思,一是删除重建结构,这一点是可以理解的,也较容易实现;二是删除重建数据,这一点就较为复杂了。7.2.4REVOKE语句:安全性语句上面介绍的语句都是关于数据库对象的,这里的REVOKE语句则是关于安全性的。REVOKE语句、GRANT语句以及DENY等语句定义了对象的权限。关于权限,将在后文中叙述,这里只是强调说明权限也是数据定义的一部分。7.3数据操纵语言在使用数据定义语言(DDL)定义了数据存储的格式和位置后,用户就可以使用数据操纵语言(DML)来操作定义的对象。数据操纵语言主要包括数据查询与数据更新。其中,数据查询主要是SELECT语句,而数据更新则包括插入(INSERT语句)、更新(UPDATE语句)和删除(DELETE语句)。这4类语句可以简称为“查增改删”。7.3.2INSERT语句:插入数据在SQLServer中,INSERT语句负责向数据库中插入记录。在获取一条新的记录后,就需要使用INSERT语句向数据库插入一个新行(记录)。7.3.4Delete语句:删除数据如果表中的数据不再使用或已经备份完毕,那么为了释放服务器的资源,就需要及时删除表中的数据。在SQLServer中,主要使用如下Delete语句删除表中的记录。7.4.1WHERE子句:给出条件语句在SQLServer中,WHERE子句可以用于SELECT语句、DELETE语句及UPDATE语句中。7.4.2带AND关键字的WHERE子句在介绍AND关键字之前,需要介绍一下布尔表达式。所谓布尔表达式是指表达式的各成分由关系连接符连接,而且表达式的值为TRUE或FALSE。其中,用于连接布尔表达式的连接词有NOT(非)、AND(积)和OR(和)3个。7.4.3GROUPBY子句:分组语句GROUPBY子句具有符合ISO的语法和不符合ISO的语法两种结构。在一条SELECT语句中只能使用一种语法样式,在这里,用户使用符合ISO的语法,因为不符合ISO语法的目的是为了实现向后兼容。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.7DISTINCT子句:去掉重复记录提到关键字DISTINCT,就不得不提到关键字ALL。ALL是指结果集中可以包含重复行,而且它是默认值。而关键字DISTINCT可从SELECT语句的结果集中消除重复的行。不过,如果没有指定DISTINCT,将返回所有行(包括重复的行)。对于关键字DISTINCT来说,空值被认为是相互重复的内容。当SELECT语句中包括DISTINCT时,不论遇到多少个空值,结果中只返回一个NULL。用户不要误会,DISTINCT关键字中所谓重复的行,并不是表中的记录完全重复,而是记录中关键字DISTINCT指定的各列重复。如果记录都相同,那么也就不能满足前面介绍的关系数据库的数据完整性的要求了。7.4.8BETWEEN子句:指定范围条件在SQLServer中,BETWEEN子句是较为重要的子句,用于指定一个范围条件,其语法结构如下。test_ExpressionBETWEENBEGIN_ExpressionANDEND_Expression其实,该子句相当于数学中的两个不等式,如下。BEGIN_Expression=<test_Expression<=END_Expression7.4.10IN子句:值包含在列表中在SQLServer中,IN子句主要用于确定指定列的值在子查询或列表中。IN子句的语法结构如下。test_ExpressionIN(subquery|Expression[,n])其中,test_Expression、subquery、Expression的类型必须相同。如果test_Expression的值与subquery所返回的任何值相等或与逗号分隔列表中的任何Expression相等,那么比较的结果值为TRUE,否则,结果值为FALSE。7.4.11NOTIN子句:值不包含在列表中当然,IN子句与LIKE子句一样,也可以和NOT语句配合使用。NOT关键字将IN子句的值取反,即如果IN语句为TRUE,那么NOTIN子句则为FALSE。这里之所以单独列出NOTIN,是因为用户经常用到NOTIN,便于用户查询本书。7.4.13COMPUTEBY子句:计算统计信息COMPUTEBY子句与COMPUTE子句类似,也可能在后续版本中删除,所以不建议使用。如果使用COMPUTEBY子句,那么必须使用ORDERBY子句。表达式的列必须与在ORDERBY中的列相同或是其子集,并且顺序相同。例如,如果ORDERBY子句为ORDERBYa,b,c,那么COMPUTE子句的可用形式如下。COMPUTEBYa,b,c。COMPUTEBYa,b。COMPUTEBYa。7.4.14列的别名前面的许多示例都用到了列的别名,而且在前面介绍其他类型时,笔者也介绍了列的别名类型。其实,列的别名在SELECT语句中经常用到。其中,列的别名类型主要由AS和=来命名。基于前面的介绍,下面将给出一个在查询中使用列别名的示例。7.5关系连接在SELECT语句涉及多个表时,可以用子查询解决。SQLServer还提供了一组关键字来处理多个表的查询,这组关键字组成了关系连接的核心。所谓关系连接,就是连接查询,是一种不同于子查询使用多个表的查询方式。可以说,前面介绍的SQL语句都是基础语句,在工作中较少用到那样简单的语句。连接查询是最常用、最重要的查询方式。7.5.2笛卡尔积在介绍连接查询时提到过,SQLServer将参与连接查询的表的所有记录进行组合并形成笛卡尔积(交叉连接)。根据上面介绍的连接查询的执行步骤,用户不难了解生成和实现笛卡尔积的方法:在连接查询中,将WHERE子句、GROUPBY子句、ORDERBY子句以及SELECT语句中的聚合函数等都省略,直接使用表中的记录组合形成笛卡尔积。7.5.3内部连接内部连接(INNERJOIN)是相对于外部连接而言的,内部连接用来组合两个或多个表的记录。通常内部连接按照连接条件,从生成的结果集中删除在其他表中没有被匹配的记录。根据内部连接比较方式的不同,可以分为等值连接、自然连接和不等连接。7.5.4使用表别名表的别名是连接查询中经常用到的处理表的方法。将表名定义为一个简单的别名,解决了编写SQL语句时语句过长的问题。其中,表别名的规则与前面介绍的列的别名相同。这里仅给出一个简单的SQL示例。USEdatabase_demoGOSELECTtb1.*FROMtable_1AStb17.5.5外部连接用户可能不理解,查询就是为了寻找符合条件的记录,那为什么还需要外部连接。举一个简单的应用实例:假设某班级的学生信息存储在student表中。最近,学校评定了奖学金,获奖的学生信息存储在prize表中。现在需要查询该班学生获取了奖学金和没获奖学金的信息。要实现这个目标,需要进行如下工作。1.获得数据2.普通SELECT语句3.外部连接7.5.6自连接这里介绍的自连接是连接查询的一个特例。所谓自连接,就是表与自身的连接,是内部连接的一种。自连接可以使用户同时操作同一个表的不同行,其使用较少,但是很重要。自连接适用于如下情况:某班级学生表student中包含了该班学生今年选修的课程以及课程分数。现在,需要查看同一个学生的不同学科的成绩。实现该示例的具体操作步骤如下。(1)表Student的结构和记录由如下SQL语句生成。(2)执行如下SQL语句,查看同一个学生的不同学科的成绩。7.5.7联合查询联合查询也存在左查询与右查询的概念,并且这两个概念与左表右表类似。联合查询的运算分为并(UNION)、交(INTERSECT

温馨提示

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

评论

0/150

提交评论