4--2--数据库高级.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4--2--数据库高级

数据库的高级操作 数据库培训 目标 数据库对象的创建命令 回顾数据库的基础 数据库文件的组成: 数据文件:*. dbf 日志文件:*.log 控制文件:*.ctl 回顾sql sql的组成 dml:管理数据的命令 ddl:定义对象的命令 dcl:数据控制命令 tcl:事务控制命令 回顾表的基础知识 利用命令建表 CREATE TABLE stuInfo /*-创建学员信息表-*/ ( stuName VARCHAR2(20) NOT NULL , --姓名,非空(必填) stuNo CHAR(6) NOT NULL, --学号,非空(必填) stuAge number(4), --年龄,INT类型默认为4个字节 stuID varchar2(18,0), --身份证号 stuAddress varchar2(100) default ‘地址不详’ --住址,允许为空,即可选输入 ) 删除表 如果当前数据库中已存在stuInfo表,再次创建时系统将提示出错 。如何解决呢? 回顾约束 约束的目的:确保表中数据的完整型 常用的约束类型: 主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空 唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。 检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束 默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男” 外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列 添加约束 添加约束的语法: 添加约束示例 删除约束 如果错误地添加了约束,可以删除约束 删除约束的语法 小结 通过图形化完成的操作基本上都可以通过命令完成 包括建表、建约束等以及对应的删除操作 高级查询 掌握简单子查询的用法 掌握IN子查询的用法 掌握EXISTS子查询的用法 ANY,ALL的用法 什么是子查询 查找年龄比James大的同学 思路 首先找出James的年龄 然后作为条件判断 如何一步实现? 思考 假如James这个学生不存在,会出现什么的情况? 子查询代替内连接 查询刚好通过(60分)的学员。 子查询的优势 一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换 子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据 表连接更适合于查看多表的数据 子查询-in 对于刚才的情况,如果超过一个同学是60分,出现什么情况 in-高级 如果子查询中结果集出现了多行,必须用in SELECT * FROM students where sid in(select sid from score WHERE score=60) not in 如何查询未参加考试的学生? 首先找出成绩表中存在的学生,然后用not in作为条件即可 exists查询 如果子查询的结果非空,即记录条数1条以上,则EXISTS (子查询)将返回真(true),否则返回假(false) EXISTS也可以作为WHERE 语句的子查询,但一般都能用IN子查询替换 exists案例 查询至少参加了3门课考试的同学 用in如何实现? 用exists如何实现 any与all 如何查询比 “刘四”任一门成绩高的同学? 如何查询比“刘四”所有课程成绩都高的同学? any表示满足结果集任何一个条件即可 all表示必须满足所有的条件 union 可以对多个结果集进行合并,成一个新的结果集 结果集的数目必须一致,类型要兼容 结果集的交集,并集和差集 union是并集 intersect是交集 … 结果集的集合操作 结果集的交集,并集和差集 union是并集 intersect是交集 minus是补集 小结 子查询如果不是十分肯定结果集只有一个,最好用in,不用= in可以指定几个固定的值,也可以是一个查询结果 exists基本上可以和in互换,但是效率更高 all,any,union适合于特定的场合,灵活运用 为什么需要事务5-1 例如,银行转帐问题: 假定资金从帐户A转到帐户B,至少需要两步: 帐户A的资金减少 然后帐户B的资金相应增加 为什么需要事务5-2 假定张三的帐户直接转帐1000元到李四的帐户 为什么需要事务5-3 目前两个帐户的余额总和为:1000+1=1001元 为什么需要事务5-4 模拟实现转帐 : 从张三的帐户转帐1000元到李四的帐户 为什么需要事务5-5 错误原因分

文档评论(0)

mv2323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档