约束:
--创建一个表: //先不加约束
create table db3(ID number,NAME varchar2(20),job varchar2(20),sal long,deptno number);
--给ID加个主键(唯一性和非空)
alter table db3modify ID constraint ID_zhujianprimary key;
--给NAME/job加个非空
alter table db3modify NAME constraint NAME_notnullnot null;
alter table db3modify job constraint job_notnullnot null;
--给部门号deptno增进外键
alter table db3modify deptno constraint deptno_FK references dept(deptno) on delete set null;
-- 修改 字段名 关键字 给约束取个名字 外键引用dept表的deptno字段 ON 字段删除则清空。
--on delete cascade 表示如果删除引用 则删除引用这字段的记录。
--如果是增加字段并加约束
alter table db3add age number constraint age_notnull not null;
-- 增加 字段 类型
--约束单选
alter table db3add gender varchar2(10) ;
--增加约束:
alter table db3modify gender constraint gender_danxuancheck (gender in('男','女','其它'));
--增加记录:
insert into db3(ID,NAME,JOB,SAL,DEPTNO,AGE,GENDER) values(1,'李白','诗人',2200,20,18,'男');
insert into db3(ID,SAL,DEPTNO,AGE,GENDER) values (1,1800,19,12,'大瓦房挖法');--错误示例
--//ID 违反了唯一性(主键),NAME JOB 违反了非空,deptno部门号违反了外键引用,GENDER性别违反了约束单选。
--总结:
-- 在见表时给字段加约束 直接在后面写就是
-- 在给已有字段加约束: alter table 表名 modify(修改) 字段 constraint(给约束取名的关键字)↓↓
-- 给约束取的名字
视图:
--视图就是一个假表,它为了让看表和查询表更加方便直观。//一般开发中不用视图修改表。
--在scott下默认不能创建表,需要在管理员下给权限
Grant create view to scott;
--创建视图
create view v_view as (select e.ename,e.job,e.sal,d.deptno from empe,dept d where e.deptno=d.deptno);
--创建或替换视图
Create or replace view v_view as (select e.ename,e.job,e.sal,d.deptnofrom emp e,dept d where e.deptno=d.deptno);
--只读视图 //不可通过视图修改表
--在后面加上 with readonly
Create or replace view v_view as (select e.ename,e.job,e.sal,d.deptnofrom emp e,dept d where e.deptno=d.deptno) with read only;
--视图里的数据条才能被修改
--在后面加上 with check option
Create or replace view v_view as (select e.ename,e.job,e.sal,d.deptnofrom emp e,dept d where e.deptno=d.deptno) with check option;