- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库设计第3章PPT
* 2、定义主键和实体完整性 使用PRIMARY KEY子句来实现实体完整性。 例如: CONSTRAINT pk PRIMARY KEY (catalogNo) CONSTRAINT pk1 PRIMARY KEY (catalogNo, actorNo) 3、定义外键和参照完整性 使用FOREIGN KEY子句在表中定义外键。 SQL通过限制子表的INSERT和UPDATE操作实现参照完整性,这些操作试图在子表中创建和父表中的候选键不相匹配的外键值。 注:意思就是,父表子表中都有这个列,你修改了子表中的这个列,那么父表中的相应列无法得到同步的更新,会造成数据的不同步。 二十、子查询分类 不相关子查询:子查询的查询条件不依赖于父查询 相关子查询:子查询的查询条件依赖于父查询 二十一、嵌套查询求解方法 不相关子查询:是由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。 相关子查询:首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表;然后再取外层表的下一个元组;重复这一过程,直至外层表全部检查完为止 二十二、 使用子查询 找出在‘8 Jefferson Way’分公司工作的员工: SELECT staffNo, name, position FROM Staff WHERE branchNo = (SELECT branchNo FROM Branch WHERE street=‘8 Jefferson Way’); 子查询作为关系数据库的重要查询条件,是表关系的突出表现,如TABLE_A中含有a,b,c项,TABLE_B中含有c,d项目,可以d为条件查找TABLE_A中的对应项。 说明:子查询不能放在branchNo前面 * 内层的SELECT在Branch表中找出在‘8 Jefferson Way’地址上的分公司的分公司号 (‘B001’)。 外层的SELECT然后根据这个分公司号(‘B001’),检索出在该分公司中工作的员工的信息。 外层SELECT实际进行的查询是: SELECT staffNo, name, position FROM Staff WHERE branchNo = ‘B001’; 说明: * 二十三、 包含聚合函数的子查询 列出年薪高于平均年薪的所有员工: SELECT staffNo, name, position FROM Staff WHERE salary (SELECT AVG(salary) FROM Staff); 不能写成‘WHERE salary AVG(salary)’。 换句话说,使用子查询是为了找到平均年薪的值 (41166.67),然后使用外层查询查找出年薪高于这个平均值的员工的其他信息: SELECT staffNo, name, position FROM Staff WHERE salary 41166.67; * 结果表 二十四、带有EXISTS谓词的子查询 1. EXISTS谓词 存在量词? 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 若内层查询结果非空,则返回真值 若内层查询结果为空,则返回假值 由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义 2. NOT EXISTS谓词 查询所有选修了1号课程的学生姓名。 用嵌套查询 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC /*相关子查询*/ WHERE Sno=Student.Sno AND Cno= 1 ); 思路分析: 本查询涉及Student和SC关系。 在Student中依次取每个元组的Sno值,用此值去检查SC关系。 若SC中存在这样的元组,其Sno值等于此Student.Sno值,并且其Cno= 1,则取此Student.Sname送入结果关系。 还可以用连接运算 SELECT Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno= 1; 查询没有选修1号课程的学生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=‘1); 此例用连接运算难于
您可能关注的文档
最近下载
- 津津有味·读经典Level3《金银岛》译文和答案.docx
- SHT3503-2017石油化工建设工程项目交工技术文件规定.pdf VIP
- 九年级下学期班主任工作总结_九年级下学期的班主任工作总结范文.docx VIP
- 九年级下学期班主任工作计划--班主任工作计划.docx VIP
- 九年级班主任上学期工作计划 九年级上学期班主任学期工作计划(通用6篇).docx VIP
- 九年级上学期班主任工作总结.docx VIP
- 八年级下学期班主任工作总结-班主任工作总结.doc VIP
- 七年级上《第2章整式的加减》测试题及答案(数学试卷新课标人教版七年级上单元试题).doc VIP
- 八年级下学期班主任工作计划-班主任工作计划.doc VIP
- 班主任上学期工作计划:八年级上学期班主任工作计划.doc VIP
原创力文档


文档评论(0)