《SQLServer2005数据库技术及应用》课件第8章 T-SQL基本查询

上传人:考试不挂****2941... 文档编号:243004816 上传时间:2024-09-13 格式:PPT 页数:38 大小:441KB
返回 下载 相关 举报
《SQLServer2005数据库技术及应用》课件第8章 T-SQL基本查询_第1页
第1页 / 共38页
《SQLServer2005数据库技术及应用》课件第8章 T-SQL基本查询_第2页
第2页 / 共38页
《SQLServer2005数据库技术及应用》课件第8章 T-SQL基本查询_第3页
第3页 / 共38页
点击查看更多>>
资源描述
, , , , , ,*,SQL Server 2005,第,8,章,T-SQL,基本查询,第,8,章,T-SQL,基本查询,8.1 SELECT,查询语句的语法结构,8.2 SELECT,子句指定由查询返回的列,8.3,使用,WHERE,子句指定筛选条件,8.4,使用凵,KE,子句进行模糊查询,8.5,使用,ORDER BY,指定结果集的排序,第,8,章,T-SQL,基本查询,SQL,是结构化查询语言(,Structured Query Language,)的简称。,Transact-SQL,语言(为方便,以下简称,T-SQL,语言)是,Microsoft SQL Server,提供的查询语言。,T-SQL,语言只含有较少的非标准语法,因此将用,T-SQL,语言编写的程序在不同数据库平台之间移植时,不会遇到太多困难。,任何应用程序,只要目的是向,SQL Server,的数据库管理系统发出命令以获得数据库管理系统的响应,最终都必须体现为以,T-SQL,语句为表现形式的指令。,8.1 SELECT,查询语句的语法结构,SELECT,查询语句是,SQL,语言的核心。,SELECT,语句的作用是让数据库服务器根据客户的要求搜索出所需要的信息资料,并按规定的格式进行整理,再返回给客户。,SELECT,查询语句的语法格式,SELECT,查询语句的语法格式为:,SELECT ALL |DISTINCT|TOP ,selectlist,INTOnew_table_sourse,FROM ,.,n, ,WHERE clause,GROUP BY,group_list,HAVING clause,ORDER BY,sort_list,COMPUTE clause,FOR BROWSE,SELECT,查询语句的语法格式,Select_list,:,所要查询的字段名称,它可以是从多个表中取出来的字段。,INTOnew_table_sourse,将查询结果放到一个新的表中,值得注意的是,若,SELECT,命令中有,UNION,子句,则,INTO,一定要放在第一个,SELECT,保留字之后。,FROM ,.n :,指定要在,T-SQL,语句中使用的表或视图(带或不带别名均可)。可在语句中使用多达,256,个表。可将,table_source,变量指定为表源。,WHERE Clause:,欲查询数据的条件。,SELECT,查询语句的语法格式,GROUP BY:,可对字段进行分类统计并给出数据的统计结果。,HAVING:,功能如同,WHERE,其不同之处在于是对分组条件进行过滤,只有存在,GROUP BY,时才使用。,ORDER BY:,将查询结果以某列或多列进行排序,再返回结果。,COMPUTE:,允许用一条,SELECT,命令同时查询数据,给出数据的细节和统计结果。,8.2 SELECT,子句指定由查询返回的列,选择指定列并指定它们的显示次序,选择所有列,使用,TOP,关键字指定只返回前面一定数量的数据,使用,DISTINCT,关键字删除重复的行,使用计算列,操作查询的列名,选择指定列并指定它们的显示次序,【,例,8.1】,从,Student,表中查询学生的姓名、性别、出生日期和家庭住址等列的信息,在新建查询窗口输入如下语句:,SELECT,name,sex,birthday,home_addr,FROM student,在本次查询里,返回的是所有行中相同目标列上的数据。,选择所有列,【,例,8.2】,从,Student,表中查询学生所有列的信息。,在新建查询窗口输入如下语句:,SELECT * FROM student,SELECT *,是进行数据检索的最基本的语句。在,SELECT,语句中,“*”,表示表中所有的列,选择所有列,【,例,8.3】,查询本地,SQL Server,服务器的本信息。,在新建查询窗口输入如下语句:,SELECT VERSION,上例使用,SELECT,语句进行无数据源查询。所谓无数据源查询就是使用,SELECT,语句来查询不在表中的数据。上例是使用,SELECT,语句查询全局变量,VERSION,显示,服务器的,版本号。,使用,TOP,关键字指定只返回前面一定数量的数据,使用,TOP,关键字的语法如下,:,SELECT TOP,integer|TOP,integer PERCENT,select_list,FROM,table_source,TOP integer:,表示返回最前面的几行,用整数表示返回的行数,;,TOP integer PERCENT:,用百分比表示返回的行数。,使用,TOP,关键字指定只返回前面一定数量的数据,使用,TOP,关键字的语法如下,:,SELECT TOP,integer|TOP,integer PERCENT,select_list,FROM,table_source,TOP integer:,表示返回最前面的几行,用整数表示返回的行数,;,TOP integer PERCENT:,用百分比表示返回的行数。,使用,TOP,关键字指定只返回前面一定数量的数据,【,例,8.4】,从,JWGL,数据库的,Teacher,表中返回前面,3,行数据。,在新建查询窗口输入如下语句:,SELECT TOP 3 * FROM teacher,【,例,8.5】,从,JWGL,数据库的,Department,表中返回前面占总行数的,10%,行的数据。,在新建查询窗口输入如下语句:,SELECT TOP 10 PERCENT *,FROM,deparment,使用,DISTINCT,关键字删除重复的行,DISTINCT,关键字可从,SELECT,语句的结果中除去重复的行,,使返回的结果更简洁。,如果没有指定,DISTINCT,,那么将返回所有满足查询条件的行,包括重复的行。,使用,DISTINCT,关键字后,如果表中存在多个为,NULL,的数据,服务器将会把这些数据视为相等。,【,例,8.6】,没有使用,DISTINCT,语句,从,Class,表中返回专业信息,会得到很多重复的“计算机应用”专业的数据。,在新建查询窗口输入如下语句:,SELECT professional,FROM class,使用,DISTINCT,关键字删除重复的行,【,例,8.7】,当使用了,DISTINCT,关键字以后,可以过滤掉其中重复的专业名,使“计算机应用”专业在结果集中只出现,1,次。,在新建查询窗口输入如下语句:,SELECT DISTINCT professional*,FROM class,与,DISTINCT,功能相对的是,ALL,关键字,ALL,关键字允许重复数据的出现。不必刻意书写,ALL,关键字,因为在默认情况下,SELECT,语句总是用,ALL,关键字进行查询。,DISTINCT,关键字的作用范围是整个查询的列表,而不是单独的一列。比如,同时对两列数据进行查询时,如果使用了,DISTINCT,关键字,将返回这两列数据的惟一组合。,使用计算列,在进行数据查询时,经常需要对查询到的数据进行再次计算。,T-SQL,允许直接在,SELECT,语句中使用计算列。计算列并不存在于表所存储的数据中,它是通过对某些列的数据进行计算得来的结果。,【,例,8.8】,在,JWGL,数据库中,将,teacher,表内的每位员工的工资提高,30%,。,在新建查询窗口输入如下语句:,SELECT name,姓名,profession,职称,salary,原工资,salary*1.3,现工资,FROM teacher,使用计算列,在进行数据查询时,经常需要对查询到的数据进行再次计算。,T-SQL,允许直接在,SELECT,语句中使用计算列。计算列并不存在于表所存储的数据中,它是通过对某些列的数据进行计算得来的结果。,在,T-SQL,的计算列上,允许使用,+,、,-,、*、,/,、,%,和按照位来进行计算的逻辑运算符,如,AND (&),、,OR(|). XOR(),和,NOT(),以及字符串连接符,(+),。,【,例,8.8】,在,JWGL,数据库中,将,teacher,表内的每位员工的工资提高,30%,。,在新建查询窗口输入如下语句:,SELECT name,姓名,profession,职称,salary,原工资,salary*1.3,现工资,FROM teacher,使用计算列,【,例,8.9】,使用字符串连接符,(+),来连接,JWGL,数据库中,Class,表内的班级编号,(,class_id,),和专业名称,(professional),。,SELECT,class_id,+,班,+professional,班级与专业,FROM class,操作查询的列名,可以根据实际的需要对查询数据的列标题进行修改,或者为没有标题的列增加临时的标题。,符合,ANSI,规则的标准方法,即在列表达式后面给出列名,使用“,=”,连接列表达式,使用,AS,关键字连接列表达式和指定的列名,【,例,8.10】,从,Course,表中查询课程信息,并在列表达式后面给出相应的中文列名。在新建查询窗口输入如下语句:,SELECT,course_id,课程代码,name,课程名称,class_time,课时,credit,学分,FROM course,操作查询的列名,【,例,8.11】,从,Course,表中查询课程信息,并使用“,=”,连接列表达式和中文列名。在新建查询窗口输入如下语句:,SELECT,课程代码,=,course_id,课程名称,=name,课时,=,class_time,学分,=credit,FROM course,【,例,8.12】,从,Course,表中查询课程信息,并使用,AS,关键字连接列表达式和指定的列名。,在新建查询窗口输入如下语句:,SELECT,course_id,AS,课程代码,name AS,课程名称,class_time,AS,课时,credit AS,学分,FROM course,在对列名进行操作时,有以下,2,个问题值得注意,:,当使用中文列名时,可以不写引号,但决不能使用全角引号,否则查询会出错。,当使用的英文列名超过两个单词时,必须使用引号将列名括起来。,8.3,使用,WHERE,子句指定筛选条件,WHERE,子句是一个筛选,它定义了源表中的行要满足,SELECT,语句的要求所必须达到的条件。只有符合条件的行才向结果集提供数据。不符合条件的行中的数据不会被使用。,WHERE,子句还用在,INSERT,、,DELETE,和,UPDATE,语句中以定义目标表中要插入、删除或修改的行。,使用比较运算符,使用逻辑运算符,使用,WHERE,子句指定筛选条件,【,例,8.13】,从,JWGL,数据库的,Teacher,表中查询出生日期在,1960,年,1,月,1,日以前出生的教师信息。(,使用比较运算符),SELECT,name,birthday,FROM teacher,WHERE birthday1960-1-1,使用,WHERE,子句指定筛选条件,【,例,8.14】,从,JWGL,数据库的,Teacher,表中查询出生日期在,1960,年,1,月,1,日以前或,1976,年,1,月,1,日以后出生的教师信息。(,使用逻辑运算符),在新建查询窗口输入如下语句:,SELECT,name,sex,birthday,FROM teacher,WHERE birthday1976-1-1,使用,BETWEEN,关键字,语法是,:,test_expressNOT, BETWEEN,begin_expression,AND,end_expression,使用,BETWEEN,表达式进行查询的效果可以用使用比较运算符,=,和,和,=,和,=1960-1-1,AND birthday,和,连接的逻辑表达式进行查询的效果,可以用,NOT BETWEEN,表达式进行查询来实现。,LECT,name,sex,birthday,FROM teacher,WHERE birthday NOT BETWEEN,1960-1-1 AND 1976-1-1,通过上面的例子可以看到,在使用,BETWEEN,限制查询数据范围时,同时包括了边界值,而使用,NOT BETWEEN,进行查询时没有包括边界值。,使用,IN,关键字,同,BETWEEN,关键字一样,IN,关键字的引入也是为了更方便地限制检索数据的范围,灵活使用,IN,关键字,可以用简洁的语句实现较为复杂的查询。,【,例,8.17】,用,OR,表达式从,JWGL,数据库的,Teacher,表中查询职称为教授或助教的教师名单。,SELECT,name,profession,FROM teacher,WHERE profession=,教授,OR profession=,助教,【,例,8.18】,使用,IN,表达式从,JWGL,数据库的,Teacher,表中查询职称为教授或助教的教师名单。,SELECT,name,profession,FROM teacher,WHERE profession IN (,教授,助教,),8.4,使用,LIKE,子句进行模糊查询,通配符的使用,%(,百分号,):,表示从,0,到,n,个任意字符。,_(,下划线,):,表示单个的任意字符。,(,封闭方括号,):,表示方括号里列出的任意一个字符。,:,任意一个没有在方括号里列出的字符。,【,例,8.19】,查询,Student,表中,家庭住址带有“南”字的学生名单。,SELECT name,home_addr,FROM student,WHERE,home_addr,LIKE %,南,%,8.4,使用,LIKE,子句进行模糊查询,【,例,8.20】,查询,Class,表中,班级编号的头三位是“,200”,第,4,位是“,4”,或“,6”,的班级名称和学生数。,SELECT,class_id,name,student_number,FROM class,WHERE,class_id,LIKE 20046%,上例中,使用方括号可以将字符查询的范围精确地限定在第,4,个字符为“,4”,、“,6”,中的一个。,8.4,使用,LIKE,子句进行模糊查询,可以使用方括号和连字符来指定一个值的范围,例如,下面的例子可以利用,26,个小写字母来检索可能匹配的人名。,Use pubs,GO,SELECT,au_lname,au_fname, phone ,au_id,FROM authors,WHERE,au_lname,like ,Dula-z,GO,必须注意的是所有通配符都只有在,LIKE,子句中才有意义。否则,通配符会被当作普通字符处理。,8.4,使用,LIKE,子句进行模糊查询,转义字符的使用,使用通配符可能会产生这样一个问题,:,万一要查询的字符串中间包含了通配符作为字符串一部分,该如何处理,? T-SQL,提供的转义字符功能可以解决这个问题。,【,例,8.21】,设有一个名为,ABCD,的表,表中列名为,sy,的列有以下,4,个值,:,abc,、,ab_d,%,、,eabcd,、,%,abcd,列宽度为,5,,现在要查找以“,a”,开头,以“,%”,结尾,第,3,个字符为“,_”,, 第,4,个字符为“,abcd,”,中的任意一个字符串。下面的查询语句是正确的实现方法,:,SELECT,sy,FROM ABCD,WHERE,sy,LIKE ,a_x_abcdx,%,ESCAPE x,ESCAPE,用来规定转义字符。凡是,ESCAPE,子句中出现的字符都成为转义字符,它在字符串中不再表示真实的字符,只起标记的作用。凡是在转义字符后面出现的第一个表示通配符的字符都不再被视为通配符,而被当做普通字符处理。所有的字符都可以被当作转义字符处理。在这个查询中,“,x”,被处理成为转义字符。,8.5,使用,ORDER BY,指定结果集的排序,基本的,ORDER BY,子句,ORDER BY,子句的语法是,:,ORDER BY order,by_expression, ASC |DESC,order,by_expression,:,定义用于排序的列,可以直接指出列名,也可使用列的序号。可以使用多列进行排序,各列在,ORDER BY,子句中的顺序决定了排序过程中的优先级。,ASC |DESC,:按升序或降序的顺序排序,在默认情况下,ORDER BY,子句按升序进行排序,即默认使用的是,ASC,关键字。如果特别要求按降序进行排列,必须使用,DESC,关键字。,8.5,使用,ORDER BY,指定结果集的排序,【,例,8.22】,查询,Department,表中各部门的名称及部门编号。请按部门编号的升序排序。并与不排序查询作比较。,Select * from department,order by,department_id,可以使用列所处的位置来指定进行排序的列,如上例可以改为,:,SELECT *,FROM DEPARTMENT,ORDER BY l,8.5,使用,ORDER BY,指定结果集的排序,对计算列进行排序,假设有一个“学生成绩表”,表中有“姓名”、“语文”、“数学”、“英语”等列名,现要根据学生三门课的总成绩按从高到低排序。则应该执行的查询如下,:,SELECT,姓名,总成绩,=,语文,+,数学,+,英语,FROM,学生成绩表,ORDER BY,总成绩,DESC,也可以根据未曾出现在,SELECT,列表中的列的值进行排列。例如,上面的例子可以改为按“计算机应用基础”课程的成绩从高到低排序,:,SELECT,姓名,总成绩,=,语文,+,数学,+,英语,FROM,学生成绩表,ORDER BY,计算机应用基础,DESC,8.5,使用,ORDER BY,指定结果集的排序,对计算列进行排序,假设有一个“学生成绩表”,表中有“姓名”、“语文”、“数学”、“英语”等列名,现要根据学生三门课的总成绩按从高到低排序。则应该执行的查询如下,:,SELECT,姓名,总成绩,=,语文,+,数学,+,英语,FROM,学生成绩表,ORDER BY,总成绩,DESC,也可以根据未曾出现在,SELECT,列表中的列的值进行排列。例如,上面的例子可以改为按“计算机应用基础”课程的成绩从高到低排序,:,SELECT,姓名,总成绩,=,语文,+,数学,+,英语,FROM,学生成绩表,ORDER BY,计算机应用基础,DESC,要使用语文和数学进行排序,可以使用的查询如下,:,SELECT,姓名,语文,数学,英语,FROM,学生成绩表,ORDER BY,语文,DESC,,数学,DESC,8.5,使用,ORDER BY,指定结果集的排序,与,TOP,结合求某些列值为最大或最小的记录,如果一个,SELECT,语句既包含,ORDER BY,子句又包含,TOP,子句,那么返回的行将会从排序后的结果集中选择,整个结果集按照指定的顺序建立并且返回排好序的结果集的前若干行。这样,用户可以进行查询出名列前茅的记录或者落后者的记录。,【,例,8.23】,查询“,Teacher”,表中,工资最高的教师的姓名,(name),,编号,(,teacher_id,),,工资,(salary),。,在新建查询窗口输入如下语句:,SELECT TOP 1,teacher_id,name,salary,FROM teacher,ORDER BY salary DESC,8.5,使用,ORDER BY,指定结果集的排序,【,例,8.24】,查询“,Teacher”,表中,工资最低的两个教师的姓名,(name),,编号,(,teacher_id,),,工资,(salary),。,在新建查询窗口输入如下语句:,SELECT TOP 2,teacher_id,name,salary,FROM teacher,ORDER BY salary,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!