Oracle基础培训:数据操纵语言(DML)-数据插入
最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!
我要咨询Oracle基础培训:数据操纵语言(DML)-数据插入,用INSERT命令完成对数据的插入。
语法结构:根据结果集创建表
INSERT INTO 表名(列名1,列名2……) VALUES (值1,值2……) |
语法解析:
1. 列名可以省略。当省略列名时,默认是表中的所有列名,列名顺序为表定义中列的先后顺序。
2. 值的数量和顺序要与列名的数量和顺序一致。值的类型与列名的类型一致。
代码演示:向INFOS表和SCORES表中插入数据
SQL> INSERT INTO INFOS VALUES (
① 2 's100102', '林冲', '男', 22, 2, 3 TO_DATE('2009-8-9 06:30:10',' YYYY-MM-DD
HH24:MI:SS '), ② 4 '西安', '1001' 5 ) 6 / 1 row inserted SQL> INSERT INTO INFOS VALUES ( 's100104','阮小二','男',26,3,SYSDATE,default,'1001'); ③ 1 row inserted SQL>COMMIT; ④ |
代码解析:
① 表名后面缺省了列名,默认是表Infos中的所有列名,values中的值要与表中列一一对应,包括顺序和数据类型的对应。在SQL*Plus中一条语句可以写在多行,那么从第二行开始,sqlplus会为每一行前面给出行号。
② 在Oracle中,日期是国际化的,不同的区域安装的数据库,默认的日期格式不同,因此为了程序便于移植,日期的输入要使用TO_DATE函数对日期格式化后输入,采用格式化字符串对日期进行格式化时,格式化字符串中字符不区分大小写,常见的格式化字符如下:
1. yyyy表示四位年份
2. mm表示两位月份,比如3月表示为03
3. dd表示两位日期
4. hh24表示小时从0-23,hh12也表示小时从0-11。
5. mi 表示分钟
6. ss表示秒
③ 在遇到存在默认值的列时,可以使用default值代替。
④ commit是把用户操作(添加、删除、修改操作)提交,只有提交操作后,数据才能真正更新到表中,否则其他用户无法查询到当前用户操作的结果。
在Oracle中,一个INSERT命令可以把一个结果集一次性插入到一张表中。使用的语句是:INSERT INTO 表 SELECT子句,如下示例:
代码演示:INSERT向表中插入一个结果集
SQL> INSERT INTO INFOS2 SELECT * FROM INFOS; 5 rows inserted |
在这种语法下,要求结果集中每一列的数据类型必须与表中的每一列的数据类型一致,结果集中的列的数量与表中的列的数量一致。比如表INFOS2,该表的结构与INFO表一样,那么可以把INFO表中的所有记录一次性插入到INFOS2表中。
Oracle的简单查询和SQL Server一样都可以在查询列中使用常量,如图:
图3 Select中的常量
可以使用刚才的做法,把该结果集中的数据插入到表INFOS中。
代码演示:INSERT向表中插入一个常量结果集
SQL> INSERT INTO INFOS SELECT 's100106','卢俊义','男',23,5, TO_DATE('2009-8-9
08:00:10','YYYY-MM-DD HH24:MI:SS'), '青龙寺','1001' FROM DUAL; 1 rows inserted SQL>COMMIT; |