1. 视图
视图(view),称为虚表,在数据库中不存在实体。
视图本质上是对物理表(基表)的一种数据保护。让开发者或者用户只能看到基表中的部分数据。
1.1 创建视图
创建视图的语法
create
create
1.2 使用视图
可以向使用表一样使用视图
-- 使用视图
修改视图中的数据
添加数据
-- 向视图添加数据
通过视图添加数据,数据最终添加到基表中,因为视图是虚表。
视图一般只是基表的部分数据,通过视图向基表添加数据时,基表的数据只能添加一部分,此时如果基表会对未提供的字段置null。如果基表对未提供的字段要求不能为null,此次添加会失败。
insert
![ecd6e861c3bbd12690a0947397ec792f.png](https://i-blog.csdnimg.cn/blog_migrate/e00a29e62c0e7f6ce445743de480246d.jpeg)
删除数据(delete)
-- 【2】删除数据
更新数据(update)
update
不能通过视图更新视图不存在的字段
只读视图(with read only)
create
![5848da89d2c35e89d9e9aa8d5234bc79.png](https://i-blog.csdnimg.cn/blog_migrate/5e6a0a0c0ea60e32c0bb6be88ad8d533.jpeg)
1.3 视图的应用
-- 平均薪水的等级最低的部门,它的部门名称是什么
2. 权限管理
第一个使用scott账户是需要解锁
alter
此时scott如果对数据库进行DDL操作是没有权限的。把创建视图、创建表的权限分配给soctt
注意:权限性操作都要以sysdba什么来操作。
![711bda3b14166a17dada50b3238c4654.png](https://i-blog.csdnimg.cn/blog_migrate/80f99c84f06bf76ba6b68f65608307ff.jpeg)
如何创建一个用户并授予一定权限?
--创建用户
1.GRANT 赋于权限
常用的系统角色权限集合有以下三个:
CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)
常用的数据对象权限有以下五个:
ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名,
DELETE ON 数据对象名, INSERT ON 数据对象名, ALTER ON 数据对象名
GRANT CONNECT, RESOURCE TO 用户名;
GRANT SELECT ON 表名 TO 用户名;
GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限
REVOKE CONNECT, RESOURCE FROM 用户名;
REVOKE SELECT ON 表名 FROM 用户名;
REVOKE SELECT, INSERT, DELETE ON 表名 FROM 用户名1, 用户名2;
查看用户权限
select * from user_sys_privs;
3. 表
数据库数据类型
![7b77af07eb46d2069427ce42f0341d84.png](https://i-blog.csdnimg.cn/blog_migrate/3d2de64d259469b5e77d96301832bd1f.jpeg)
其他类型:
CLOB:最大长度4G -->大对象很少使用:如果存在大对象,一般的解决方案存入文件地址(地址为程序所在应用服务器的相对路径)。
BLOB:存二进制文件
注意:在数据库设计时,如果要存大文件(视频,音频等),一定不要用BLOB/CLOB,通用的解决方案都是文件的地址。
3.1 表的创建
创建表的语法:
CREATE
创建一个学生表
T_STUINFO(sid,name,phone,gender,birthday,address)
create
开发工具生成方式
![b0104f1632a2f660da887e6699ac32ab.png](https://i-blog.csdnimg.cn/blog_migrate/aaff1b1863919eb5a24c80578ea4f4bb.jpeg)
create
通过子查询结果创建表
-- 通过其他表结构创建表
3.2 表的修改
-- 修改表操作
3.3 insert
语法
INSERT
例:
-- insert
3.4 update
语法
UPDATE
例:
update
3.5 delete
语法
DELETE
例:
-- delete
4. 序列
序列是oracle专有的对象,它用来产生一个自动递增的数列。
-- 创建序列
-- 序列的使用
在数据库开发设计表时,如果需要一个字段的值是自增的话,优先考虑序列。
5. 事务
5.1 事务概念
事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。
1.事务是为了保证数据库的完整性。
2.事务不能嵌套。
在oracle中,没有事务开始的语句。一个Transaction起始于一条DML(Insert、Update和Delete )语句,结束于以下的几种情况:
• 用户显式执行Commit语句提交操作或Rollback语句回退。
• 当执行DDL(Create、Alter、Drop)语句事务自动提交。
• 用户正常断开连接时,Transaction自动提交。
• 系统崩溃或断电时事务自动回退。
-- beginTransaction(insert/update/delete)
-- beginTransaction(insert/update/delete)
事务结合java代码的格式
try
5.2 保存点(save point)
-- beginTrans
save point 保持当前数据库的状态点。以便后续通过rollback回滚到指定状态点。
try
5.3 事务的特性
事务四大特征:原子性,一致性,隔离性和持久性。
1. 原子性(Atomicity)
一个原子事务要么完整执行,要么干脆不执行。这意味着,工作单元中的每项任务都必须正确执行。如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。如果所有任务都被成功执行,事务就会被提交,即对数据所作的修改将会是永久性的。
2. 一致性(Consistency)
一致性代表了底层数据存储的完整性。它必须由事务系统和应用开发人员共同来保证。事务系统通过保证事务的原子性,隔离性和持久性来满足这一要求; 应用开发人员则需要保证数据库有适当的约束(主键,引用完整性等),并且工作单元中所实现的业务逻辑不会导致数据的不一致(即,数据预期所表达的现实业务情况不相一致)。例如,在一次转账过程中,从某一账户中扣除的金额必须与另一账户中存入的金额相等。支付宝账号100 你读到余额要取,有人向你转100 但是事物没提交(这时候你读到的余额应该是100,而不是200) 这种就是一致性
3. 隔离性(Isolation)
隔离性意味着事务必须在不干扰其他进程或事务的前提下独立执行。换言之,在事务或工作单元执行完毕之前,其所访问的数据不能受系统其他部分的影响。
4. 持久性(Durability)
持久性表示在某个事务的执行过程中,对数据所作的所有改动都必须在事务成功结束前保存至某种物理存储设备。这样可以保证,所作的修改在任何系统瘫痪时不至于丢失。
6. 约束
当我们创建表的时候,同时可以指定所插入数据的一些规则,比如说某个字段不能为空值,某个字段的值(比如年龄)不能小于零等等,这些规则称为约束。约束是在表上强制执行的数据校验规则.
常见约束:
1. NOT NULL 非空
2. UNIQUE Key 唯一键
3. PRIMARY KEY 主键
4. FOREIGN KEY 外键
5. CHECK 自定义检查约束
6.1 主键约束(primary key)
主键用于唯一标识一条记录。主键值不可为空,也不允许出现重复。
-- 创建表
![637fe0b1305360a364e38753ef1b71f9.png](https://i-blog.csdnimg.cn/blog_migrate/d55eae894d6f1da87d48cbf2fab15efc.jpeg)
表级约束:当多个列(字段)参与约束,可以用表级约束。
-- 创建表,以表级约束
6.2 非空约束(not null)
确保字段值不允许为空
只能在列级定义
-- 创建列级约束-显式指定名称,pk_sid
6.3 唯一性约束(UNIQUE)
唯一性约束条件确保所在的字段或者字段组合不出现重复值
唯一性约束条件的字段允许出现空值
Oracle将为唯一性约束条件创建对应的唯一性索引
create
6.4 自定义约束
Check约束用于对一个属性的值加以限制
create
create
6.5 外键约束
create
对于主表的删除和修改主键值的操作,会对依赖关系产生影响,以删除为例:当要删除主表的某个记录(即删除一个主键值,那么对依赖的影响可采取下列3种做法:
1. RESTRICT方式:只有当依赖表中没有一个外键值与要删除的主表中主键值相对应时,才可执行删除操作。
2. CASCADE方式:将依赖表中所有外键值与主表中要删除的主键值相对应的记录一起删除
3. SET NULL方式:将依赖表中所有与主表中被删除的主键值相对应的外键值设为空值
FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO)
[ON DELETE [CASCADE|SET NULL]] 如省略on短语,缺省为第一中处理方式。
drop