Insert语句也是oracle中用的非常多的一类SQL语句,如果你要经常做信息系统的开发,你一定要对Insert into的语法很熟悉。
下面是最基本的insert语法
Insert into table [column1,column2….]
Values (value1,value2….);
使用这种语法一次只能插入1行数据。
如果你想使用insert into插入一行数据,该数据包含了表中每一列的值。那么你可以不用把这个表的每一列的列出来,而直接按表中列定义的顺序来给出给一列的值即可。
例如
insert into emp
values(7935,’Robin’,'SALESMAN’,7566,’04-5月-08′,3000,100,20);
当然此时你也可以在insert 从句中把所有的列都列出来。你也可以把列的顺序打乱,然后按照新顺序来给出你要赋的值。
一旦你在insert从句中省略了列表项,你就必须给出该表的每一列的值,一个也不能遗漏。
如果省略了insert into后面的列表项,而此时又想对某些值赋空值,可以使用显式的使用关键字NULL,例如:
insert into emp
values(7936,’Linlin’,'SALESMAN’,7566,’03-5月-08′,3000,NULL,20);
这里我们使用了NULL关键在对倒数第二个值进行了赋值。
也还可以使用default关键字。前提是你在定义你的表时已经定义了default值。
例如:
Create table testtable
(c1 int,
C2 varchar2(20) default ‘unknown’);
创建完成表后,我们可以使用带default的insert语句来进行数据的插入
insert into testtable
values(1,default);
然后我们在查看刚才插入的数据,你会发现已经自动的被写入了unknown.
使用insert into语句还需要注意的是
1. 不能违反已经已有的约束。例如本来该列不允许为空的,你非要插入空值,肯定会出错。
2. 类似insert这样的DML语句不会自动的提交,需要使用commit提交之后,别的用户才能看到你所做的更改。
3. insert语句当然也可以一次插入多行,这个我们在稍后作介绍。
4. 如果我们在写insert into后面列的清单中没有给出某些列,而这些列有恰好可以为空的话,oracle将会自动地把那些没有列出来的列赋值为空。
5. 也可以在insert 语句中使用一些oracle中预定义的函数和关键字。例如sysdate等等
6. 前面我们在介绍oracle的嵌套子查询时提到,我们可以把嵌套子查询当作一个变量来用,所以我们也可以在这里的insert into语句中任何位置使用嵌套子查询。
对于字符和日期型的数据用单引号引起来。