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; |
來源:CUUG官網