您好,欢迎访问三七文档
第十二讲T—SQL查询(一)在以后的例题中,以教学管理数据库为例来讲解。在教学管理数据库中有以下五个表:Student(Sno,Sname,Age,Sex,Dep,Bplace)Courses(Cno,Cname,Credit)Teacher(Tno,Tname,Age,Dep,Ps)Enrolls(Sno,Cno,Semester,Grade)Teaching(Cno,Class,Tno,Snum)什么是查询?ApplicationLogic客户程序查询请求查询结果集SQLSERVERABCDEFGSELECT*FROMSALES查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来一、SELECT的基本格式SELECT列名FROM表名[WHERE查询条件表达式][ORDERBY排序的列名[ASC或DESC]]列名称SELECTSno,SName,Bplace表名FROMStudents过滤条件WHERESEX=‘女’排序条件ORDERBYSnoSELECTSno,SName,SBplaceFROMStudentWHERESEX=‘女’ORDERBYSno二、SELECT的执行方式1、在企业管理器中执行SELECT语句。书P110由关系图窗格、网格窗格、SQL窗格、结果窗格2、在查询分析器中执行SELECT语句。书P111页查询分析器具有常用的文本编辑功能,可以将所编写的SQL语句保存到一个查询文件中,其扩展名为.sql。三、简单的SELECT查询1、简单的单表查询:例1:SELECTCno,Cname,CreditFROMCourse说明:①用‘*’代表所有的列例1可改为:SELECT*FROMCourses②可查询不在表中的数据例2:使用SELECT查看全局变量的数据。SELECT@@languageSELECT@@version2、使用Top关键字:用于指定只返回前面一定数量的数据。语法:SELECT[TOPn|TOPnpercent]列名FROM表名例3:返回student表中前5行数据的姓名和籍贯。SELECTTOP5Sname,BplaceFROMstudent例4:返回student表中前10%的数据。SELECTTOP10percent*FROMstudent分析下面语句的返回结果SELECTdistinctclass,TnoFROMteaching返回class,Tno两列数据的唯一组合4、使用计算列:T—SQL允许直接在SELECT语句中使用计算列,计算列并不存在于表格所存储的数据中,是通过对某些列进行计算得来的结果。例6:将Teacher表的年龄每人加2后的年龄显示出来。SELECTage,age+2FROMteacher例7:求teacher表中年龄最大、最小的信息及平均年龄。SELECTmin(age),max(age),avg(age)FROMteacher说明:在计算列上允许使用+、-、*、/、%和按照位来进行计算的逻辑运算符,如&,|,^以及字符串连接符+。如SELECT12&5SELECTSno+SnameFROMstudent聚集函数:是一个值的集合为输入,返回单个值的函数。5、操作查询的列名:可对查询数据的列标题进行修改,或为没有列标题的列增加临时的标题。有三种方法:①在列表达式后面空一格给出列的标题。如SELECTSno学号,Sname姓名FROMstudent注意:列名可用单引号,也可不用②使用标题列=列表达式的格式。SELECT学号=Sno,姓名=SnameFROMstudent③使用列表达式AS列标题SELECTSnoas‘学号’,Snameas‘姓名’FROMstudentSELECTmin(age)as最小,max(age)as最大FROMstudent6、使用WHERE子句:从数据表中选出符合条件的行。①使用比较表达式:例:SELECTsno,snameFROMstudentWHEREage=20说明:比较运算符有:=,,,,!,!,=,=,!=②使用逻辑表达式:例:selecsno,snameFROMstudentWHEREage=20ANDage=30逻辑运算符有:AND,or,NOT。T—SQL的布尔表达式有3种可以的值:true,false,unknow。其中unknow是由值为NULL的数据参与的逻辑运算得出的结果。③使用BETWEEN关键字:可以更方便地限制查询数据的范围。例:找出student表中年龄在20到30之间的学生的姓名。SELECTsnameFROMstudentWHEREageBETWEEN20AND30例:找出年龄高于30与低于20的学生的姓名。SELECTsnameFROMstudentWHEREageNOTBETWEEN20AND30注意:BETWEEN包括边界值,NOTBETWEEN不包括边界值。如:“ABETWEENBANDC”等价于“(A=BANDA=C)”“ANOTBETWEENBANDC”等价于“(ABorAC)”上机练习:实习十
本文标题:SQL查询(一)
链接地址:https://www.777doc.com/doc-3878992 .html