语法格式:
insert into 表名称[(字段名称1,字段名称2……)]values[(值1,值2,……)]
创建备份表myemp
create table myemp as select * from emp;
标准语法:对于没有数据的列就不写进字段列表
insert into myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(7899,'张三丰','清洁工',7369,to_date('2005-02-20', 'yyyy-mm-dd'),1200,300,40);
select * from myemp;
简略语法:如果插入时没有明确的写出字段,则没有值得字段用null来代替
insert into myemp values(9991, '陈寅恪', '教师', null, to_date('1902-01-03', 'yyyy-mm-dd'), 1200, null, 30);
select * from myemp;
两种写法比较:
推荐使用标准写法,不推荐使用简略写法。
简略写法再添加表字段的时候容易出问题。
给myemp 表添加字段住址字段 address
alter table myemp add address varchar2(100);
此时再执行上面的两条insert 语句
insert into myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(7899,'张三丰','清洁工',7369,to_date('2005-02-20', 'yyyy-mm-dd'),1200,300,40);可以顺利插入表中
而
insert into myemp values(9991, '陈寅恪', '教师', null, to_date('1902-01-03', 'yyyy-mm-dd'), 1200, null, 30);没有足够的值
检查下就可以发现,添加表字段后,myemp增加了字段address,而简略写法中,没有预留该字段值,故出错。
所以,推荐标准写法,按照列插入数据。