版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQLServer2008基础教程SQLServer2008FundamentalsTutorials目录2高等教育出版社第4章基本查询4.1Transact-SQL查询基础4.2在查询中使用TOP和PERCENT限制查询结果4.3在查询中使用DISTINCT过滤重复行4.4模式查询4.5在查询中使用聚合函数4.6分组查询4.7多表连接查询目录3高等教育出版社4.1T-SQL查询基础4.1.1查询和记录集4.1.2使用Select语句进行查询
SELECT语句概述4高等教育出版社SELECT语句是T-SQL的真正核心内容,其作用就是查询数据库中的数据。查询的对象:数据表或视图查询的过程:根据查询条件在指定数据表或视图中找到并输出一个由满足条件的数据列和行构成的记录集。查询和记录集5高等教育出版社查询:是对存储在数据库中的数据发出的一种请求。记录集:是由数据库查询返回的数据行组成,并且临时存储在应用程序服务器的内存中,以便进行快速检索。
使用SELECT语句进行查询6高等教育出版社
SELECT语句是一个查询表达式,包括SELECT、FROM、WHERE、GROUPBY和ORDERBY子句。
SELECT语句的完整语法格式SELECT[ALL|DISTINCT]<目标列表达式表>[AS列名表][INTO<新表名>]FROM<表名>[,<表名>…][WHERE<条件表达式>[AND|OR<条件表达式>...][GROUPBY列名[HAVING<条件表达式>]][ORDERBY列名[ASC|DESC]]使用SELECT语句进行查询7高等教育出版社例4-1查询学生表(Student)中所有学生的信息。查询语句:
SELECTSELECT*FROMStudent
执行结果如图4-1所示:图4-1查询所有学生的信息
使用SELECT语句进行查询8高等教育出版社例4-2查询学生表(Student)中物理系学生的学号、姓名、性别信息。
查询语句:
SELECTStu_ID,Stu_Name,SsexFROMStudentWHERESdept='物理系'
执行结果如图4-2所示:4-2查询物理系学生的信息使用SELECT语句进行查询9高等教育出版社例4-3查询选课表(Stu_Course)中所有考核成绩大于90分的学生信息。查询语句:
SELECT*FROMStu_CourseWHEREScore>90
执行结果如图4-3所示:图4-3查询考核成绩大于90分的学生信息
使用SELECT语句进行查询10高等教育出版社例4-4查询课程表(Course)中所有课程的信息,并按教材编号升序排列。
查询语句:
SELECT*FROMCourseORDERBYBooks_id
执行结果如图4-4所示:图4-4查询所有课程的信息
使用SELECT语句进行查询11高等教育出版社例4-5查询学生表(Student)中所有学生的学号、姓名、性别和所在系的信息,并按学号降序排列。查询语句:
SELECTStu_ID,Stu_name,Ssex,SdeptFROMStudentORDERBYStu_IDDESC
执行结果如图4-5所示:图4-5查询学生学号、姓名、性别和所在系的信息
使用SELECT语句进行查询12高等教育出版社说明:
(1)如果要引用某数据表名称,而当前数据库不是引用对象所属数据库,可以使用USE语句将数据表所属的数据库切换为当前数据库。(2)如果当前要使用的列名不明确是哪个表的列,需要通过给该列指定表名来明确其数据源。(3)可以使用<数据库名>.<数据表名>.<列名>的方式。目录13高等教育出版社4.2在查询中使用Top和Percent限制查询结果
使用Top和Percent限制查询结果14高等教育出版社
查询数据过程中,如果只需获取查询结果的前面几行数据,可以在SELECT语句中加入TOP子句来实现。
TOP子句的语法格式
TOP(<数值表达式>)[PERCENT][WITHTIES]<数值表达式>用来指定返回结果的行数或百分比数。PERCENT指定百分比。WITHTIES必须与ORDERBY子句配合使用,假设数值表达式的结果是N,此选项可以将按ORDERBY排好顺序的前N行数据以及与第N行排序列值具有相同值的所有行一并列出。使用Top和Percent限制查询结果15高等教育出版社例4-6查询学生表Student中前面4位学生的学号、姓名、性别和所在系的信息。查询语句:
SELECTTOP(4)Stu_ID,Stu_name,Ssex,SdeptFROMStudentORDERBYStu_ID执行结果如图4-6所示:图4-6查询前4位学生的学号、姓名、性别和所在系的信息
使用Top和Percent限制查询结果16高等教育出版社例4-7查询选课表Stu_Course中成绩居前4位的数据行的信息。方法1:采用TOPN
SELECTTOP(4)*FROMStu_CourseORDERBYScoreDESC执行结果如图4-7(a)所示:(a)采用TOPN的执行结果图4-7查询选课表中成绩居前4位的数据行使用Top和Percent限制查询结果17高等教育出版社例4-7查询选课表Stu_Course中成绩居前4位的数据行的信息。方法2:采用TOPNWITHTIES
SELECTTOP(4)WITHTIES*FROMStu_CourseORDERBYScoreDESC执行结果如图4-7(b)所示:(b)采用TOPNWITHTIES的执行结果图4-7查询选课表中成绩居前4位的数据行目录18高等教育出版社4.3在查询中使用DISTINCT过滤重复记录使用DISTINCT过滤重复记录19高等教育出版社
关键字DISTINCT可从SELECT语句的结果中消除重复行。
使用DISTINCT过滤重复记录20高等教育出版社例4-8查询学生表(Student)中学生的所在系的信息。
方法1:不带关键字DISTINCT
SELECTSdeptFROMStudent
执行结果如图4-8(a)所示:(a)不带关键字DISTINCT的执行结果图4-8查询选课表中成绩居前2位的数据行使用DISTINCT过滤重复记录21高等教育出版社例4-8查询学生表(Student)中学生的所在系的信息。
方法2:带关键字DISTINCT
SELECTDISTINCTSdeptFROMStudent执行结果如图4-8(b)所示:(b)带关键字DISTINCT的执行结果图4-8查询选课表中成绩居前2位的数据行目录22高等教育出版社4.4模式查询4.4.1使用LIKE和通配符进行模糊查询4.4.2使用BETWEEN在指定范围内进行查询使用LIKE和通配符进行模糊查询23高等教育出版社
T-SQL的查询语句在处理字符中,提供了LIKE与NOTLIKE两个运算符。这两个运算符可以与通配符配合进行查询。语法格式SELECT<列名表>FROM<表名>WHERE<列名>LIKE|NOTLIKE<包含通配符的字符串表达式>使用LIKE和通配符进行模糊查询24高等教育出版社
T-SQL提供四种通配符%表示任意多个(包含0个)字符。“%”可匹配任意类型和长度的字符。_表示任意单个字符。“_”可匹配单个任意字符,常用来限制表达式的字符长度。[]表示括号内所列字符中的一个。“[]”指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]表示括号内所列的字符以外的单个字符。使用LIKE和通配符进行模糊查询25高等教育出版社例4-9查询学生表(Student)中姓“高”的学生的学号、姓名、性别和所在系等信息。查询语句:SELECTStu_ID,Stu_Name,Ssex,SdeptFROMStudentWHEREStu_NameLIKE'高%'执行结果如图4-9所示:图4-9查询姓“高”的学生的学号、姓名、性别和所在系等信息
使用LIKE和通配符进行模糊查询26高等教育出版社例4-10查询学生表(Student)中不姓“高”的学生的学号、姓名、性别和所在系的信息出来。
查询语句:SELECTStu_ID,Stu_Name,Ssex,SdeptFROMStudentWHEREStu_NameNOTLIKE'高%'执行结果如图4-10所示:图4-10查询不姓“高”的学生的学号、姓名、性别和所在系的信息
使用BETWEEN在指定范围内进行查询27高等教育出版社在T-SQL的查询语句中,一般使用比较运算符和逻辑运算符来构造条件表达式指定查询范围。为了使条件表达式含义直观、简洁,可以使用BETWEEN…AND结构替代条件表达式。使用BETWEEN…AND结构要特别注意范围是包含了前后端点的数据。可以参与范围指定的数据类型包括数值型数据、日期时间型数据、文本型数据。使用BETWEEN在指定范围内进行查询28高等教育出版社例4-11查询选课表(Stu_Course)中成绩在80到90之间的数据行的信息。查询语句:SELECT*FROMStu_CourseWHEREScoreBETWEEN80AND90执行结果如图4-11所示:图4-11查询成绩在80到90之间的数据行的信息
目录29高等教育出版社4.5在查询中使用聚合函数在查询中使用聚合函数30高等教育出版社1.计算平均值计算平均值使用AVG函数。
语法格式SELECTAVG(<列名>)FROM<表名>WHERE<条件表达式>查询结果返回符合条件行的相应列的平均数值。操作数据列的数据类型是数值数据,即INT、DECIMAL、MONEY、SMALLMONEY、FLOAT和REAL等。在查询中使用聚合函数31高等教育出版社例4-12在选课表(Stu_Course)中,查询学号为200611012901学生的平均成绩。查询语句:SELECTAVG(Score)FROMStu_CourseWHEREStu_ID='200611012901'执行结果如图4-12所示:图4-12查询学号为200611012901学生的平均成绩
在查询中使用聚合函数32高等教育出版社2.计算最小值与最大值计算最小值与最大值的函数为MIN与MAX。语法格式SELECTMIN(<列名>)|MAX(<列名>)FROM<表名>WHERE<条件表达式>查询结果返回符合条件行的相应列的最小值与最大值。操作数据列的数据类型是数值、字符串和日期时间等。
在查询中使用聚合函数33高等教育出版社例4-13查询选课表(Stu_Course)中的最低成绩和最高成绩。
查询语句:SELECTMIN(Score)'最低成绩',MAX(Score)'最高成绩'FROMStu_Course执行结果如图4-13所示:图4-13查询选课表中的最低成绩和最高成绩
在查询中使用聚合函数34高等教育出版社3.求和求和使用SUM函数。语法格式SELECTSUM(<列名>)FROM<表名>WHERE<条件表达式>查询结果返回符合条件行的相应列的所有值的总和。
SUM函数也可以配合DISTINCT来计算唯一数值的总和。在查询中使用聚合函数35高等教育出版社例4-14在选课表(Stu_Course)中,查询学号为200611012901的学生的成绩总和、最低成绩和最高成绩。查询语句:
SELECTSUM(Score)'成绩总和',MIN(Score)'最低成绩',MAX(Score)'最高成绩'FROMStu_CourseWHEREStu_ID='200611012901'执行结果如图4-14所示:图4-14查询学号为200611012901的学生的成绩总和、最低成绩和最高成绩
在查询中使用聚合函数36高等教育出版社4.统计行数
统计行数使用函数COUNT。语法格式SELECTCOUNT(<列名>)|COUNT_BIG(<列名>)FROM<表名>WHERE<条件表达式>
查询结果返回符合条件行的行数。两个函数功能一样,不同的是COUNT返回的行数是INT数据类型的;COUNT_BIG返回的行数是BIGINT数据类型。COUNT(*)返回的是所有符合条件的数据行行数,而COUNT(列名)返回的是符合条件的、相应列值不是NULL的数据行的行数。在查询中使用聚合函数37高等教育出版社例4-15在选课表(Stu_Course)中,查询学号为200611012901学生的成绩总和、选课门数、最低成绩和最高成绩。查询语句:
SELECTSUM(Score)'成绩总和',COUNT(*)'选课门数',MIN(Score)'最低成绩',MAX(Score)'最高成绩'FROMStu_CourseWHEREStu_ID='200611012901'执行结果如图4-15所示:图4-15查询200611012901学生的成绩总和、选课门数、最低成绩和最高成绩
目录38高等教育出版社4.6分组查询4.6.1数据分组统计GROUPBY4.6.2使用HAVING
数据分组统计GROUPBY39高等教育出版社
GROUPBY子句用来为查询结果记录集中的每一行产生聚合值,一般都和聚合函数配合使用。如果聚合函数使用GROUPBY子句,则会根据GROUPBY后面的列进行分组,并按组进行汇总计算。否则,只为SELECT语句报告一个聚合值。语法格式SELECT<目标列名>FROM<表名>GROUPBY<列名>[ORDERBY<列名>]GROUPBY后跟的列名所指的列,称为组合列。
“<目标列名>”多为聚合函数和组合列。数据分组统计GROUPBY40高等教育出版社例4-16统计选课表(Stu_Course)中每个学生的所修学分、选课门数。查询语句:SELECTStu_ID,SUM(Credit)'所修学分',COUNT(*)'选课门数'FROMStu_CourseGROUPBYStu_IDORDERBYStu_ID执行结果如图4-16所示:图4-16统计每个学生的所修学分、选课门数
使用HAVING41高等教育出版社
HAVING子句的用法类似于WHERE子句,用于对分组按条件进行筛选后,再对每组进行汇总计算。HAVING子句通常与GROUPBY子句配合使用。语法格式HAVING<条件表达式>“<条件表达式>”为分组或聚合的查询条件。
使用HAVING42高等教育出版社
HAVING子句与WHERE子句的语法基本一致,但有两点不同:HAVING子句的条件表达式中可以包含聚合函数,而WHERE子句不可以。HAVING子句的条件表达式中的每一个列名必须在SELECT子句的列名中出现,而WHERE子句不需要。使用HAVING43高等教育出版社例4-17在学生表(Student)中查找人数多于3人的年龄。查询语句:SELECTSage,COUNT(*)'人数'FROMStudentGROUPBYSageHAVINGCOUNT(*)>3执行结果如图4-17所示:图4-17查找人数多于3人的年龄
目录44高等教育出版社4.7多表连接查询4.7.l使用表的别名和命名列4.7.2连接概述4.7.3内部连接查询4.7.4外部连接查询4.7.5自连接查询多表连接概述45高等教育出版社
在实际应用中,用户查询的数据并不一定在一个数据表或视图中,而可能存在于多个数据表或视图中,此时需要使用多表查询。多表查询把多个数据表或视图中的数据组合,再从中获取所需要的数据信息。使用表的别名和命名列46高等教育出版社1、命名列
在多表查询过程中,为了避免不同表的同名数据列给查询结果带来的混乱,一般采用命名列的方式来指定SELECT语句中的数据列。语法格式<表名>.<列名>2、指定表的别名由于表名在命名列时要多次使用,而表名往往又比较长,所以,经常采用给表指定字符长度比较短的别名的方法来简化语句。表的别名通过FROM子句来指定
语法格式FROM<表名>[AS]<别名>使用表的别名和命名列47高等教育出版社例4-18查询学生的选修课程、课程编号、考核成绩以及学号、姓名信息。查询语句:SELECTe.Stu_ID,e.Course_ID,e.Score,p.Stu_Name,w.Course_IDFROMStu_CourseASe,StudentASp,CourseASwWHEREe.Stu_ID=p.Stu_IDANDe.Course_ID=w.Course_ID连接概述48高等教育出版社1、连接
连接就是将多个表中的数据通过指定的连接条件整合在一起形成用户操作数据源的过程。2、连接查询连接查询是关系数据库中常用的查询,主要包括内部连接查询、外部连接查询和交叉连接查询三种类型。内部连接查询的结果集中仅包含满足条件的行。外部连接查询的结果集中既包含那些满足条件的行,也包含其中某个表的全部行。外部连接查询又可分为左连接查询、右连接查询、全连接查询3种形式。
交叉连接查询的结果集中包含两个表中所有行的组合。
连接概述49高等教育出版社多表的连接主要通过定义FROM子句来实现。语法格式FROM<表名1><连接类型关键字><表名2>[ON<条件表达式>][WHERE<条件表达式>]“<连接类型关键字>”用来指定连接查询的类型。内部连接是INNERJOIN,可以简写为JOIN;左连接是LEFTOUTERJOIN,简写为LEFTJOIN,右连接是RIGHTOUTERJOIN,简写为RIGHTJOIN,全连接是FULLOUTERJOIN,简写为FULLJOIN;交叉连接是CROSSJOIN。ON子句用来定义连接的条件。两个表要进行连接,通常在这两个表中要包含具有相同类型、相同意义的列,列名可以不同。一般内部连接和外部连接时采用ON子句来指定连接的条件,而交叉连接采用WHERE子句指定连接条件。内部连接查询50高等教育出版社内部连接查询是一种比较常用的连接查询方式,它使用比较运算符进行多个表间数据的比较操作,并查找出这些表中与连接条件相匹配的所有行。
内部连接查询51高等教育出版社例4-19查询考核成绩不低于90分学生的学号、姓名、考核成绩信息,并按考核成绩升序排列。查询语句:
SELECTStudent.Stu_ID,Student.Stu_Name,ScoreFROMStudentINNERJOINStu_CourseONStudent.Stu_ID=Stu_Course.Stu_IDWHEREStu_Course.Score>=90ORDERBYStu_Course.Score内部连接查询52高等教育出版社例4-20查询选修课程的学生的学号、姓名、所选课程编号、课程名称、考核成绩和学分信息,并按课程编号升序排列。
查询语句:
SELECTc.Stu_ID,c.Stu_Name,d.Course_ID,d.Course_Name,e.Score,e.creditFROMStudentAScJOINStu_CourseASeONc.Stu_ID=e.Stu_IDJOINCourseASdONd.Course_ID=e.Course_IDORDERBYd.Course_ID外部连接查询53高等教育出版社内部连接的查询结果都是满足连接条件的行。但是,有时也希望查询那些不满足连接条件的行信息。这时,就需要使用外部连接查询。外部连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件的连接方式。外部连接查询可分为左连接查询、右连接查询、全连接查询3种形式。外部连接查询54高等教育出版社左连接查询可以返回左表中的所有行。如果左表的行根据连接条件在右表中有匹配的行,左表的行和与之匹配的右表行组成一行数据返回到查询结果集中;如果左表的行在右表中没有匹配的行,左表的行照样返回到查询结果集中,只不过与右表相对应的列值被赋予NULL。右连接查询可以返
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医药文化进校园-中医药健康伴我行
- 斜面上静摩擦问题课件
- 上下消化道出血鉴别
- 《血葡萄糖检测》课件
- 河北省张家口市桥西区2024-2025学年九年级上学期期末 历史试题(含答案)
- 2024年土地登记代理人题库附完整答案【夺冠系列】
- 单位管理制度展示大全职工管理十篇
- Unit 1 语篇组合提升练
- 单位管理制度展示大合集员工管理篇
- 全球资产配置资金流向月报(2024年12月):强美元下12月资金流出非美市场流入美股
- 2024年酒店式公寓承包合同
- 2025年八省联考内蒙古高考生物试卷真题答案详解(精校打印)
- 校园公园绿化养护协议
- 猫抓病的护理
- 2024版城市绿化养护合同补充协议3篇
- 勘察设计工作内容
- GB/T 19799.2-2024无损检测超声检测试块第2部分:2号标准试块
- 2024-2025学年冀教新版八年级上册数学期末复习试卷(含详解)
- DB45T 1831-2018 汽车加油加气站防雷装置检测技术规范
- 《儿歌运用于幼儿园教育问题研究的文献综述》8600字
- 悬挂灯笼施工方案
评论
0/150
提交评论