数据完整性:
是指存储在数据库中的所有数据值均处于正确状态。如果数据库中保存有不正确的数据值,则该数据库的数据完整性已被破坏。引入数据库完整性的概念是为了防止数据库中存在不符合语义规定的数据
非空约束:
not null
唯一约束:
unique
主键约束:
建表后添加约束:alter table [表名] add constraint [主键名] primary key( [字段名] );
primary key
外键约束:
constraint [外键的名字,任意取] foreign key [当前表字段名] references [表名] [该表名的字段名]
检查约束:
删除约束:
alter table [表名] drop constraint [约束名]
视图
视图是从数据表(或者其他视图)中提取数据而成的一种虚拟表。这里的“提取”实际上就是查询操作——视图中定义包含有一条select语句,该语句查询现有数据表并将其结果返回作为本视图的内容。和表结构没有什么不同,因此视图一经创建可以当做表来使用。但是和前面的子查询创建表有所不同,视图本身并不咋物理上保存数据,在视图上进行的查询或更新操作实际上都是针对基表来完成的。
创建视图
SQL> create view myview1(姓名,编号,职位,工资)
2 as select empno,ename,job,sal from emp
3 where deptno = 20;
视图已创建。
SQL> desc myview1;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
姓名 NOT NULL NUMBER(4)
编号 VARCHAR2(10)
职位 VARCHAR2(9)
工资 NUMBER(7,2)
删除视图
SQL> drop view myview1;
视图已删除。
SQL> desc myview1;
ERROR:
ORA-04043: 对象 myview1 不存在
重新编译视图
如果视图的基表结构发生变化,比如添加或删除了字段,则视图状态会被标记为无效,此后当再有用户访问该视图,Orcale会自动重新编译该视图,以避免可能的运行错误。此外,用户也可以执行alter view语句手工编译视图。
语句:alter view [视图名] compile;
在视图上进行更新操作
由于视图是一种虚拟的数据表,其本身并不存储数据,因此在视图上执行更新操作时实际更新的是其基表中的数据。并不是所有的视图都可以执行更新操作。因当遵循如下原则:
1.用户要有对视图基表进行操作的权限;
2.视图定义的子查询中不能使用分组函数、group by子句、distinct关键字、rownum伪列,其查询字段不能为表达式;
3.由两个以上基表中导出的视图不能进行delete操作;
4.基表中非空的字段在视图定义中未包括、该字段也未曾设过缺省值,则不可以在视图上进行insert操作。
添加数据:
在创建视图的时候加上with check option;可以限制在视图上添加的数据。
注意:上述 with check option 选项相当于在新定义的视图上定义了check类型的约束,和数据表的情况不同,视图上不允许定义其他类型的约束,也不允许以其他方式定义的check约束(比如在视图定义的字段名列表中定义)。
修改数据:
同上差不多
删除数据:
delete [视图名] where [字段名]=[条件]