DB2向表中寫數據的幾種方法 常用的向表中添加數據的方法如下: 1、insert into table values(...) 根據表指定的列,寫入相應的數據,若只給出表名,則表示按照列順序添加數據。 添加單條數據的寫法:insert into table(col1,col2) values(value1,value2) 添加多條數據的寫法:insert into table(col1,col2) values(value1,value2),(value3,value4),... 2、insert into table select ... 這種寫法表示添加的數據來自於一個基於一個或者多個表或試圖查詢,該查詢可以進行排序分組等操作。 如, db2 => create table empk(empno char(6),ename varchar(15),salary decimal(9,2)) DB20000I SQL 命令成功完成。 取薪水最高的三位員工: db2 => insert into empk select empno,lastname,salary from employee order by salary desc fetch first 3 rows only DB20000I SQL 命令成功完成。 db2 => select *from empk EMPNO ENAME SALARY ------ --------------- ----------- 000010 HAAS 152750.00 000030 KWAN 98250.00 000070 PULASKI 96170.00 3 條記錄已選擇。 3、復制表結構和數據 我們也可以在創建表的時候,復制表結構,再使用這種方法添加數據。 create table emp_test like employee insert into emp_test select * from employee where salary > 80000.00 也可以在復制表結構的同時,復制數據。 create table emp_test as (select * from employee where salary > 80000.00) data initially deferred refresh immediate | deferred 創建完表之後,需要刷新一下: db2 => refresh table emp_test DB20000I SQL 命令成功完成。 否則將會報錯:SQL0668N 不允許對表 "LENOVO.EMP_TEST" 執行操作,原因碼為 "1"。 SQLSTATE=57016 如果只是想復制表結構,不需要復制數據,可以如下創建表: create table emp_tt as (select empno,job,salary from employee) definition only --★ 或者 create table emp_tt as (select empno,job,salary from employee) with no data --★ db2 => describe table emp_tt 數據類型 列 列名 模式 數據類型名稱 長 小數位 NULL ------------------------------- --------- ------------------- ---------- ----- ------ EMPNO SYSIBM CHARACTER 6 0 否 JOB SYSIBM CHARACTER 8 0 是 SALARY SYSIBM DECIMAL 9 2 是 3 條記錄已選擇。 db2 => select count(*) from emp_tt 1 ----------- 0 1 條記錄已選擇。 4、Merge into語句 merge into語句用於將一個表中的數據合並到另一個表中,當數據已經存在時,我們可以不處理或者更新之; 來源:http://blog.csdn.net/bobo12082119/article/details/8780814 --the end--