数据的录入采用【insert】语句。对应不同的录入方式,【insert】语句的语法会有所变化。
4.6.1 单行记录的录入
1. 语法
insert into 数据表(字段名1,字段名2,……) values(字段名1的值, 字段名2的值,……)。
由于字段的类型不同,在书写字段值的时候要注重格式。
数值型字段,可以直接写值。
字符型字段,其值上要加上单引号。
日期型字段,其值上要加上单引号,同时还要注重年、月、日的排列次序。
在数据的插入语句中,插入列排序和插入值要一一对应。字符型和日期型字段要加上单引号,非空列必须有值。
2. 实例
在scott.emp数据表里共包含了3种类型的字段。
empno,number(4),NOT NULL,数值型,长度为4,不能为空。
ename,varchar2(10),字符型,长度为10。
hiredate,date,日期型。
我们以在这3个字段中插入记录为例进行说明。
对于日期型的数据,读者往往会感觉为难,因为不知道年、月、日的排列顺序和格式,这里教给大家几个方法。首先查询范例数据表中的数据,然后“依葫芦画瓢”就可以了。
(1)在【命令编辑区】输入“select empno, ename, hiredate from scott.emp;”,然后单击【执行】按钮,出现如图4.41所示的结果。因此,笔者的计算机系统默认的日期型数据格式应该为“日-月-年”。
【参见光盘文件】:\第4章\4.6\461-1.sql。
(2)在【命令编辑区】输入“insert into scott.emp(empno, ename, hiredate) values (7999, ’JONE’,’25-11月-2002’);”,然后单击【执行】按钮,出现如图4.42所示的结果。
【参见光盘文件】:\第4章\4.6\461-2.sql。
(3)在【命令编辑区】输入“select * from scott.emp where empno=7999;”,然后单击【执行】按钮,出现如图4.43所示的结果。
【参见光盘文件】:\第4章\4.6\461-3.sql。
4.6.2 多行记录的录入
在数据的录入中,经常需要将从数据表中查询到的数据稍做修改成批录入的情况,这就是多行数据的录入。
1. 语法
insert into 数据表(字段名1,字段名2,……)
(select(字段名1或运算, 字段名2或运算,……) from 数据表 where 条件)
实际上,首先利用子查询语句查询结果,然后再利用insert语句将结果插入数据表。子查询和insert中的数据表既可以相同,也可以不同,但要求查询结果的字段和insert插入的数据表中字段属性完全一致。
2. 实例
在【命令编辑区】执行以下语句。
―――――――――――――――――――――――――――――――――――――
insert into scott.emp(empno,ename,hiredate) (select empno+100,ename,hiredate from scott.emp where empno>=6999 );
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:\第4章\4.6\462.sql。
单击【执行】按钮,出现如图4.44所示的结果。
4.6.3 表间数据复制
可以从一个数据表中选择需要的数据插入到全新的数据表中。
(1)在【命令编辑区】执行以下语句。
―――――――――――――――――――――――――――――――――――――
create table scott.test
as
(
select distinct empno,ename,hiredate
from scott.emp
where empno>=7000
);
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:\第4章\4.6\463.sql。
然后单击【执行】按钮,出现如图4.45所示的结果。
上述语句的功能是创建一个名为scott.test的数据表,表结构包含3个字段。并将scott.emp中具有不同的empno字段,且empno>=7000的数据复制到scott.test数据表中。
(2)在【命令编辑区】输入“select * from scott.test;”语句,然后单击【执行】按钮,出现如图4.46所示的结果。
这里的create table语句的功能是创建新的数据表,上述过程实际是分3步执行的。首先查询符合要求的数据,其次建立3个字段的名为test的数据空表,最后是将查询的数据插入到test数据表中。