数据库原理与程序设计第2章关系数据库系统课件_第1页
数据库原理与程序设计第2章关系数据库系统课件_第2页
数据库原理与程序设计第2章关系数据库系统课件_第3页
数据库原理与程序设计第2章关系数据库系统课件_第4页
数据库原理与程序设计第2章关系数据库系统课件_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 关系数据库系统生物医学软件工程教研室本章概要关系数据模型关系运算关系数据库查询语言标准关系数据库查询语言SQL2.1 关系数据模型关系数据结构域(domain): 域是一个具有相同类型的值的集合。笛卡儿乘积:n 个域 Di ( i=1, ,n ) 的笛卡儿乘积定义为 D1Dn =(d1 , , dn ) |d1D1, ,dnDn 每一个元素(d1 , , dn )叫做一个 n 元组。笛卡尔积可对应一个二维表!表中的每一行对应一个元组(tuple)!表中的每一列对应一个属性(attribute)!关系:笛卡儿乘积 D1Dn 的任一子集称为定义在域 D1 , , Dn 上的关系。表示为 R

2、 (D1, D2, , Dn )当关系作为数据模型的数据结构时, 需满足:(1)关系必须是有限集合 (2) 取消关系元组的有序性姓名城市李金宝哈尔滨孙文隽哈尔滨属性:是为关系的域附加的名字。属性的值域:每个属性所表示的域。姓名城市李金宝哈尔滨孙文隽哈尔滨关系模式(relation schema):是一个系统 R(U, D, DOM, I, F),简记R(U). 其中 R:关系名 U:属性集合 D:属性的值域 DOM: U到D的映射 I:完整性约束集合 F : 属性间的函数依赖关系姓名城市区街道账号李金宝哈尔滨南岗区学府路24孙文隽哈尔滨南岗区学府路85都薇哈尔滨道里区友谊路85元组属性关系模式

3、是对关系的描述关系和关系模式是密切相关而又有所不同的概念。关系模式描述了关系的数据结构和语义约束,不是集合。而关系(关系实例) 是关系模式在某时刻的当前值,是数据集合。关系模式是稳定的,而关系随着数据库的更新而变化。课程安排数据库的关系模式和关系实例关系模式(这里仅列出属性集合) teacher(教师编号,姓名,所属系)student(班级,人数,班主任,联系电话)course(课程名称,教师编号,班级,时间,地点)教师编号 姓名 所属系4409 周东 物理系4410 林西 信息系4413 赵南 电子系课程名称 教师编号 班级 时间 地点量子力学 4409 物01 4-12 1301数据结构

4、4410 信00 4-34 1301微波原理 4413 电99 4-56 1301班级 人数 班主任 联系电话物01 50 陈春 84130291信00 55 苏夏 84133310电99 60 徐秋 84130780例例利用关系数据模型表示图中的数据库。课本经常引用的关系数据库COMPANY(六个表)employee(name,ssn,bdate,address,sex,salary, superssn, dno) 雇员 姓名 证号 生日 地址 性别 工资 负责人证号 部门department(dname, dnumber, mgrssn, mgrstartdate) 部门 部门名 部门号

5、负责人证号 负责人上任日期depart_location(dnumber, dlocation) 部门地址 部门号 部门所在地 project( pname, pnumber, dnum, plocaion) 工程项目 项目名 项目号 部门号 项目所在地works_on( essn, pno, hours) 工程 雇员证号 项目号 小时数dependent( essn, dependent_name, sex, bdate, relationship) 家属 雇员证号 家属姓名 性别 生日 与雇员的关系一个关系数据库教学模型关系的表示:可用一个二维表来直观地表示,表的每一列表示一个属性,每一行

