數據的錄入采用【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數據表中。