《SQLServer2005数据库应用与开发教程 ch04 T-SQL数据库操作语句.ppt》由会员分享,可在线阅读,更多相关《SQLServer2005数据库应用与开发教程 ch04 T-SQL数据库操作语句.ppt(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社第4章 T-SQL数据库操作语句SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社教学目标教学重点教学过程3/14/20231SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社教学目标教学目标l掌握使用掌握使用DDL语句操作数据库、数据表、语句操作数据库、数据表、视图和索引的方法视图和索引的方法l掌握掌握SELECT以及各个子句的使用方法以及各个子句的使用方法l掌握掌握INSERT语句的使用方法语句的使用方法l掌握
2、掌握UPDATE语句的使用方法语句的使用方法l掌握掌握DELETE语句的使用方法语句的使用方法3/14/20232SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社教学重点教学重点lDDL语句操作数据库、数据表、视图和索语句操作数据库、数据表、视图和索引引lSELECT语句以及各个子句的使用方法语句以及各个子句的使用方法lINSERT语句的使用方法语句的使用方法lUPDATE语句的使用方法语句的使用方法lDELETE语句的使用方法语句的使用方法3/14/20233SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学
3、出版社教学过程教学过程4.1数据定义语言(DDL)4.2数据查询语句(SELECT语句)4.3数据操纵语言(DML)4.4T-SQL的可视化操作4.5习题3/14/20234SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.1数据定义语言(DDL)数据定义语言(数据定义语言(DDL:DataDefinitionLanguage)主要用于对数据库对象的创建、)主要用于对数据库对象的创建、修改和删除。其中数据库对象包括数据库、修改和删除。其中数据库对象包括数据库、表、视图、过程、触发器、函数等。表、视图、过程、触发器、函数等。DDL的语法非常简单,以
4、下是分别对三个的语法非常简单,以下是分别对三个DDL语句简单的解释。语句简单的解释。CREATE语句:用来创建新的数据库对象。语句:用来创建新的数据库对象。ALTER语句:用来修改已有对象的结构。语句:用来修改已有对象的结构。DROP语句:用来删除已有的数据库对象。语句:用来删除已有的数据库对象。3/14/20235SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.1.1操作数据库lT-SQL提供了对数据库管理的语句,包括创提供了对数据库管理的语句,包括创建数据库、修改数据库、删除数据库、分建数据库、修改数据库、删除数据库、分离数据库和附加数据库
5、等。离数据库和附加数据库等。l1.创建数据库l2.修改数据库l3.删除数据库3/14/20236SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社1.创建数据库【例例4-1】创建创建“Example”数据库。数据库。CREATEDATABASEExample“【例例4-2】创建创建“实例数据库实例数据库”数据库。其中主数据文件大小为数据库。其中主数据文件大小为10MB,最大值不受限,每次增量为最大值不受限,每次增量为1MB;事务日志文件大小为;事务日志文件大小为1MB,最大值,最大值不受限,文件每次增量不受限,文件每次增量10。CREATEDATAB
6、ASE实例数据库实例数据库ONPRIMARY(NAME=实例数据库实例数据库,FILENAME=D:数据库数据库实例数据库实例数据库实例实例数据库数据库.mdf,SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=1MB)LOGON(NAME=实例数据库实例数据库_LOG,FILENAME=D:数据库数据库实例数据库实例数据库实例实例数据库数据库.ldf,SIZE=1MB,MAXSIZE=UNLIMITED,FILEGROWTH=1%)GO3/14/20237SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社【例例4-3】创
7、建名为创建名为“DB1”的数据库,要求的数据库,要求同时创建同时创建3个数据文件。其中主数据文个数据文件。其中主数据文件为件为10MB,最大大小为,最大大小为100MB,增量,增量为为10MB;次要数据文件属于;次要数据文件属于F_Group文件组,文件大小为文件组,文件大小为10MB,最大值不受最大值不受限,增量为限,增量为10。事务日志文件大小为。事务日志文件大小为20MB,最大值不受限,每次增量为,最大值不受限,每次增量为5MB。CREATEDATABASEDB1ONPRIMARY(NAME=DB1,FILENAME=D:数据库数据库DB1DB1.mdf,SIZE=10MB,MAXSIZ
8、E=100MB,FILEGROWTH=10MB),FILEGROUPF_Group(NAME=DB2,FILENAME=D:数据库数据库DB1DB2.Ndf,SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%)LOGON(NAME=DB1_LOG,FILENAME=D:数据库数据库DB1DB1.ldf,SIZE=20MB,MAXSIZE=UNLIMITED,FILEGROWTH=5MB)GO3/14/20238SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社2.修改数据库ALTERDATABASE语句可以对创建的的
9、数据库进行修改,包括添加或语句可以对创建的的数据库进行修改,包括添加或删除文件和文件组,更改文件和文件组的属性,例如更改文件的名称、删除文件和文件组,更改文件和文件组的属性,例如更改文件的名称、大小和增量方式。大小和增量方式。【例例4-4】向所创建的向所创建的“Example”中增加一个次要数据文件。文件的逻中增加一个次要数据文件。文件的逻辑名为辑名为Exa,物理名为物理名为Exa.ndf,大小为大小为20MB,最大大小不受限制最大大小不受限制,每每次增加次增加5MB。ALTERDATABASEExampleADDFILE(NAME=Exa,FILENAME=C:ProgramFilesMic
10、rosoftSQLServerMSSQLDataexa.ndf,SIZE=20MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%)GO3/14/20239SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社【例例4-5】向所创建的向所创建的“Example”中增加一个日志文件数据文件。文件的逻辑名中增加一个日志文件数据文件。文件的逻辑名为为Exa_1,物理名为物理名为Exa_1.ldf,大小为大小为10MB,最大大小不受限制最大大小不受限制,每次增加每次增加10MB。ALTERDATABASEExampleADDLOGFILE(NA
11、ME=Exa_1,FILENAME=C:ProgramFilesMicrosoftSQLServerMSSQLDataexa_1.ldf,SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=10MB)GO【例例4-6】删除名为删除名为“Exa_1.ldf”的日志文件。的日志文件。ALTERDATABASEExampleREMOVEFILEExa_1GO3/14/202310SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社【例例4-7】将数据库将数据库“DB1”的大小修改为的大小修改为100MB。ALTERDATABASED
12、B1MODIFYFILE(NAME=DB1,SIZE=100MB)GO【例例4-8】将数据库将数据库“DB1”重新命名为重新命名为“DataBase1”ALTERDATABASEDB1MODIFYNAME=DATABASE1GO3/14/202311SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社3.删除数据库DROPDATABASE语句从语句从SQLServer中删除一个中删除一个或者多个数据库。用户只能根据自己的权限删除或者多个数据库。用户只能根据自己的权限删除数据库,不能删除当前打开的数据库,不能删除数据库,不能删除当前打开的数据库,不能删除
13、系统数据库,数据库删除后不可恢复。系统数据库,数据库删除后不可恢复。删除数据库的语法如下删除数据库的语法如下:DROPDATABASEdatabase_name,n【例例4-9】删除删除“Example”数据库数据库DROPDATABASEexampleGO3/14/202312SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.1.2操作数据表数据表是数据库的非常重要的对象,对数据数据表是数据库的非常重要的对象,对数据表的操作也使用表的操作也使用DDL语句,包括对表的创语句,包括对表的创建、修改和删除,以及添加表的约束。建、修改和删除,以及添加表
14、的约束。1.创建表2.修改表3.删除表3/14/202313SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社1.创建表【例例4-10】在在“实例数据库实例数据库”创建创建“学生表学生表”。USE实例数据库实例数据库CREATETABLE学生表学生表(学号学号varchar(12)NOTNULL,姓名姓名nchar(20)NOTNULL,性别性别char(2)NULL,出生日期出生日期smalldatetimeNULL,入学日期入学日期smalldatetimeNULLDEFAULT(2005.08.01),院系名称院系名称varchar(20)NU
15、LL,)GO3/14/202314SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社2.修改表【例例4-11】为为“学生表学生表”添加添加“备注备注”列。列。USE实例数据库实例数据库ALTERTABLE学生表学生表ADD备注备注textNULLGO【例例4-12】将将“学生表学生表”的的“学号学号”设置为主键。设置为主键。USE实例数据库实例数据库ALTERTABLE学生表学生表ADDCONSTRAINTPK_IDPRIMARYKEY(学号学号)GO3/14/202315SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版
16、社清华大学出版社如果实例数据库存在另一个表如果实例数据库存在另一个表“选课选课”表,包括表,包括“学号学号”、“课程号课程号”和和“分数分数”三列,其中的三列,其中的“学号学号”列的定义为列的定义为varchar(12)NOTNULL。并且已经设置。并且已经设置“学号学号”和和“课程号课程号”为该表的主键。则可以为为该表的主键。则可以为“选课表选课表”的的“学号学号”列添加外键。列添加外键。【例例4-13】为为“选课表选课表”的的“学号学号”列添加外键,外键的名列添加外键,外键的名称为称为“fk_学号学号”,对应了,对应了“学生表学生表”的的“学号学号”。USE实例数据库实例数据库ALTERT
17、ABLE选课表选课表ADDCONSTRAINTfk_学号学号FOREIGNKEY(学号学号)REFERENCES学生表学生表(学号学号)GO3/14/202316SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社3.删除表DROPTABLE语句用于从数据库中删除表,同时删语句用于从数据库中删除表,同时删除该表的所有数据、索引,触发器、约束和权限除该表的所有数据、索引,触发器、约束和权限规范。规范。DROPTABLE不能用于有不能用于有FOREIGNKEY约束引用的表。必须先删除引用的约束引用的表。必须先删除引用的FOREIGNKEY约束或者引用的表。
18、不能使用约束或者引用的表。不能使用DROPTABLE语句删除系统表。语句删除系统表。语法如下:语法如下:DROPTABLEtable_name3/14/202317SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.1.3操作视图语句使用使用T-SOL可以创建、修改和删除视图。可以创建、修改和删除视图。1.创建视图2.修改视图3.删除视图3/14/202318SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社1.创建视图【例例4-14】创建视图创建视图“view_1”,该视图包含三个列,分别该视图包含三个
19、列,分别来自来自“学生表学生表”的的“姓名,姓名,“课程表课程表”的的“课程名课程名”列列,“选课表选课表”的的“分数分数”分数列。分数列。CREATEVIEWview_1ASSELECT学生表学生表.姓名姓名,课程表课程表.课程名课程名,选课表选课表.分数分数FROM课程表课程表INNERJOIN选课表选课表ON课程表课程表.课程号课程号=选课表选课表.课程号课程号INNERJOIN学生表学生表ON选课表选课表.学号学号=学生表学生表.学号学号GO3/14/202319SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社2.修改视图【例例4-15】修
20、改视图修改视图“view_1”。ALTERVIEWview_1ASSELECT学生表学生表.学号学号,学生表学生表.姓名姓名,课程表课程表.课程名课程名,选课选课表表.分数分数FROM课程表课程表INNERJOIN选课表选课表ON课程表课程表.课程号课程号=选课表选课表.课程号课程号INNERJOIN学生表学生表ON选课表选课表.学号学号=学生表学生表.学号学号GO修改后的视图修改后的视图“view_1”又添加了又添加了“学生表学生表”的的“学号学号”列。列。3/14/202320SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社3.删除视图DROP
21、VIEW语句删除视图。语句删除视图。【例例4-16】删除视图删除视图“view_1”DROPVIEWview_13/14/202321SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.1.4 管理索引语句l1.创建索引l2.修改索引l3.删除索引3/14/202322SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社1.创建索引【例例4-17】在在“学生表学生表”的的“姓名姓名”列上创建非聚集索引。列上创建非聚集索引。USE实例数据库实例数据库CREATEINDEXname_idxON学生表学生表(姓名
22、姓名)GO【例例4-18】在在“学生表学生表”的的“学号学号”列上创建唯一聚集索引。列上创建唯一聚集索引。USE实例数据库实例数据库CREATEUNIQUECLUSTEREDINDEXid_idxON学生表学生表(学号学号)GO【例例4-19】在在“选课表选课表”的的“学号学号”和和“课程号课程号”列上创建组合索引。列上创建组合索引。USE实例数据库实例数据库CREATEINDEXindex_1ON选课表选课表(学号学号,课程号课程号)GO3/14/202323SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社2.修改索引【例例4-20】修改修改“学
23、生表学生表”的索引。的索引。USE实例数据库实例数据库ALTERINDEXid_idxON学生表学生表REBUILDWITH(FILFACTOR=80,SORT_IN_TEMPDB=ON)GO【例例4-21】禁用禁用“学生表学生表”的非聚集索引。的非聚集索引。USE实例数据库实例数据库ALTERINDEXname_idxON学生表学生表DISABLEGO3/14/202324SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社3.删除索引DROPINDEX语句删除索引。语句删除索引。【例例4-22】删除删除“选课表选课表”的索引。的索引。USE实例数据
24、库实例数据库DROPINDEX选课表选课表.index_1GO3/14/202325SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.2数据查询语句(数据查询语句(SELECT语句)语句)SELECT语句是语句是SQLServer中使用最频繁,功能最强大的语句。用户可中使用最频繁,功能最强大的语句。用户可以使用最简单不包括任何条件的查询,也可以使用添加了多个子句的以使用最简单不包括任何条件的查询,也可以使用添加了多个子句的查询。查询。SELECT语句的子句包括以下几个:语句的子句包括以下几个:SELECT:指定从数据库中要查询的列。指定从数据库中
25、要查询的列。INTO:创建新表,并将查询的结果行插入到新表中创建新表,并将查询的结果行插入到新表中FROM:指定要查询的数据所在的表。指定要查询的数据所在的表。WHERE:指定查询返回的数据要符合的条件。:指定查询返回的数据要符合的条件。ORDERBY:指定查询的排序条件。:指定查询的排序条件。GROUPBY:指定查询结果的分组条件。:指定查询结果的分组条件。HAVING:分组后查询要符合的条件。:分组后查询要符合的条件。在在SELECT语句中经常使用的还有语句中经常使用的还有UNION、COMPUTE、FOR、OPTION等关键词。等关键词。3/14/202326SqlServer2005数
26、据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.2.1 SELECT语句的简单使用1.简单查询列(SELECT和FROM子句)SELECT子句指定了要返回的列名,子句指定了要返回的列名,FROM子句指定了改列子句指定了改列所在的表。所在的表。【例例4-22】查询学生表的其中三列。查询学生表的其中三列。SELECT学号学号,姓名姓名,院系名称院系名称FROM学生表学生表【例例4-23】查询课程表的所有列查询课程表的所有列SELECT*FROM课程表课程表在在SELECT子句中,如果要查询某个表的所有的列,可以使子句中,如果要查询某个表的所有的列,可以使用用“*”代替所有的列
27、名。代替所有的列名。“*”号的使用可以简化用户的号的使用可以简化用户的书写过程,但是会降低查询的效率,一般应具体指明查询书写过程,但是会降低查询的效率,一般应具体指明查询的列。的列。3/14/202327SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社2.限制结果集(TOP和PERCENT)在在SELECT子句中使用子句中使用TOP和和PERCENT关键词可关键词可以限制查询的结果集。以限制查询的结果集。【例例4-24】返回最上面返回最上面5条记录。条记录。SELECTTOP5学号学号,姓名姓名,院系名称院系名称FROM学生表学生表【例例4-25】
28、返回结果集的返回结果集的50。SELECTTOP50PERCENT学号学号,姓名姓名,院系名称院系名称FROM学生表学生表3/14/202328SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社3.过滤结果的重复值(DISTINCT)DISTINCT关键字可以从关键字可以从SELECT语句的结果集中消除重复语句的结果集中消除重复项。查询时如果没有指定项。查询时如果没有指定DISTINCT,将返回所有的行。,将返回所有的行。如果指定了如果指定了DISTINCT则只返回取值不同的行。则只返回取值不同的行。【例例4-26】没有指定没有指定DISTINCT,
29、查询所有的院系。,查询所有的院系。SELECT院系名称院系名称FROM学生表学生表【例例4-27】指定指定DISTINCT,查询所有的院系。,查询所有的院系。SELECTDISTINCT院系名称院系名称FROM学生表学生表对对DISTINCT关键字来说,关键字来说,NULL将被认为是相互重复的内容。将被认为是相互重复的内容。当当SELECT语句中指定语句中指定DISTINCT时,无论遇到多少个空时,无论遇到多少个空值,结果中只返回一个值,结果中只返回一个NULL。3/14/202329SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.对查询的列排
30、序(ORDER BY)ORDERBY实现对结构集的排序。实现对结构集的排序。【例例4-28】按照院系名称排序。按照院系名称排序。SELECT学号学号,姓名姓名,院系名称院系名称FROM学生表学生表ORDERBY院系名称院系名称ORDERBY子句后可以跟多个列,第一列优子句后可以跟多个列,第一列优先级最高。先级最高。3/14/202330SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社5.查询列的重新命名(AS)【例例4-29】查询查询“pubs”数据库的数据库的“authors”表,表,并将返回的列命名为中文。并将返回的列命名为中文。USEpubs
31、SELECTau_idAS编号编号,au_lnameAS姓氏姓氏,au_fnameAS名字名字FROMauthorspubs数据库是数据库是SQLServer自带的一个数据库,用自带的一个数据库,用户可以对象资源管理器查看数据库中的表的定义,户可以对象资源管理器查看数据库中的表的定义,表的关系以及表之间的联系。表的关系以及表之间的联系。3/14/202331SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社6.为表指定别名(AS)SELECT语句可以通过指定表的别名来提高程序的可读性,别名也称相语句可以通过指定表的别名来提高程序的可读性,别名也称相关
32、变量或范围变量。在分配表的别名时,可以使用关变量或范围变量。在分配表的别名时,可以使用AS关键字,格式关键字,格式为为table_nameAStablealias,也可以省略,也可以省略AS,直接在表后跟别名:,直接在表后跟别名:table_nametable_alias。【例例4-30】查询学生表的同时将学生表命名为查询学生表的同时将学生表命名为“X”。SELECTX.学号学号,X.姓名姓名,X.性别性别FROM学生表学生表ASX如果为表分配了别名,则如果为表分配了别名,则T-SQL语句中查询的列的所有显示引用必须使语句中查询的列的所有显示引用必须使用别名,而不能使用表名。例如下面的查询在执
33、行时会产生错误。用别名,而不能使用表名。例如下面的查询在执行时会产生错误。SELECT学生表学生表.学号学号,X.姓名姓名,X.性别性别FROM学生表学生表ASX3/14/202332SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社7.INTO子句的使用INTO子句的作用时创建新表,并将查询的结果插入新表中。如果执行带子句的作用时创建新表,并将查询的结果插入新表中。如果执行带有有INTO子句的子句的SELECT语句时,要确保在目标数据库中具有语句时,要确保在目标数据库中具有CREATETABLE权限。权限。INTO子句的语法是:子句的语法是:INT
34、Onew_table其中其中new_table是根据选择列表中的列和是根据选择列表中的列和WHERE子句选择的行,指定子句选择的行,指定要创建的新表名。要创建的新表名。new_table的格式通过对选择列表中的表达式进行的格式通过对选择列表中的表达式进行取值来确定。取值来确定。new_table中的列按选择列表指定的顺序创建。中的列按选择列表指定的顺序创建。new_table中的每列与选择列表中的相应表达式具有相同的名称、数中的每列与选择列表中的相应表达式具有相同的名称、数据类型和值。据类型和值。【例例4-31】创建新表创建新表“student”,其列来自于学生表的,其列来自于学生表的“学号,
35、姓名,学号,姓名,性别,院系名称性别,院系名称”四列。四列。SELECT学号学号,姓名姓名,性别性别,院系名称院系名称INTOstudentFROM学生表学生表用户可以在用户可以在“对象资源管理器对象资源管理器”中查看中查看“实例数据库实例数据库”中的新建中的新建“student”表。表。3/14/202333SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.2.2在结果集列表中使用表达SELECT子句后的结果集列表可以是多个简单的列名,也可子句后的结果集列表可以是多个简单的列名,也可以由表达式构成。这些表达式的值并不存在表中,而是该以由表达式构
36、成。这些表达式的值并不存在表中,而是该表的派生列。派生列的形式有以下几种。表的派生列。派生列的形式有以下几种。1.计算的结果在查询的过程中,对基表的某些数值列或者常量使用算术运在查询的过程中,对基表的某些数值列或者常量使用算术运算符或者函数进行运算,并显示运算结果。算符或者函数进行运算,并显示运算结果。【例例4.32】查询学生表中各个学生的年龄。查询学生表中各个学生的年龄。SELECT学号学号,姓名姓名,(YEAR(GETDATE()-YEAR(出生日期出生日期)AS年龄年龄FROM学生表学生表3/14/202334SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版
37、社清华大学出版社2.连接两个或者多个列可以使用可以使用“”将两个或者多个列连接起来,作为一列来显示。将两个或者多个列连接起来,作为一列来显示。【例例4-33】将学生和学号作为一列显示。将学生和学号作为一列显示。SELECT学号学号+:+姓名姓名AS学生学生,(YEAR(GETDATE()-YEAR(出生日期出生日期)AS年龄年龄,院系名称院系名称FROM学生表学生表【例例4-34】将将“pubs”中的中的“authors”的姓名作为一列显示,中间用空的姓名作为一列显示,中间用空格分开。格分开。SELECTau_idAS编号编号,au_fname+au_lnameAS姓名姓名,cityAS城市城
38、市FROMauthors3/14/202335SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社3.数据类型的转换CAST和和CONVERT函数功能相似,可以将常量、变量或者列进行显示的数据类函数功能相似,可以将常量、变量或者列进行显示的数据类型转换。型转换。二者的使用语法不同,二者的使用语法不同,CAST函数的语法如下:函数的语法如下:CAST(expressionASdata_type(length)CONVERT函数的语法如下:函数的语法如下:CONVERT(data_type(length),expression,style)【例例4-35】
39、例如使用例如使用CAST函数将函数将10.67转换为整形。转换为整形。SELECTCAST(10.67ASint)【例例4-36】使用使用CONVERT函数将函数将10.67转换为整形。转换为整形。SELECTCONVERT(int,10.67)【例例4-37】查询结果进行数据转换。查询结果进行数据转换。SELECTCAST(学号学号ASVARCHAR(15),姓名姓名,CAST(YEAR(GETDATE()-YEAR(出生日期出生日期)ASINT)AS年龄年龄FROM学生表学生表3/14/202336SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版
40、社4.使用CASE语句在查询的结果列表中使用在查询的结果列表中使用CASE语句对查询的结果进行分类。语句对查询的结果进行分类。【例例4-38】使用使用CASE语句。语句。SELECT学号学号,课程号课程号,分数分数,等级等级=CASEWHEN分数分数=85THEN优秀优秀WHEN分数分数=70THEN良好良好WHEN分数分数=60THEN及格及格ELSE不及格不及格ENDFROM选课表选课表3/14/202337SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.2.3 WHERE子句的使用l使用使用WHERE子句可以对查询的结果进行筛子句可以对查
41、询的结果进行筛选,选,WHERE子句后是逻辑表达式,该式定子句后是逻辑表达式,该式定义了要返回结果符合的条件,满足条件的义了要返回结果符合的条件,满足条件的行被返回,不满足条件的行不采用。行被返回,不满足条件的行不采用。WHERE子句同时也可以用在子句同时也可以用在DELETE和和UPDATE语句中。语句中。lWHERE子句的限定条件可以有多种表达形子句的限定条件可以有多种表达形式。下面分别讨论。式。下面分别讨论。3/14/202338SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社1.使用比较运算符比较算符包括以下几个:等于(比较算符包括以下几个
42、:等于(=)、大于()、大于()、小于)、小于(=)、小于等于()、小于等于(=)、不等于()、不等于(或者或者!=)、不大于()、不大于(!)、不小于()、不小于(!=853/14/202339SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社2.使用逻辑运算符逻辑运算符包括三个,分别是逻辑运算符包括三个,分别是“AND、OR和和NOT”。【例例4-41】查询所有课程成绩在查询所有课程成绩在85分以上分以上,100分以下的学生及相关科目。分以下的学生及相关科目。SELECT*FROM选课表选课表WHERE分数分数=85AND分数分数=100【例例4
43、-42】查询分数在查询分数在59分以上(不包括分以上(不包括59)的学生及科目信息。)的学生及科目信息。SELECT*FROM选课表选课表WHERENOT分数分数=60”,或者,或者“WHERE分数分数!60”。当一个语句中使用了多个逻辑运算符时,计算的顺序依次为:当一个语句中使用了多个逻辑运算符时,计算的顺序依次为:NOTAND和和OR。算术运算符和位运算符优先于逻辑运算符。算术运算符和位运算符优先于逻辑运算符。3/14/202340SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社3.限定查询的范围使用使用BETWEEN和和NOTBETWEEN关
44、键字对条件进行限制关键字对条件进行限制【例例4-46】查询分数在查询分数在0到到59的学生信息。的学生信息。SELECT*FROM选课表选课表WHERE分数分数BETWEEN0AND59【例例4-47】查询分数不在查询分数不在0到到59的学生信息。的学生信息。SELECT*FROM选课表选课表WHERE分数分数NOTBETWEEN0AND593/14/202341SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社4.使用列表(IN和 NOT IN)使用使用IN和和NOTIN关键字。查询与关键字。查询与IN子句中的任意一项匹配的记录。子句中的任意一项匹
45、配的记录。【例例4-48】不使用不使用IN子句查询计算机系或者国贸系学生。子句查询计算机系或者国贸系学生。SELECT*FROM学生表学生表WHERE院系名称院系名称=计算机系计算机系OR院系名称院系名称=国贸系国贸系【例例4-49】使用使用IN子句查询子句查询“计算机系计算机系”或者或者“国贸系国贸系”学生。学生。SELECT*FROM学生表学生表WHERE院系名称院系名称IN(计算机系计算机系,国贸系国贸系)【例例4-50】使用使用NOTIN子句查询非子句查询非“计算机系计算机系”或者或者“国贸系国贸系”学生。学生。SELECT*FROM学生表学生表WHERE院系名称院系名称NOTIN(计
46、算机系计算机系,国贸系国贸系)3/14/202342SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社5.模糊查询(LIKE和NOT LIKE)使用使用LIKE和和NOTLIKE关键字可以实现模糊查询。关键字可以实现模糊查询。LIKE后跟匹配的模式,可以后跟匹配的模式,可以是字符串、日期或者时间值。匹配包含的通配符包含以下四种。是字符串、日期或者时间值。匹配包含的通配符包含以下四种。:包含零个或多个字符的任意字符串。例如:包含零个或多个字符的任意字符串。例如WHERE学号学号LIKE2005%查询查询学号以学号以2005开头的记录信息。开头的记录信息
47、。_:下划线,任何单个字符。:下划线,任何单个字符。WHEREtitleLIKE_x,查找以,查找以x结尾的,前面只结尾的,前面只有一个字符的字符串。有一个字符的字符串。:指定范围(:指定范围(a-f)或集合()或集合(abcdef)内的任何单个字符。)内的任何单个字符。WHEREau_lnameLIKEC-Parsen,查找以,查找以arsen结尾并且以介于结尾并且以介于C与与P之间的之间的任何单个字符开始的作者姓氏,例如任何单个字符开始的作者姓氏,例如Carsen、Karsen等。等。:不在指定范围(:不在指定范围(a-f)或集合()或集合(abcdef)内的任何单个字符。例如)内的任何单
48、个字符。例如WHEREau_lnameLIKEdel%将查找以将查找以de开头并且其后的字母不为开头并且其后的字母不为l的的所有的作者的姓氏。所有的作者的姓氏。【例例4-51】查找查找“pubs”数据库中数据库中“authors”表的电话号码中以表的电话号码中以415开头的电话开头的电话SELECTau_id,au_fname+au_lnameASname,phoneFROMauthorsWHEREphoneLIKE415%3/14/202343SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社【例例4-52】查找查找“pubs”数据库中数据库中“a
49、uthors”表的电话号码中不以表的电话号码中不以415开头的电话开头的电话SELECTau_id,au_fname+au_lnameASname,phoneFROMauthorsWHEREphoneNOTLIKE415%如果要查询的目标本身就是通配符的情况,例如需要查询如果要查询的目标本身就是通配符的情况,例如需要查询“10%”其中的其中的“%”是通配符,这时可以采用是通配符,这时可以采用ESCAPE关键字或者关键字或者进行转化。进行转化。ESCAPE关键字可以定义转义符。当转义符置于通配符之前时,该通配关键字可以定义转义符。当转义符置于通配符之前时,该通配符解释为普通字符,例如符解释为普通
50、字符,例如WHEREcolLIKE%10/%ESCAPE/。该句中的前导和结尾的该句中的前导和结尾的为通配符,而由于使用了为通配符,而由于使用了ESCAPE/,则,则/之后的之后的被转义为普通字符。被转义为普通字符。使用使用,将通配符指定为中括号中的第一个字符,表示词通配符作为,将通配符指定为中括号中的第一个字符,表示词通配符作为普通的字符使用。例如普通的字符使用。例如WHEREcolLIKE%10%,中括号中的,中括号中的为普通字符。为普通字符。3/14/202344SqlServer2005数据库应用与开发教程数据库应用与开发教程清华大学出版社清华大学出版社6.ALL和ANY(SOME)关