- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
交通信息系统 第八章 结构化查询语言sql2图文
4.3 SQL的数据查询 主要内容SELECT语句格式单表查询聚集函数数据分组多表查询集合操作本章数据库示例(教务管理数据库)例4.1 定义一个教务管理数据库JWGL,它包含3个表:学生表:S(SNO,SNAME,SEX,AGE,SDEPT)课程表:C(CNO,CNAME,CPNO,CCREDIT)学生选课表:SC(SNO,CNO,GRADE) 学生表实例学号SNO姓名SNAME性别SEX年龄AGE所在系SDEPT200915121200915122200915123200915125李小勇刘 晨王洪敏张 力MFFSCSMAIS课程号CNO课程名CNAME先修课CPNO学分CCREDIT1234567数据库数学信息系统操作系统数据结构数据处理C语言516764243424课程表实例学号SNO课程号CNO成绩GRADE200915121200915121200915121200915122200915122123239285889080学生表选课表实例 4.3.1 SELECT语句格式1、SELECT—FROM—WHERE句型 在关系代数中最常用的式子是下列表达式: πA1,…,An(σF(R1×…×Rm)) 这里R1、…、Rm为关系,F是公式,A1、…、An为属性。 针对上述表达式,SQL为此设计了SELECT—FROM—WHERE句型: SELECT A1,…,An FROM R1,…,Rm WHERE F 这个句型是从关系代数表达式演变来的,但WHERE子句中的条件表达式F要比关系代数中公式更灵活。在WHERE子句的条件表达式F中可使用下列运算符算术比较运算符:、 = 、 、 = 、 、 !=逻辑运算符:AND、OR、NOT集合成员资格运算符:IN、NOT IN谓词:EXISTS、ALL、SOME、UNIQUE 聚合函数:AVG、MIN、MAX、SUM、COUNTF中运算对象还可以是另一个SELECT语句,即SELECT句型可以嵌套2、SELECT语句完整的句法如下: SELECT 目标表的列名或列表达式序列 FROM 基本表名和(或)视图序列 [ WHERE 行条件表达式 ] [ GROUP BY 列名序列 [ HAVING 组条件表达式 ]] [ ORDER BY 列名[ ASC|DESC ],… ] 主语句SELECT-FROM-WHERE的含义是: 根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。 整个语句的执行过程如下:(1) 读取FROM子句中基本表、视图的数据,执行笛卡尔积操作。(2) 选取满足WHERE子句中给出的条件表达式的元组。(3) 按GROUP子句中指定列的值分组,同时提取满足HAVING子句中组条件表达式的那些组。(4) 按SELECT子句中给出的列名或列表达式求值输出。(5) ORDER子句对输出的目标表进行排序,按附加说明ASC升序排列,或按DESC降序排列。根据查询条件不同,可分为:单表查询连接查询嵌套查询集合查询4.3.2 单表查询查询仅涉及一个表,是一种最简单的查询操作。一、选择表中的若干列二、选择表中的若干元组三、对查询结果排序四、使用聚合函数五、对查询结果分组 1、查询表中的若干列⑴ 查询指定列 在很多情况下,用户只对表中的一部分属性列感兴趣,这时可以通过在SELECT子句的目标列表达式中指定要查询的属性列。 例4.21 查询全体学生的学号与姓名。 SELECT SNO,SNAMEFROM S; 执行过程:从S表中取出一个元组,再取出该元组在属性SNO和SNAME上的值,形成一个新的元组作为输出。对S表中的所有元组做相同的处理,最后形成一个结果关系作为输出。 ⑵ 查询全部列 将表中的所有属性列都选出来,可以有两种方法。一种方法就是在SELECT关键字后面列出所有列名;另一种方法是如果列的显示顺序与其在基表中的顺序相同,也可以简单地将目标列表达式指定为“*”。 例4.23 查询全体学生的详细记录。 SELECT * FROM S; 等价于: SELECT SNO,SNAME,SEX,AGE,SDEPT FROM S; (3) 查询经过计算的值 SELECT子句的目标列表达式不仅可以是表中的属性列,也可以是表达式。 例4.24 查询全体学生的姓名及其出生年份。 SELECT SNAME,2009-AGE FROM S; 输出结果: Sname _________________ 李小勇1989 刘晨1990 王名1991 张立1990 2、选择表中的若干元组 ⑴ 消除取值重复的行 两个本来并不完全相同的元组,投影到指定的某些列上
原创力文档


文档评论(0)