6、表示一个元组,列的名字就是属性名。二维表有下述基本约束列是同质的,具有相同的数据类型,来自同一个域;不同的列可以来自相同的域;没有重复的行;列的次序可以任意交换;行的次序可以任意交换;属性值必须是不可分的数据项。候选键:若关系模式 R 的属性子集 K 满足下列条件,则称之为候选键:(1)R的任何实例的任两元组在K的值都不相同(唯一性);(2)K的任何真子集都不满足条件(1)(最小性);卡号姓名开卡时间类型开卡地址4502里莉20020830金卡香坊5369张鹏20060108金卡道里5846李思20091208金卡南岗8752张鹏20100804金卡南岗关系中能唯一的标识一个元组的某一属性组的

7、值主键:在所有的候选键中,选择一个作为主键。键属性:候选键的属性称为键属性。非键属性:不包含在任何候选键中的属性称为非键属性。主属性:主键的属性称为主属性。外部键:若关系模式 R 的属性子集 X 是另一关系模式S的主键 ,则称 X 是 R 关于 S的外部键。利用外部键可以实现关系模式之间的联系。例: Student(姓名,学号,联系电话) Grade(学号,课程编号,分数)学号是Grade关于Student的外部键。完整性约束规则实体完整性约束:主键不接受空值。关联完整性约束:任何关系的一个元组只能通过外部键与另一个关系中存在的元组相关联。例Student(姓名,学号,联系电话) Grade(

8、学号,课程编号,分数)dno是关系模式employee关于department的外部键。employee实例每个元组在dno若取空值,表明该雇员未安排到某个部门;若取非空值k,则表明他被安排到编号为k的部门,因而要求 department 实例必须有某元组在 X 取值 k。本章概要关系数据模型关系运算关系数据库查询语言标准关系数据库查询语言SQL2.2 关系运算关系代数以数学作为基础关系演算以逻辑作为基础,用逻辑来描述关系(查询结果).元组关系演算域关系演算一、关系代数并(二元):相同属性结构的关系 R 和 S 的 n 元组的并运算。差(二元):相同属性结构的关系 R 和 S 的n 元组的差运

9、算。笛卡尔积(二元):设 R 是 n 元关系,S 是 m 元关系,R 和 S 的笛卡尔积为 RS= (r , s ) | r R s S .并运算例:教务处印发选课表给各系填写该系学生选课情况。表格收回后需要综合为一个总表。这可以理解为关系的并运算。ABCabcdafcbd关系R并RSABCbgadafABCabcdafcbdbga关系S差运算例:根据学生名册和学生运动员名册产生学生非运动员名册,这可以理解为关系的差运算。ABCabcdafcbd关系R差R-SABCbgadafABCabccbd关系S例:两队散打运动队均由三名队员组成。现作循环比赛,赛事表可看成是两队名单的笛卡儿乘积。笛卡儿乘

10、积运算ABCabcdafcbd关系R笛卡尔积RTDEFqprxyzABCDEFabcqprabcxyzdafqprdafxyzcbdqprcbdxyz关系T投影(一元): 定义关系 R 对其属性 i, j, k 的投影为 i,j,k (R)=( ri , rj , rk )| r R ,即仅取 R 指定的属性。选择(一元):定义关系 R 关于条件 F: ric的选择为F(R)=r | r R ric,即取遍R 中满足条件F的元组,其中=,,R 和 S 关于条件F:AB的连接操作定义为RFS=F(RS)=rs|rRsSrAsB商(二元):交例:根据某系学生名册和全校学生运动员名册产生该系学生运动

11、员表格,这可以理解为关系的交运算。ABCabcdafcbd关系R交RSABCbgadafABCdaf关系S连接ABC123456789关系RRBD SDE3162ABCDE123311236245662关系SABCDE123311236245631456627893178962ABCa b cd b cb c fc a dBEDb c db c ea d bABCa b cd b cc a dRR.B=S.BS半连接RSABCa b cd b cb d fc a dBEDb c db c ea d bABCEDa b c c da b c c ed b c c dd b c c ec a d

