第八章 操作数据
1.描述DML语句
2.使用INSERT,UPDATE和DELETE命令操作数据
3.控制事务
数据操作语言
1.使用DML语句可执行:
1.插入新数据
2.修改已有数据
3.删除数据
2.一个事务是DML语句的逻辑工作单元
INSERT语句
插入空值
INSERT语句中使用函数
从其他表中拷贝记录
UPDATE语句
课堂作业:
1.
2.
3.
修改记录
使用多列子查询修改记录
修改记录时违反完整性约束
DELETE语句
从表中删除数据
删除的记录基于其他表的记录
数据库的事务
1.一组DML语句,修改的数据在他们中保持一致
2.一个DDL语句
3.一个DCL语句
4.开始于第一份执行的语句
5.结束于:
1.COMMIT或ROLLBACK
2.DDL or DCL(grant/revoke)语句
3.某些错误,退出,或系统崩溃
事务的自动处理
1.当下列情况发生时事务自动提交:
1.执行一个DDL语句
2.执行一个DCL语句
3.从SQL*Plus正常退出
2.当从SQL*PLUS中强行退出或系统失败时,十五万自动回滚
COMMIT和ROLLBAK的优点:
1.保证数据一致性
2.在数据永久性生效前重新查看修改的数据
3.相关逻辑操作单元
控制事务
提交或回滚前数据的状态:
1.以前的数据可恢复
2.当前的用户可看到DML操作的结果
3.其他用户不能看到DML操作的结果
4.被操作的数据被锁住,其他用户不能修改这些数据
提交后数据的状态:
1.数据的修改被永久写在数据库中
2.数据以前的状态永久性丢失
3.所有的用户都能看到操作后的结果
4.所有的savepoints被去掉
提交数据
回滚后数据的状态:
回退到某一个标识
语句回滚:
1.如果一条DML语句执行时失败,只有此语句回退
1.Oracle执行了一个自动的savepoint
2.其他的变化被保留
2.客户应该执行COMMIT或ROLLBACK以结束事务
事务特性:
事务的ACID特性:
1.原子性(atomicity):
一个事务中包含的所有sql语句都是一个不可分割的单元。
2.一致性(consistency):
事务必须确保数据库的状态是一致的。
3.隔离性(isolation):
多个事务独立运行,彼此不影响。
4.持久性(durability)
事务一旦提交,数据库的变化就会被永久保留下来。
读一致性:
1.读一致性保证了查询数据德奥一致的结果。
2.不同用户修改的数据不会发生冲突。
3.对相同的数据操作时确保:
1.查询时不用等写完成
2.写时不用等查询完成
第九章 管理表
数据库的对象
命名规则
1.必须以字母开头
2.可包括数字
3.只能包含A-Z,a-z,0-9,_,$,and#
4.不要使用oracle的保留字
5.同一用户的对象不能同名
创建表:
必须有:
1.建表的权限
2.有存储区域
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr];
可指定:
1.表名Table name
2.列名,列的数据类型,列的大小
引用其他用户的表
缺省选项
建表
查询数据字典
数据类型
使用子查询创建表
使用CTAS创建表
ALTER TABLE语句
增加列
修改列
删除表:
1.表中所有数据将删除
2.事务被提交
3.所有索引被删除
4.不能回退
SQL>DROP TABLE dept30;
Table dropped.
改变对象名称
截取表的所有记录
1.TRUNCATE TABLE语句:
1.删除表中所有记录
2.复位HWM
3.释放表的存储空间
2.不能回退
3.和DELETE一样,是删除记录的手段之一
SQL》TRUNCATE TABLE department;
Table truncated.
在表中加注释
课堂练习
第十章 约束
什么是约束(记忆):
1.约束是表级强制执行的规则
2.当表中数据有相互依赖性时,可保护数据不被删除
3.Oracle有如下类型的约束:
1.NOT NULL
2.UNIQUE Key
3.PRIMARY KEY
4.FOREIGH KEY
5.CHECK
约束概念:
1.Oracle使用SYS_Cn格式命名约束
2.创建约束:
1.在建表的同事创建
2.建表后创建
3.可定义列级或表级约束
4.可通过数据字典表查看约束。
创建约束
非空约束(NOT NULL)
唯一性约束(UNIQUE)
主键约束(PRIMARY KEY )
外键约束(FOREIGN KEY)
外键约束关键字
1.FOREIGH KEY
定义子表的哪一列作为外键约束
2.REFERENCES
指示主表的参照的列
3.ON DELETE CASCADE
删除主表记录时将子表相关记录删除
4.ON DELETE SET NLL
将外键引用置为空值
CHECK约束
加约束
删除约束
使约束失效
使约束生效
查看约束
查看约束建立在哪些列
第十一章 视图
什么是视图
为什么使用视图:
1.限制对数据的访问
2.很容易的写成复杂的查询
3.允许数据的独立性
4.不同的视图可获得相同的数据
简单视图和复杂视图
创建视图
查询UESR_VIEWS数据字典视图
修改视图
创建复杂的视图
对视图进行DML操作的规则
1.可对简单视图执行DML操作
2.在下列情况下不能删除记录:
1.视图包括组函数
2.视图包括GROUP BY子句
3.视图包括DISTINCT
4.Rownum为列关键词
3.在下列情况下不能修改记录:
1.前面所提到的情况
2.列是由表达式定义的
3.包括ROWNUM虚列
4.在下列情况下不能添加记录:
1.前面所提到的情况
2.视图的基表由非空列,但在视图中没有此列
使用WITH CHECK OPTION子句
删除视图
小结
课堂作业:
第十二章 其他数据库对象
数据库对象
什么是序列号
1.自动生成唯一的数字
2.是一个共享的对象
3.典型的应用于表的主键
4.可替代应用代码
5.将序列号值放在缓存中可提高访问速度
CREATE SEQUENCE语句
创建序列号
确认序列号
使用序列号
修改序列号
什么是索引:
1.是一种对象
2.使用指针加快记录访问速度
3.减小硬盘I/O
4.索引独立于表而存在
5.数据库自动使用和维护
怎么建索引:
1.自动:
唯一性索引自动被创建,当定义PRIMARY KEY或UNIQUE约束时。
2.手动:
使用CREATE INDEX命令
创建索引
创建索引规则:
1.索引列应该经常在WHERE子句中,或是连接条件。
2.此列值域比较广
3.此列包含大量空值
4.在WHERE子句或连接条件中经常一起使用的列
5.对大表查询的结果小于总数据的2~4%
6.下列的表不适合建索引:
1.表很小
2.列不经常在WHERE子句中使用
3.对大表查询的结果大于总数据的2~4%
4.表经常被修改
确认索引
删除索引
同义词
创建和删除同义词
第十三章 用户及权限
控制用户的访问
权限
1.数据库的安全性
1.系统安全性
2.数据安全性
2.系统权限:获得后可访问数据库
3.对象权限:操作数据库对象的内容
4.Schema:对象的集合(tables,views,sequences)
系统权限:
1.多余100种系统权限可用
2.DBA有最高系统权限
1.Create new users
2.Remave users
3.Remove tables
4.Backup tables
建用户
使用系统权限
授予系统权限
什么是角色
创建角色
改变用户口令
对象权限
授予对象权限
使用WITH GRANT OPTION和PUBLIC关键字
确认权限的数据字典表
收回对象的权限
小结
直接插入数据: