数据库上课第五讲SQL语言_2(简单查询与连接)资料.ppt

数据库上课第五讲SQL语言_2(简单查询与连接)资料.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主讲: 顾 曦 电话Email:guxi@ ;主要内容; 1.1 投影运算 1.2 选择运算 1.3 排序运算 1.4 查询表 ;1.1 投影运算;基本语法为;1.1.1 查询指定列;1.1.2 消除重复元组;1.1.3 查询所有列;1.1.4 给属性列取别名;1.1.5 查询经过计算的列;1.2 选择运算(WHERE子句);1.2.1 比较运算;该查询的执行过程可能有多种方法: 全表扫描法 依次取出Class表中的每个元组 判断该元组的grade属性值是否等于2007 若是则将该元组的班级编号、班级名称和所属学院属性取出,形成一个新元组 最后将所有新元组组织为一个结果关系输出 该方法适用于小表,或者该表未在grade属性列上建索引 索引搜索法 如果该表在grade属性列上建有索引,且满足条件的记录不多,则可使用索引搜索法来检索数据 具体使用何种方法由数据库管理系统的查询优化器来选择,详见第8章内容;在学生Student表中查询年龄大于或等于19岁的同学学号、姓名和出生日期。 SELECT studentNo, studentName, birthday FROM Student WHERE year(curdate()) - year(birthday)=19;.1.2.2 范围查询;[例3.9] ;1.2.3 集合查询;[例3.11] ;1.2.4 空值查询;[例3.13] ;1.2.5 字符匹配查询;匹配字符串可以是一个具体的字符串,也可以包括通配符%和_ %表示任意长度的字符串 ab%,表示所有以ab开头的任意长度的字符串; zhang%ab,表示以zhang开头,以ab结束,中间可以是任意个字符的字符串。 符号_(下划线)表示任意一个字符 ab_,表示所有以 ab开头的3个字符的字符串,其中第3个字符为任意字符; a__b表示所有以a开头,以b 结束的4个字符的字符串,且第2、3个字符为任意字符。 ;[例3.14] ;[例3.15] ;[例3.16] ;[例3.17] ;转义;1.2.6 逻辑查询;[例3.20] ;注意:在逻辑运算中,不可以对同一个属性进行逻辑“与”的等值运算 例: 在选课Score表中查询同时选修了“001”和“002”课程的同学的选课信息,如下查询是错误的,得不到结果: SELECT * FROM Score WHERE courseNo=001 AND courseNo=002 要实现该查询,需要使用连接运算或嵌套子查询 通过连接运算表示该查询,参见例3.29、例3.31 通过嵌套子查询,参见例3.39、例3.40 ;[例3.21] 在Student表中查询籍贯不是“南昌”或“上海”的同学姓名、籍贯和所属班级编号。 SELECT studentName, native, classNo FROM Student WHERE native!=南昌 AND native!=上海;[例3.23] ;1.3 排序运算;[例3.24] ;[例3.25];1.4 查询表;在FROM子句后是一个子查询,表示对子查询的查询结果——查询表进行查询 必须为查询表取一个名称(称为元组变量),如使用AS a取名为a FROM (SELECT * FROM Student WHERE sex=女) AS a 该查询等价于下面的查询: SELECT studentNo, studentName, birthday FROM student WHERE year(birthday)=1991 AND sex=女 ; 2.1 等值与非等值连接 2.2 自表连接 2.3 外连接 ;;2.1 等值与非等值连接;比较运算符;2.1.1 等值连接[例3.27] ;SELECT studentNo, studentName, native, Student.classNo, className FROM Student, Class WHERE Student.classNo=Class.classNo AND institute=会计学院 在连接操作中,如果涉及到多个表的相同属性名,必须在相同的属性名前加上表名加以区分 如Student.classNo、Class.classNo WHERE子句中 Student.classNo=Class.classNo为连接条件(from子句中涉及的关系) institute=会计学院 为选择条件;别名;[例3.28] ;课程号既是课程表的主码,也是成绩表的外码,这2个表的连接条件是课程号

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档