结构化查询语言

上传人:子 文档编号:43463776 上传时间:2018-06-06 格式:DOC 页数:10 大小:19.11KB
返回 下载 相关 举报
结构化查询语言_第1页
第1页 / 共10页
结构化查询语言_第2页
第2页 / 共10页
结构化查询语言_第3页
第3页 / 共10页
结构化查询语言_第4页
第4页 / 共10页
结构化查询语言_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《结构化查询语言》由会员分享,可在线阅读,更多相关《结构化查询语言(10页珍藏版)》请在金锄头文库上搜索。

1、结构化查询语言结构化查询语言第三章 结构化查询语言-SQLSQL(Structured Query Language)-结构化查询语言31 定义基本表和插入数据311 SQL 数据库的体系结构1 基本表(Base Table):本身独立存在的表,即实际存储在数据库中的表而不是从项其它表导出来的。2 视图(View):从一个或几个基本表或几个视图导出来的表。视图本身并不独立存储数据,系统只保存视图的定义。SQL 支持的数据库体系结构-存储模式(内模式) 、模式、外模式。从用户的观点出发,基本表和视图都是关系,SQL 一样访问它们。基本表对应“模式“,视图对应“外模式“。312 定义基本表定义基本

2、表就是创建一个基本表,对表名(关系名称)以及它所包括的各个属性名及其数据类型作出具体规定。命令格式:CREATE TABLE 表名 (字段名 1 类型(宽度,小数) ,字段名2 类型(宽度,小数) ,)命令功能:用于建立一个基本表。例:CARTE TABLE 图书(总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),单价 N(10,2))313 修改、删除基本表ALTER TABLE 图书 ADD (作者 C(8), 出版单位 C(20)在“图书“数据库结构中增加“作者“和“出版单位“两个字段。DROP TABLE 删除基本表的命令314 插入数据命令格式:INSERT IN

3、TO 表名 (字段名 1,字段名 2) VALUES (表达式 1,表达式 2)命令功能:按给定的字段值在数据库的末尾追加一条新记录。例:INSERT INTO 图书 VALUES(“446943“,“TP31/138“,“数据库基础“,“杨华“,17.8)INSTER INTO 图书 (书名,作者,单价) VALUES (“FoxPro 大全“,“周虹“,28.6)32 SQL 查询-SQL-SELECTSQL 的查询可以很方便地从一个或多个表中检索数据,查询是高度非过程化的,用户只需要明确提出“要干什么“,而不需要指出“怎么去干“。SQL 基本查询模块的结构:SELECT ,;-查询目标(

4、对所需的属性进行投影运算)FROM ,; -查询的源(所有关系的关系名)WHERE -查询目标必须满足的条件(选择运算)有关选择运算(条件表达式)需要用到的运算符:1 比较运算符:P492 逻辑运算符:AND 逻辑与、OR 逻辑或、NOT 逻辑非。3 谓词:ALL 所有、ANY 任意、BETWEEN。 。 。AND。 。 。之间、IN 包含、NOT IN 不包含、EXISTS 存在、NOT EXISTS 不存在。4 集合运算:UNION 集合的并、INTERSECT 集合的交、MINUS 集合的差。图书管理关系数据模型包括的三个基本表(数据库文件):图书(总编号,分类号,书名,作者,出版单位,

5、单价)读者(借书证号,单位,姓名,性别,职称,地址)借阅(借书证号,总编号,借书日期)(包含的记录 P50 页)321 简单查询例:找出姓李的读者姓名及其所在单位。SELECT 姓名, 单位;FROM 读者;WHERE 姓名=“李“例:SELECT *;FROM 读者1 DISTINCT 和 ALL 子句DISTINCT 子句的作用:从查询结果中去掉重复元组。ALL 子句:不去掉重复元组(是默认值)例:SELECT DIST 书名,出版单位;FROM 图书2 用 AS 指定查询结果的自定义列名例:SELECT 书名 AS Book, 作者 AS Author,出版单位 AS Publisher

6、;FROM 图书;WHERE 出版单位=“科学出版社“3 ORDER BY 子句ORDER BY 子句可以指出对查询结果排序。用字段名或查询结果的列序号指定排序关键字。DESC 表示降序,ASC 表示升序。系统默认为升序。允许多重排序。例:SELECT 书名,出版单位,单价;FROM 图书;WHERE 出版单位=“高等教育出版社“;ORDER BY 单价 DESC4 BETWEEN。 。 。AND。 。 。和 NOT BETWEEN。 。 。AND。 。 。 (谓词,在WHERE 子句中使用)例:SELECT DIST 书名,作者,出版单位,单价;FROM 图书;WHERE 单价 BETWEE

7、N 10 AND 20;(单价=10 AND 单价=22;ORDER BY 单价注:在查询输出中,系统对两个数据库中相同的字段(总编号)自动加上-A 和-B。323 嵌套查询嵌套查询是指在 SELECT-FROM-WHERE 查询块内部再嵌入另一个查询块(子查询) 。注意,ORDER BY 子句不能出现在子查询中。1 用一个子查询模块的查询结果作为 IN 包含的列表。如上例可用下列语句代替:(查找价格在 22 元以上已借出的图书)SELECT *;FROM 借阅;WHERE 总编号 IN;(SELECT 总编号;FROM 图书;WHERE 单价=22)例:查询 1997 年 7 月以后没有借书

8、的读者的借书证号、姓名和单位。SELECT 借书证号,姓名,单位;FROM 读者;WHERE 借书证号 NOT IN;(SELECT 借书证号;FROM 借阅;WHERE 借书日期=07/01/97)2 ALL 和 ANY 和 SOME在 WHERE 子句中,ALL 表示与子查询结果中所有记录的相应值相比较均符合要求才算满足条件,而 ANY 或 SOME 表示与子查询结果相比较,任何一个记录满足条件即可。例如:找出藏书中比高等教育出版社的所有图书单价更高的书籍。SELEC 和*;FROM 图书;WHERE 单价ALL;(SELECT 单价;FROM 图书;WHERE 出版单位=“高等教育出版社

9、“)例:找出藏书中所有与“数据库导论“或“数据库基础“在同一出版单位出版的书。SELECT DIST 书名,单价,作者,出版单位;FROM 图书;WHERE 出版单位=ANY;(SELECT 出版单位;FROM 图书;WHERE 书名 IN (“数据库导论“,“数据库基础“))324 使用库函数(统计函数)查询计数函数 COUNT() 统计字段名所在列的行数。一般用 COUNT(*)表示计算查询结果的行,即元组的个数。求和函数 SUM() 对某一列的值求和(必须是数值型字段)计算平均值 AVG() 对某一列的值计算平均值(必须是数值型字段)求最大值 MAX() 找出一列中的最大值求最小值 MI

10、N() 找出一列中的最小值注意:在使用库函数查询时,选用 AS 指定列名显得特别有用。例:求图书馆所有藏书的总册数。SELECT COUNT(*) AS 藏书总册数;FROM 图书例:求科学出版社出版的图书的最高价格、最低价格、平均价格。SELECT 出版单位,MAX(单价)AS 最高价,MIX(单价)AS 最低价;AVG(单价)AS 平均价;FROM 图书;WHERE 出版单位=“科学出版社“例:求信息系当前借阅图书的读者人次。SELECT “信息系“,COUNT(借书证号) AS 借书人次;FROM 借阅;WHERE 借书证号 IN;(SELECT 借书证号;FROM 读者;WHERE 单

11、位=“信息系“)结果: EXP-1 借书人次信息系 3* 分组合计 GROUP BY 子句GROUP BY 子句的作用是按指定项目对记录分组,然后对每一组分别使用库函数。通常分组项目为字段,该字段应出现在查询结果中,否则分不清统计结果属于哪一组。例如:求出各出版社出版的图书的最高价、最低价和册数。SELECT 出版单位,MAX(单价)AS 最高价,MIX(单价)AS 最低价;COUNT(*)AS 总册数;FROM 图书;GROUP BY 出版单位注:本例中如果没有 GROUP BY 子句,则统计结果是整个图书表的数据,有了“GROUP BY 出版单位“子句后,则可以求出各出版单位的数据。例:求

12、出各单位当前借阅图书的人次。SELECT 单位 COUNT(*) AS 借阅人次;FROM 读者,借阅;WHERE 读者.借书证号=借阅.借书证号;GROUP BY 读者.单位* HAVING 子句HAVING 子句一般跟在 GROUP BY 子句之后,其作用是限定分组检索条件,条件中一般都包含库函数。 (在 WHERE 子句里不能直接用库函数作为条件表达式)例:分别找出借书人次超 1 人的单位及人次数。 (比上例增加一个HAVING 子句)SELECT 单位,COUNT(*) AS 超过 1 人次;FROM 借阅,读者;WHERE 读者.借书证号=借阅.借书证号;GROUP BY 读者.单位

13、;HAVING COUNT(*)=2* 存在量词 EXISTS 和 NOT ESISTS在嵌套查询时,主查询的 WHERE 子句的条件中可以用 EXISTS 表示存在。如果子查询结果非空,则满足条件;NOT EXISTS 正好相反,表示不存在,如果子查询结果为空,则满足条件。例如:查询经济系是否还清所有借书。如果还清,显示该系所有读者的姓名、所在单位和职称。SELECT 姓名,单位,职称;FROM 读者;WHERE 单位=“经济系“ AND NOT EXISTS;(SELECT *;FROM 借阅,读者;WHERE 读者.借书证号=借阅.借书证号 AND 单位=“经济系“)注:如果子查询不为空

14、,说明该系还未还清全部借书,则条件不成立,不显示该系读者的姓名、所在单位和职称。如果子查询为空,说明所借的书已全部还清,则显示该系读者的姓名、所在单位和职称。33 部份 SQL 数据操纵命令* 更新数据命令-修改数据命令格式:UPDATE ;SET ;WHERE 例:修改总编号为 554433 图书的作者名和出版单位名称。UPDATE 图书;SET 作者=“王为民“,出版单位=“电子工业出版社“;WHERE 总编号=“554433“* 删除数据命令命令格式:DELETE;FROM ;WHERE 例如:借书证号“112“所借总编号为“446988“的图书已归还,删除该借阅记录。DELETE;FROM 借阅;WHERE 借书证号=“112“ AND 总编号=“446988“数据库基础与应用 第三章 结构化查询语言-SQL 第 1 页 共 6 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号