视图名字一般是以“V_”开头
视图在SQL语句中体现的角色与表相同,但是视图并不是一张真实存在的表,而只是对应一个 select语句的查询结果集,并将其当做表看待而已,
使用视图的目的就是简化sql语句的复杂度,重用子查询,限制数据访问
视图对应的子查询中的字段若含有函数或者表达式,那么该字段必须指定别名。
当师徒对应的子查询中的字段使用了别名,那么视图中该字段就用别名来命名
create view v_emp_10
as
select empno,ename,sal,deptno from emp where deptno=10
select * from v_emp_10
修改视图
由于视图仅对应一个select语句,所以修改视图就是替换该select语句而已
create or replace view v_emp_10 as
select empno id ,ename,sal,deptno from emp where deptno=10
视图分为简单视图与复杂视图
简单视图:对应的子查询中不含有关联查询,查询的字段不包含函数,表达式,没有分组,没有去重。反之则则是复杂视图。
对视图的DML操作就是对基于表的操作,那么操作不当可能对基表数据进行数据污染
插入和更新有风险
删除不会对基表产生数据污染
为视图添加检查选项,可以保证对视图的DML操作后视图对其可见,否则不允许进行该DML操作,这样就避免了对基表进行数据污染。
with check option
为视图添加只读选项,那么该视图不允许进行DML操作
with read only
查询数据库视图的对象名
select object_name from user_objects
where object_type='view'
select text,view_name from user_views
删除视图本身不会影响基表数据
但是删除视图数据会对应将基表数据删除
序列 也是数据库对象之一
作用是生成一系列数字
序列常用与为某张表的主键字段提供值使用
create sequence seq_emp_id
start with 1
increment by 1
序列支持两个伪列
nextval:获取序列下一个值
若是新创建的序列,那么第一次调用返回的是 satart with指定的值,
以后每次调用都会得到当前序列值加上步长后的数字
nextval会导致序列发生步进,且序列不能回退
currval:获取序列当前值,即:最后一次调用nextval后得到的值,currval不会导致步进。
但是新创建的序列至少调用一次nextval后才可以使用currval
索引
索引是数据库对象之一
索引是为了提高查询效率
索引的统计与应用是数据库自动完成的,只要数据库认为可以使用某个已创建的索引时就会自动应用。
create index idx_emp_ename on emp(ename)
约束
非空约束、 not null
唯一性约束可以保证表中该字段的值
任何一条记录都不可以重复,null除外 unique
constraint emp_email_uk unique(email)
主键约束 primary key
create table employees1(
eid number(6) primary key,
name varchar2(30),
email varchar2(50),
salary number(7,2),
hiredate date
);
关联不一定需要外键约束(了解)
检查约束
check()
alter table employees1
add constraint employees1_salary_check check(salary>2000);