单元5 数据查询 - 副本.ppt
文本预览下载声明
课堂练习 对YGGL数据库完成一下查询: 1、显示月收入高于2000元的员工号码 2、查询1970年以后出生的员工的姓名和地址 3、 查询支出在50-150之间的员工信息 4、查询财务部、研发部、市场部的员工信息 5、显示工作年限三年以上(含3年)、学历在本科以上(含本科)的男性员工的信息 6、查找员工号码中倒数第二个数字为0的姓名、地址和学历 7 查找地址中包含’中山路’ 的员工的信息 ? 任务二 多表查询 前面介绍了使用SELECT子句选择列,本小节讨论SELECT查询的对象(即数据源)的构成形式。SELECT的查询对象由FROM子句指定,其格式为: FROM 表名1 [ [AS] 别名1 ] [ , 表名2[ [AS] 别名2]] … /*查询表*/ | JOIN子句 /*连接表*/ ● 引用一个表: 可以用两种方式引用一个表,第一种方式是使用USE语句让一个数据库成为当前数据库,在这种情况下,如果在FROM子句中指定表名,则该表应该属于当前数据库。第二种方式是指定的时候在表名前带上表所属数据库的名字。例如,假设当前数据库是db1,现在要显示数据库db2里的表tb的内容,使用如下语句: SELECT * FROM db2.tb; 当然,在SELECT关键字后指定列名的时候也可以在列名前带上所属数据库和表的名字,但是一般来说,如果选择的字段在各表中是唯一的,就没有必要去特别指定。 FROM子句 【例5.23】 从Members表中检索出所有客户的信息,并使用表别名Users。 SELECT * FROM Members AS Users; ● 引用多个表: 如果要在不同表中查询数据,则必须在FROM子句中指定多个表。指定多个表时就要使用到连接。当不同列的数据组合到一个表中叫做表的连接。例如,在XSCJ数据库中需要查找选修了离散数学课程的学生的姓名和成绩,就需要将XS、KC和XS_KC三个表进行连接,才能查找到结果。 【例5.24】 查找Bookstore数据库中客户订购的图书书名,订购册数和订购时间。 SELECT Book.书名, Sell.订购册数, Sell.订购时间 FROM Book, Sell WHERE Book.图书编号=Sell.图书编号; 全连接 当数据查询涉及到多张表格时,要将多张表格的数据连接起来组成一张表格,连接的方式有多种。 全连接 全连接产生的新表是每个表的每行都与其他表中的每行交叉以产生所有可能的组合,列包含了所有表中出现的列,也就是笛卡儿积。全连接可能得到的行数为每个表中行数之积。 如表A有3行,表B有2行,表A和B全连接后得到6行(3x2=6)的表 全连接举例 T1 T2 T3 T4 T5 1 A 1 3 M 6 F 2 0 N 2 B T1 T2 T3 T4 T5 1 A 1 3 M 6 F 1 3 M 2 B 1 3 M 1 A 2 0 N 6 F 2 0 N 2 B 2 0 M 表A和B全连接后得到如下6行(3x2=6)的表: 表A 表B 等值连接 T1 T2 T3 T4 T5 1 A 1 3 M 2 B 2 0 N FROM子句各个表用逗号分隔,这样就指定了全连接。全连接潜在地产生数量非常大的行,因为可能得到的行数为每个表中行数之积。在这样的情形下,通常要使用WHERE子句设定条件来将结果集减少为易于管理的大小,这样的连接即为等值连接。 若表A和B进行等值连接(T1=T3 ),则如下表所示,只有两行。 【例5.24】 查找Bookstore数据库中客户订购的图书书名,订购册数和订购时间。 SELECT Book.书名, Sell.订购册数, Sell.订购时间 FROM Book, Sell WHERE Book.图书编号=Sell.图书编号; JOIN连接 2. JOIN连接 第二种方式是使用JOIN关键字的连接,语法格式如下: table_reference INNER JOIN table_reference ON conditional_expr| USING (column_list) (1)内连接:指定了INNER关键字的连接是内连接。 【例5.25】 要实现例4.23中的结果,可以使用以下语句: SELECT Book.书名, Sell.订购册数, Sell.订购时间 FROM Book inner join Sell ON Book.图书编号=S
显示全部