oracle基础:插入

--插入新的记录
create table testtable(
c1 varchar2(10) default '默认值1',
c2 varchar2(10) default '默认值2',
c3 varchar2(10) default '默认值3',
c4 date default sysdate
);
insert into testtable(c1,c2,c3) values(default,null,'测试值1');
select * from testtable;
/*
1.insert没有包含的列,则会自动添加默认值
2.如果包含默认值的列呀显示默认值,用default关键字
3.如果已经设定了null或者其他值,将不会在生成默认值
*/


--复制表和数据
create table testtable2 as  select* from testtable ;--复制表和数据
create table testtable2 as  select* from testtable where 1=2;--复制表的定义,不复制数据
insert into testtable2 select * from testtable;--复制数据


--限制输入录入


alter table emp add constraints ch_sal check(sal>0);--一般情况下,添加约束即可
insert into (select empno,ename,hiredate from emp where hiredate<= sysdate with check option) values(9999,'test',sysdate+1);
/*复杂的,雇佣日期必须小于等于当期系统时间。上面查询语句将将被为视图,条关键字 with check option 使得插入操作在条件不满足的情况下,无法插入,从而实现约束*/



--二、多表插入
/*
   1.无条件插入 insert
   2.有条件  insert all
   3.有条件  insert first
*/


--创建两个案例用表


create table emp1 as select empno,ename,job from emp where 1=2;
create table emp2 as select empno,ename,deptno from emp where 1=2;


--无条件向这俩个案例用表插入数据
insert all
   into emp1(empno,ename,job) values(empno,ename,job)
   into emp2(empno,ename,deptno) values(empno,ename,deptno)
select empno,ename,job,deptno from emp ;
select *from  emp1;
select *from  emp2;




--有条件向这俩个案例用表插入数据
delete emp1;
delete emp2;


insert all
   when job in ('SALESMAN','MANAGER') then
   into emp1(empno,ename,job) values(empno,ename,job)
   when deptno in ('20','30') then
   into emp2(empno,ename,deptno) values(empno,ename,deptno)
select empno,ename,job,deptno from emp ;


select *from  emp1;
select *from  emp2;


--三、删除表中重复记录是难点!待续



































你可能感兴趣的:(oracle)