12、d b自然连接RS例设关系R ,S的实例分别为产品号 价格001 111 002 222003 333 004 444产品号 销量001 11002 22RS产品号 价格 销量001 111 11002 222 22产品号 价格001 111002 222商ABCDabcdabefbcefedcdedefabdeCDcdefABabedRSABabbced投影笛卡尔积ABCDabcdabefbccdbcefedcdedef商例Student ( Sno , Sname , Ssex, Sage, Sdept ) 学号,姓名,性别,年龄,所在系Course ( Cno, Cname, Cpno,

13、 Ccredit ) 课程号,课程名,先行课,学分SC ( Sno, Cno, Grade ) 学号,课程号,成绩问题1:查询生物信息系全体学生 解:Sdept=生物信息系(Student)问题2:查询年龄小于20岁的学生 解:Sage20(Student)问题3:列出学生的姓名和所在系 解: Sname,Sdept (Student)问题4:查询选修了2号课程的学生的学号 解: Sno(Cno=2(SC)问题5:查询选修了2号课程的学生的姓名 解: Sname(Cno=2(Student Student.Sno=SC.Sno SC)问题6:查询至少选修了一门其直接先行课为5号课程的学生的姓名

14、 解: Sname(Cpno=5(Course )Course.Cno=SC.Cno SC SC.Sno=Student.Sno Student)问题7:查询选修了全部课程的学生号码和姓名 解: Sno,Sname( Sno,Cno(SC) Cno(Course) Student )例研究部所有工作人员的名字和地址。employee(name,ssn,bdate,address,sex,salary, superssn, dno) 雇员 姓名 证号 生日 地址 性别 工资 负责人证号 部门department(dname, dnumber, mgrssn, mgrstartdate) 部门 部

15、门名 部门号 负责人证号 负责人上任日期depart_location(dnumber, dlocation) 部门地址 部门号 部门所在地 查询的关系代数表达式: name, address( dname=研究部(employee department) )Employee证号 姓名 部门号 地址128 陈大 04 康乐 902 赵二 02 唐湾673 张三 04 东山 李四 03 康乐686 王五 01 东山Department部门号 部门名01 开发部 02 财务部 03 经理部 04 研究部 R1= Employee department证号 姓名 部门号 地址 部门名128 陈大 0

16、4 康乐 研究部 902 赵二 02 唐湾 财务部 676 张三 04 东山 研究部 李四 03 康乐 经理部 686 王五 01 东山 开发部 R2= dname=研究部( R1)证号 姓名 部门号 地址 部门名128 陈大 01 康乐 研究部 676 张三 03 东山 研究部 R3= name,address (R2)姓名 地址陈大 康乐 张三 东山 二、元组关系演算元组集 t | (t) 称为元组演算表达式;其中 t 是元组变量 (t) 是元组 t 必须满足的逻辑表达式,称为元组关系演算公式。一个元组演算表达式表示一个关系。三个基本的元组关系演算公式:R(t)为真 元组 t 是关系 R

17、的元组;tiuj为真 元组 t 的分量 i 与元组 u 的分量 j 满足关系;tic 或 cti为真 元组 t 的分量 i 与常量 c 满足关系;如果1 和2 是元组关系演算公式,则12、12 、 1也是元组关系演算公式。t()为真存在元组 t 满足元组演算关系公式 。 t()为真对任意的元组 t 都元组演算关系公式 。元组演算公式中运算的优先序: ( ), , , , , , 例在数据库COMPANY查询:研究部所有工作人员的名字和地址.用元组关系演算表达式 t | employee (e) ( tname=ename ) ( taddress=eaddress )(d (departmen

18、t(d) (ddname =研究部)(ddnumber=edno)employee(name,ssn,bdate,address,sex,salary,superssn,dno) 雇员 姓名 证号生日 地址 性别 工资 上司证号 部门department(dname, dnumber, mgrssn, mgrstartdate) 部门 部门名 部门号 负责人证号 负责人上任日期三、域关系演算域演算表达式的形式为t1tk|(t1tk),其中 ti 是元组 t 的各个分量, 是元组关系演算公式。三种基本的演算公式:R(t1.tk)=真,当且仅当以t1.tk为属性的元组在关系R中;tiuj=真,当且

19、仅当元组 t 的分量 i 与元组 u 的分量 j 满足算术比较关系;tic=真,当且仅当元组 t 的分量 i 与值 c 满足算术比较。 用逻辑运算符 连结公式。若 是域关系演算公式,则 ti() 也是域关系演算公式。若 是域关系演算公式,则 ti() 也是域关系演算公式。元组演算公式中运算优先序:( ), , 例在数据库COMPANY查询:研究部所有工作人员的名字和地址。employee(name,ssn,bdate,address,sex,salary,superssn,dno) 雇员 姓名 证号生日 地址 性别 工资 上司证号 部门department(dname, dnumber,mgr

20、ssn, mgrstartdate) 部门 部门名 部门号 负责人证号 负责人上任日期2.3 关系运算的安全性关系运算的安全性是指对有限关系运算时要求不导致无限关系和无穷验证。关系代数系统具有这种性质;关系演算系统却可能产生无限关系和无穷验证。 例元组关系演算表示式 t | EMPLOYEE(t)就是一个具有无限个元组的关系。若变量 t 的定义域是无限域时,则判断(t) F(t)为假或判断 (t) F(t)为真,都发生无穷验证。设是一个元组关系演算公式, 的符号集DOM()定义为,由如下两类符号构成的集合:(1) 中的常量;(2) 中出现的关系所有元组所有分量值。在所有关系都有限的情况下,DO

21、M()是有限集合。元组关系演算表达式=t| (t)的安全性定义为(1)使 (t)为真的 t,其分量必属于DOM( );(2)对 中形如t F(t)的子式,使 F(u) 为真的 u,其分量必属于DOM( );(3)对 中形如 t F(t) 的子式,使 F(u) 为假的 u,其分量必属于DOM( )。2.4 关系代数、元组演算、域演算的等价性 “两个关系运算表达式是等价的”,是指它们表达的关系相同。关系代数、元组演算、域演算在下述意义下是等价的:安全元组演算表达式安全域演算表达式关系代数式本章概要关系数据模型关系运算关系数据库查询语言标准关系数据库查询语言SQL2.5 关系数据库查询语言查询语言

22、关系运算类型 设计者 应用范围 数据库系统ISBL 关系代数 IBM英国中心 少用QUEL 元组演算 加州大学 较广泛 INGRESQBE 域演算 IBM公司 广泛 DB2SQL (1)+(2)+(3) IBM 最广泛数据库语言的两种使用方式交互使用:用户直接向数据库系统输入语句,请求服务。嵌入式使用:把数据库语言嵌入到某个程序设计语言中。这个程序设计语言称为宿主语言。宿主语言程序中的数据库语言语句,其功能是向数据库系统提出操作要求。本章概要关系数据模型关系运算关系数据库查询语言标准关系数据库查询语言SQL2.6 标准关系数据库查询语言SQLSQL的全名是 Structured Query L

23、anguage, 即结构查询语言。第一个SQL语言版本是由IBM公司SAN JOSE实验室设计的。从二十世纪七十年代开始,在推出的关系型数据库系统产品如ORACLE、SQL/DS、DB2、SYBASE上实现了SQL语言。1986年美国国家标准局(ANSI)颁布了美国标准的SQL。在1992年推出新标准,即SQL2。新标准SQL3将包括了数据库的许多新概念。SQL既可以交互方式使用,也可以作为程序设计语言子语言使用,是一个兼有关系代数和元组关系演算特征的语言。它包含数据定义语句和数据操纵语句,提供四类功能:数据定义、数据查询、数据维护、视图定义数据定义数据查询数据维护视图定义一、数据定义建立关系

24、 create table 修改关系 alter table 删除关系 drop table建立索引 create index 删除索引 drop indexcreate table ( 完整性约束条件 , , 完整性约束条件 );alter table add|dropdrop table create unique index on(order, ,order)clusterdrop index 例1 建立关系employee employee( name,ssn,bdate,address,sex,salary, superssn, dno)create table employee(

25、name varchar(15),/*变长字串*/ ssn char(9), /*定长字串*/ bdate char(9), address varchar(30), sex char(1), salary integer, superssn char(9), dno integer )例2 对关系employee增加属性 job: alter table employee add job varchar(12)例3 删除关系employee: drop table employee例4 删除索引name_index: drop index name_index例5 在关系employee建立

26、name的索引文件name_index: create index name_index on employee(name)二、数据查询=, ,in, is null ,exists Select distinct from R1, R2 , , Rn where group by having order by , , 简单查询 集合查询嵌套查询 包含聚集操作的查询包含分组统计的查询简单查询例1:列出工资2000元的雇员姓名和证号 SELECT name, ssn, bdate FROM employee WHERE salary2000例2: 列出全体雇员工资(不重复) SELECT di

27、stinct salary FROM employeeemployee(name,ssn,bdate,address,sex,salary,superssn,dno)例3:对于每个在哈尔滨进行的工程项目,列出工程项目号、所属部门号、该部门领导的名字 Select pnumber, dnum, name From project, department, employee Where dnum=dnumber and mgbssn=ssn and plocation=“哈尔滨”;employee(name,ssn,bdate,address,sex,salary,superssn,dno)dep

28、artment(dname,dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent(essn,dependent_name,sex, bdate, relationship)例4:列出每个工作人员及其直接领导人的名字 Select , From employee e,employee s Where e.superssn=s.ssn;employ

29、ee(name,ssn,bdate,address,sex,salary, superssn,dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex,bdate,relationship)例5:列出所有参加工程项目1,2或3的工作人员的身份证号select essn fro

30、m works_on where pno in(1,2,3);employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)例6

31、:列出所有还没有直接领导的工作人员的名字 Select name From employee Where superssn is null;employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, depe

32、ndent_name, sex, bdate, relationship)例7:按照工资多少的顺序列出所有在研究部工作的工作人员的名字和地址 select name,address from department, employee where dname = 研究部 and dnumber = dno order by salary ;employee( name, ssn, bdate, address, sex, salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dn

33、umber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)集合查询employee( name,ssn,bdate,address,sex,salary,superssn,dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname

34、, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent(essn, dependent_name, sex, bdate, relationship)例7:对于每个工程项目,如果张平是这个项目的工作人员或张平是管辖这个项目的部门领导,则列出这个项目的编号 (select pnumber from project, department, employee where dnum=dnumber and mgrssn=ssn and name=“张平” ) union (select pnumber from project,

35、works_on, employee where pnumber=pno and essn=ssn and name=“张平“ )嵌套查询employee( name,ssn,bdate,address,sex,salary,superssn,dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent(essn, dependen

36、t_name, sex, bdate, relationship)例7:对于每个工程项目,如果张平是这个项目的工作人员或张平是管辖这个项目的部门领导,则列出这个项目的编号 select distinct pnumber from project where dnum in ( select dnumber from department, employee where mgrssn=ssn and name=“ 张平”) or pnumber in ( select pno from works_on , employee where essn=ssn and name=“张平“);列出在部门

37、5所管辖的所有工程项目中工作的工作人员的名字 select name from employee where ssn in ( select essn from works_on where pno in ( select pnumber from project where dnum=5) ); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project(

38、 pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出有家属的工作人员的名字 select name from employee where exists( select * from dependent where essn=ssn); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mg

39、rssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出没有家属的工作人员的名字 select name from employee where not exists( select * from dependent where essn=ssn); employee( name,ssn,bd

40、ate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出至少有一个家属的部门领导的名字 select name from employee where exis

41、ts ( select * from dependent where essn=ssn) and exists ( select * from department where mgrssn=ssn);employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, p

42、no, hours)dependent( essn, dependent_name, sex, bdate, relationship)包含聚集操作的查询max (), min, avg, count列出所有员工的平均工资select avg(salary) from employee;列出部门5的员工数量 select count(ssn) from employee where dno=5; employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrsta

43、rtdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出没有家属的工作人员的数量 select count(name) from employee where not exists( select * from department where essn=ssn); employee( name,ssn,bdate,

44、address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出在部门5所管辖的所有工程项目中工作的员工的平均工资 select avg ( salary ) from emp

45、loyee where ssn in ( select essn from works_on where pno in ( select pnumber from project where dnumber=5) ); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on

46、( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)包含分组统计的查询列出各个部门工作人员的平均工资 select dno, avg( salary ) from employee group by dno;employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)pro

47、ject( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出各个部门员工数 select dno, count( ssn ) from employee group by dno; employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_l

48、ocation(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出平均工资大于2000元的各个部门工作人员的平均工资 select dno, avg( salary ) from employee group by dno having avg( salary )2000; employee( name,ssn,bdate,address,sex,sala

49、ry, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)Having 和 where的区别作用对象不同: having 作用于组 where 作用于关系查询语句的多样性列出在部门5所管辖的所有工程项目中的

50、工作人员的名字 select name from employee where ssn in ( select essn from works_on where pno in ( select pnumber from project where dnumber=5) ); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnum

51、ber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出在部门5所管辖的所有工程项目中的工作人员的名字 select name from employee , project , works_on where ssn=essn and pnumber=pno and dnum=5; employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, d

52、number,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出在部门5所管辖的所有工程项目中的工作人员的名字 select name from employee where ssn in ( select essn from project, works_on where pno=

53、pnumber and dnum=5); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出在部门5所管辖的所有

54、工程项目中的工作人员的名字 select name from employee, works_on where ssn=essn and pno in ( select pnumber from project where dnum=5); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocai

55、on)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出在部门5所管辖的所有工程项目中的工作人员的名字 select name from employee where exists( select * from project , works_on where pnumber=pno and essn=ssn and dnum=5); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department

56、( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, dependent_name, sex, bdate, relationship)列出在部门5所管辖的所有工程项目中的工作人员的名字 select name from employee where exists( select * from works_on where essn=ss

57、n and exists( select * from project where pnumber=pno and dnum=5); employee( name,ssn,bdate,address,sex,salary, superssn, dno)department( dname, dnumber,mgrssn, mgrstartdate)depart_location(dnumber, dlocation)project( pname, pnumber, dnum, plocaion)works_on( essn, pno, hours)dependent( essn, depende

58、nt_name, sex, bdate, relationship)三、数据更新插入操作删除操作修改操作插入语句的语法形式是INSERT INTO (, ) (VALUES(, , );insert into (, ) select 例1:为EMPLOYEE关系增加一个元组.INSERT INTO employeeVALUES (王明,655325678,1950年7月11日, 海市东方路3号,男,872,655678887,5)例2:把关系EMPLOYEE工资低于300元的雇员存入新关系em1.CREATE TABLE em1 (name varchar(10), ssn integer,

59、salary integer );INSERT INTO em1(name,ssn,salary) SELECT name, ssn, salary FROM employee WHERE salary300.修改语句的语法形式是UPDATE SET =, = WHERE 例1:把关系 project的10号工程项目的地址和所属部门修改为北京和5. UPDATE project SET plocation=北京,dnum=5 WHERE pnumber=10 例2:把研究部所有雇员的工资提高10%. UPDATE employee SET salary=salary*1.1 WHERE dno

60、 in (SELECT dnumber FROM department WHERE dname=研究部) ;删除语句的语法形式是DELETEFROM WHERE 例1:从关系EMPLOYEE删除在研究部的雇员. DELETE FROM employee WHERE dno in ( SELECT dnumber FROM department WHERE dname=研究部) 例2:删除关系EMPLOYEE的全体雇员 DELETE FROM employee四、视图定义视图定义的语法形式是CREATE VIEW (, ,) AS .例1:定义视图:列出全体工程人员的姓名,项目名,工作时数 CR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论