资源描述:
《【7A文】关系数据库标准语言SQL.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1第4章关系数据库标准语言SQL目录上一页下一页退出2本章要点4.1SQL语言的基本概述4.2查询功能4.3操作功能4.4定义功能31.综合统一SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库应用系统开发者提供了良好的环境。2.高度非过程化3.面向集合的操作方式4.以同一种语法结构提供两种使用方式5.语言简洁
2、,易学易用4.1.1SQL语言的特点44.1.2SQL语言的基本概念SQL语言支持关系型数据库的三级模式结构。其中外模式对应于视图(View)和部分基本表(BaseTable),模式对应于基本表,内模式对应于存储文件。基本表是本身独立存在的表,在SQL语言中一个关系对应一个表。一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件中。存储文件的逻辑结构组成了关系型数据库的内模式。而存储文件的物理文件结构是任意的。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库只存放
3、在视力的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。54.1.3SQL命令SQL的功能命令动词数据查询SELECT数据定义CREATE,DROP,ALTER数据操控INSERT,UPDATE,DELETE数据控制GRANT,REVOKE64.2查询功能SQL的核心是查询,它的基本的形式由SELECT–FROM–WHERE查询块组成,多个查询块可嵌套执行.基本查询语句【格式】SELECT[ALL
4、DISTINCT]<字段列表>FROM<表>【功能】无条件查询。【说明】AL
5、L:表示显示全部查询记录,包括重复记录。DISTINCT:表示显示无重复结果的记录。7定货管理数据库84.2.1简单查询例4.1从职工关系中检索出所有的工资值select工资from职工去掉重复值selectdistinct工资from职工例4.2检索仓库关系中的所有元组select*from仓库上述语句等价于select仓库号,城市,面积from仓库例4.3检索工资多余1230元的职工号select职工号from职工where工资>12309例4.4检索那些仓库有工资多于1210元的职工..selectdi
6、stinct仓库号from职工where工资>1210注:显然我们只对唯一的仓库号感兴趣,例4.5给出在仓库号”wh1”或”wh2”工作,并且工资少于1250元的职工号..select职工号from职工;where工资<1250and(仓库号=”wh1”or仓库号=“wh2”)104.2.1简单的连接查询连接是关系的基本操作之一,连接查询是一种基于多个关系的查询.例4.6找出工资多于1230元的职工号和他们所在的城市.select职工号,城市from职工,仓库;where(工资>1230)and(职工.仓库号
7、=仓库.仓库号)例4.7找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市select职工号,城市from职工,仓库;where(面积>400)and(职工.仓库号=仓库.仓库号)114.2.1嵌套查询例4.8那些城市至少有一个仓库的职工工资为1250元?(1)select城市from仓库where仓库号IN;(select仓库号from职工where工资=1250)(2)也可以用IN语句实现select城市from仓库where仓库号IN(wh1,wh2)(3)用简单的连接查询select城市
8、from仓库,职工;where工资=1250(职工.仓库号=仓库.仓库号)例4.9查询所有职工的工资都多于1210元的仓库的信息.select*from仓库where仓库号notIN;(select仓库号from职工where工资<=1210)12例4.10找出和职工E4挣同样工资的所有职工select职工号from职工where工资=;(select工资from职工where职工号=E4)134.2.4几个特殊的运算符号例4.11检索出工资在1220元到1240元范围内的职工信息.select职工号from
9、职工where工资>1220and工资<1240例4.12从供应商关系中检索出全部公司的信息,不要工厂和其他供应商的信息,select*from供应商where供应商名Like“%公司”;14例4.13找出不在北京的全部供应商信息select*from供应商where地址!=“北京”不等于的两种写法:!=或not等价语句:select*from供应商wherenot(地址=“北京”)154.2.5排