oracle語句insert into select如何加后續插入條件
oracle中有批量插入語句insert into tableA (列1,列2,列3) select 列1,列2 from tableB。現在問題是這樣的,tableA有3列,而通過最后的select語句所能獲得的列只有列1和列2。但列3是非空的,所以插入時必須填寫。
A中有3例,B表中你只能獲得2列,可以用常量占位解決
insert into tableA (列1,列2,列3) select 列1,列2,常量 from tableB
例:如下
insert into tableA (列1,列2,列3) select 列1,列2,'123' from tableB 【字符串常量】
insert into tableA (列1,列2,列3) select 列1,列2,123 from tableB 【數值常量】
insert into values 語句問題 oracle數據庫
正常的oracle日期插入格式是
insert into (日期字段) values to_date('2009-07-09','yyyymmdd');
這個就是往日期字段里插了一條,為2009年7月9日的數據
但是往往有時候日期字段里還會帶時間的,如果帶時分秒則可
insert into (日期字段) values to_date('2009-07-09 hh24:mi:ss','yyyymmdd');
這個需要注意mi,不要寫成了mm,要不可就變成月份了
你用這個往里套吧,to_date是把字符型數據轉成日期型數據的一個函數
--------補充---------
那你先看看DECL_DATE這個字段是什么類型,
按照你那么說應該是varchar型的吧?如果那樣的話直接 '2009-6-22' 這樣插入就行了
Oracle中insert into select和select into的區別
insert into select可以將select 出來的N行(0到任意數)結果集復制一個新表中,select into
from只能將"一行"結果復制到一個變量中。這樣說吧,select into是PL/SQL language
的賦值語句。而前者是標準的SQL語句。
做一個測試看兩者差別。
首先創建兩個表,一個作為源表,一個作為目標表。
create table t_source(
id number primary key,
testname varchar2(20),
createtime date,
flag varchar2(10)
);
create table t_target(
id number primary key,
testname varchar2(20),
createtime date,
flag varchar2(10)
);
接著,插入測試數據
insert into t_source values(1,'測試數據1。.1',sysdate-2,'N');
insert into t_source values(2,'測試數據1。.2',sysdate-2,'N');
insert into t_source values(3,'測試數據1。.3',sysdate-2,'N');
commit;
測試insert into select 操作
insert into test2 select * from t_source where id=1;
commit;
測試select into 操作
因為select into是一個plsql語言中的復制語句,和:=實現的目標一樣。
create or replace procedure sp_sync_test is
aa varchar2(100);
v_record t_source%rowtype;
begin
select *me into aa from t_source t1 where id = 1;
dbms_*_line('普通變量 *me= ' || aa);
select t1.* into v_record from t_source t1 where id = 1;
dbms_*_line('記錄變量 *me= ' || v_*me);
end;
這里增加了原始類型的變量和記錄類型的變量
SQL語句基礎學習InsertInto是怎樣的
到目前為止,我們學到了將如何把資料由表格中取出。
但是這些資料是如何進入這些表格的呢?這就是這一頁 (INSERT INTO) 和下一頁 (UPDATE) 要討論的。 基本上,我們有兩種作法可以將資料輸入表格中內。
一種是一次輸入一筆,另一種是一次輸入好幾筆。 我們先來看一次輸入一筆的方式。
依照慣例,我們先介紹語法。一次輸入一筆資料的語法如下: INSERT INTO "表格名" ("欄位1", "欄位2", 。
。)
VALUES ("值1", "值2", 。
。) 假設我們有一個架構如下的表格: Store_Information 表格 Column NameData Type store_namechar(50) Salesfloat Datedatetime 而我們要加以下的這一筆資料進去這個表格:在 January 10, 1999,Los Angeles 店有 $900 的營業額。
我們就打入以下的 SQL 語句: INSERT INTO Store_Information (store_name, Sales, Date) VALUES ('Los Angeles', 900, 'Jan-10-1999') 第二種 INSERT INTO 能夠讓我們一次輸入多筆的資料。 跟上面剛的例子不同的是,現在我們要用 SELECT 指令來指明要輸入表格的資料。
如果您想說,這是不是說資料是從另一個表格來的,那您就想對了。一次輸入多筆的資料的語法是: INSERT INTO "表格1" ("欄位1", "欄位2", 。
。
) SELECT "欄位3", "欄位4", 。
。 FROM "表格2" 以上的語法是最基本的。
這整句 SQL 也可以含有 WHERE、 GROUP BY、 及 HAVING 等子句,以及表格連接及別名等等。 舉例來說,若我們想要將 1998 年的營業額資料放入 Store_Information 表格,而我們知道資料的來源是可以由 Sales_Information 表格取得的話,那我們就可以打入以下的 SQL: INSERT INTO Store_Information (store_name, Sales, Date) SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 1998 在這里,我用了 SQL Server 中的函數來由日期中找出年。
不同的數據庫會有不同的語法。舉個例來說,在 Oracle 上,您將會使用 WHERE to_char(date,'yyyy')=1998。
轉載請注明出處華閱文章網 » oracleinsertinto語句