--插入新的记录
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;
--三、删除表中重复记录是难点!待续