3意8e02000的宣询 6.1简单查迿 6.2连接查迿 6.3子查询 6.4联合查询 6.5案例4:活期储蓄管理系统 数据库上的一般操作 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 6.1 简单查询 6.2 连接查询 6.3 子查询 6.4 联合查询 6.5 案例4:活期储蓄管理系统 数据库上的一般操作
3意8e02000的宣询 6.1简单查询 父 Transac t-SL的 SELECT语句从一个或者多个表或视图中检索 录,使用査询分析器输入一条 SELECT语句,查询情况将在结果 窗口中显示。可以编辑或打印这些结果,并且把它们保存在非数 据库文件中。 6.1.1指定T0P关键字 SQL Server2000使用了TOP关键字,用于查询时只显示前 面几行数据。当 SELECT语句检索出来的记录非常多,且又无须显 示全部记录时,可使用T0P关键字来减少查询时间,提高查询效率。 使用TOP关键字的语法如下 SELECT [TOP integer TOP integer PERCENT][WITH TIES [,<目标列表达式][1.n] FROM<表名〉 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 6.1 简单查询 Transact-SQL的SELECT语句从一个或者多个表或视图中检索 记录,使用查询分析器输入一条SELECT语句,查询情况将在结果 窗口中显示。可以编辑或打印这些结果,并且把它们保存在非数 据库文件中。 6.1.1 指定TOP关键字 SQL Server 2000 使用了TOP 关键字,用于查询时只显示前 面几行数据。当SELECT语句检索出来的记录非常多,且又无须显 示全部记录时,可使用TOP关键字来减少查询时间,提高查询效率。 使用TOP关键字的语法如下: SELECT [TOP integer | TOP integer PERCENT][WITH TIES] [,][1…n] FROM ;
3意8e02000的宣询 【例6-1】从MyD数据库的图书信息表( books)中返回前面5行记 录,显示两列:书名、作者。 SELECT TOP5书名,作者 from books 【例6-2】从MyDb数据库的 books表中返回前面20%的记录,显示 三列:书名、作者、定价 SELECT TOP20 PERCENT书名,作者,定价 froM books 【例6-3】从读者信息表( readers)中返回前面2条记录,按已借 数量降序排列,使用 WITH TIES选项。 SELECT TOP 2 WITH TIES FROM readers ORDER BY已借数量DESC 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 【例6-1】从MyDb数据库的图书信息表(books)中返回前面5行记 录,显示两列:书名、作者。 SELECT TOP 5 书名, 作者 FROM books 【例6-2】从MyDb数据库的books表中返回前面20%的记录,显示 三列:书名、作者、定价。 SELECT TOP 20 PERCENT 书名,作者,定价 FROM books 【例6-3】从读者信息表(readers)中返回前面2条记录,按已借 数量降序排列,使用WITH TIES选项。 SELECT TOP 2 WITH TIES * FROM readers ORDER BY 已借数量 DESC
3意8e02000的宣询 6.12重新指定查询的列标题 【例6-4】査询读者借阅状况表中读者编号、读者姓名及可以借 阅的数量。 SELECT‘读者号’=读者编号,读者姓名’=姓名, 可借阅数量’=限借数量-已借数量 FROM读者借阅状况表 可以写成如下形式 SELECT读者编号AS‘读者号’,姓名AS'读者姓名 限借数量-已借数量AS‘可借阅数量 FROM读者借阅状况表 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 6.1.2 重新指定查询的列标题 【例6-4】查询读者借阅状况表中读者编号、读者姓名及可以借 阅的数量。 SELECT ‘读者号’=读者编号, ‘读者姓名’=姓名, ‘可借阅数量’=限借数量-已借数量 FROM 读者借阅状况表 可以写成如下形式: SELECT 读者编号 AS ‘读者号’ , 姓名 AS ’读者姓名’ , 限借数量-已借数量 AS ‘可借阅数量’ FROM 读者借阅状况表
3意8e02000的宣询 613使用NT0子句 Transact-SL提供了一个扩展特性,允许用户使用 SELECT语 句查询得到的结果记录来创建一个新数据表,创建新表使用INTO 子句 【例6-5】使用INT0子句创建一个新表,存放boks中书名和作者 两列 SELECT书名,作者 INTO图书临时表 From books 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 6.1.3 使用INTO子句 Transact-SQL提供了一个扩展特性,允许用户使用SELECT语 句查询得到的结果记录来创建一个新数据表,创建新表使用INTO 子句。 【例6-5】使用INTO子句创建一个新表,存放books中书名和作者 两列。 SELECT 书名, 作者 INTO 图书临时表 FROM books
3意8e02000的宣询 614L|KE子句中的通配符 在大多数情况下,LIE子句与通配符配合使用,以满足复杂 的査询条件。 SQL Server提供了4种通配符,百分号、下划线 和字符 【例6-6】査询所有满足读者编号以2004开头的 readers的记录 SELECT FROM readers WHERE编号LIKE2004% 【例6-7】将查询范围限定在第10个字符为“3”、“6”中的一个 SELECT FROM readers WHERE编号LIKE‘2004[36] 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 6.1.4 LIKE子句中的通配符 在大多数情况下,LIKE子句与通配符配合使用,以满足复杂 的查询条件。SQL Server提供了4种通配符,百分号、下划线、 [] 和字符^。 【例6-6】查询所有满足读者编号以2004开头的readers的记录。 SELECT * FROM readers WHERE 编号 LIKE ‘2004%’ 【例6-7】将查询范围限定在第10个字符为“3” 、 “6”中的一个。 SELECT * FROM readers WHERE 编号 LIKE ‘2004_____[36]’
3意8e02000的宣询 【例6-8】查询借阅信息表( borrowing)中图书编号以A到F的字 符开头的所有借阅者信息 SELECT * from borrowinf WHERE图书编号LIKE‘[A-F]%° 【例6-9】查找 books中编号不是G到Z打头的所有记录 SELECT from books WHERE编号LIKE“[G-Z]% 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 【例6-8】查询借阅信息表(borrowinf)中图书编号以A到F的字 符开头的所有借阅者信息。 SELECT * FROM borrowinf WHERE 图书编号 LIKE ‘[A-F]%’ 【例6-9】查找books中编号不是G到Z打头的所有记录。 SELECT * FROM books WHERE 编号 LIKE ‘[^G-Z]%’
3意8e02000的宣询 62连接查询 Transact-S@L提供了连接操作符J0IN,用于从两张或多张数 据表的连接中获取数据。两张表之间的连接可以有以下几种不同 的方式 内连接[ INNER]JoIN 外连接LEFT[ OUTER]JOIN RIGHT LOUTERJ JOIN FULL LOUTER] JOIN 自连接 INNER]J0IN ■交叉连接 CROSS JOIN 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 6.2 连接查询 Transact-SQL提供了连接操作符JOIN,用于从两张或多张数 据表的连接中获取数据。两张表之间的连接可以有以下几种不同 的方式: ▪ 内连接 [INNER] JOIN ▪ 外连接 LEFT [OUTER] JOIN RIGHT [OUTER] JOIN FULL [OUTER] JOIN ▪ 自连接 [INNER] JOIN ▪ 交叉连接 CROSS JOIN
3意8e02000的宣询 621内连接 在内连接中,可以使用等号“-作为比较运算符,此时称作等 值连接;也可以使用不等比较运算符,此时为不等值连接 令等值连接 【例6-10】查询每个读者的详细信息包括读者信息以及借阅图书信 息,允许有重复列 SELECT readers. * borrowinf k from readers Inner Join borrowinf oN readers.编号- borrowing读者编号 【例6-11】查询读者类型为1(教师)的所有读者的读者信息和借阅 信息,允许有重复列。 select FROM readers r inner Join borrowinf b 0Nr.编号=b.读者编号 WHERE r.读者类型=1 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 6.2.1内连接 在内连接中,可以使用等号“=”作为比较运算符,此时称作等 值连接;也可以使用不等比较运算符,此时为不等值连接。 ❖ 等值连接 【例6-10】查询每个读者的详细信息包括读者信息以及借阅图书信 息,允许有重复列。 SELECT readers.*, borrowinf.* FROM readers INNER JOIN borrowinf ON readers.编号=borrowinf.读者编号 【例6-11】查询读者类型为1(教师)的所有读者的读者信息和借阅 信息,允许有重复列。 SELECT * FROM readers r INNER JOIN borrowinf b ON r .编号=b.读者编号 WHERE r.读者类型=1
3意8e02000的宣询 自然连接 从等值连接的操作结果中删去重复的连接列,获得的查询结果 中将不包含重复列,这种连接称为自然连接。 【例6-12】查询每个读者的详细信息包括读者信息以及借阅图书信 不允许有重复列 SELECT r.编号,r.姓名,rt.类型名称as读者类型, 图书编号,借期,还期 FROM readers r inner join borrowinf 0Nr.编号= borrowing.读者编号 INNER JOIN readertype rt 0Nr.读者类型=rt.类型编号 【例6-13】查询2004年8月26日借书的读者的姓名。 SELECT姓名 FROM readers Inner join borrowinf 0 n readers.编号= borrowing.读者编号 WHERE借期=2004-8-26 2021/1/21
第6章 SQL Server 2000 的数据查询 2021/1/21 ❖ 自然连接 从等值连接的操作结果中删去重复的连接列,获得的查询结果 中将不包含重复列,这种连接称为自然连接。 【例6-12】查询每个读者的详细信息包括读者信息以及借阅图书信 息,不允许有重复列。 SELECT r.编号,r.姓名,rt.类型名称 as 读者类型, 图书编号,借期,还期 FROM readers r INNER JOIN borrowinf ON r.编号=borrowinf.读者编号 INNER JOIN readertype rt ON r.读者类型= rt.类型编号 【例6-13】查询2004年8月26日借书的读者的姓名。 SELECT 姓名 FROM readers INNER JOIN borrowinf ON readers.编号=borrowinf.读者编号 WHERE 借期='2004-8-26