一、準備工作
在使用Oracle將一個表的數據插入到另一個表前,首先需要創建兩張表並插入數據。
下面我們以學生成績表和學生表為例,創建兩張表並向其中插入數據。
/* 創建學生成績表 */ CREATE TABLE student_score( student_id NUMBER(5), -- 學生ID subject VARCHAR2(20), -- 學科 score NUMBER(3) -- 成績 ); /* 創建學生表 */ CREATE TABLE student( student_id NUMBER(5), -- 學生ID student_name VARCHAR2(50), -- 學生姓名 student_gender VARCHAR2(2), -- 學生性別 student_age NUMBER(3) -- 學生年齡 ); /* 向學生成績表中插入數據 */ INSERT INTO student_score VALUES(1, '數學', 88); INSERT INTO student_score VALUES(1, '語文', 95); INSERT INTO student_score VALUES(2, '數學' ,90); INSERT INTO student_score VALUES(2, '語文' ,98); INSERT INTO student_score VALUES(3, '數學', 78); INSERT INTO student_score VALUES(3, '語文', 80); /* 向學生表中插入數據 */ INSERT INTO student VALUES(1, '小明', '男', 18); INSERT INTO student VALUES(2, '小紅', '女', 19); INSERT INTO student VALUES(3, '小華', '男', 20);
二、使用INSERT INTO SELECT語句
在Oracle中,將一個表的數據插入到另一個表可以使用INSERT INTO SELECT語句。
INSERT INTO SELECT語句的基本使用格式如下:
INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1;
其中,table1表示數據來源表,table2表示目標表。通過SELECT語句,可以選取table1中的特定列或者所有列,將其插入到table2中特定的列或者所有列。
三、將學生成績表數據插入到學生表
在本例中,我們需要將學生成績表中的學生ID、學生姓名、學生性別、學生年齡插入到學生表中,可以使用如下的INSERT INTO SELECT語句:
INSERT INTO student (student_id, student_name, student_gender, student_age) SELECT student_id, '未知', '未知', 0 FROM student_score GROUP BY student_id;
上述語句會將學生成績表中所有不同的學生ID插入到學生表中,並分別用’未知’和0填充學生姓名、性別和年齡列。
四、將學生成績表中成績數據插入到學生表中
在本例中,我們需要將學生成績表中的所有成績插入到學生表中的成績列中,可以使用如下的UPDATE語句:
UPDATE student s SET s.score = (SELECT AVG(score) FROM student_score ss WHERE ss.student_id = s.student_id);
上述語句會將學生成績表中每個學生的平均成績插入到學生表中對應學生的成績列中。
五、小結
通過以上幾個步驟,我們可以將一個表的數據插入到另一個表中。在實際開發中,如果數據來源表和目標表之間存在一些不一致的列,可以使用一些技巧(如使用SELECT語句中的別名)將其轉換成相同的列。同時,也要注意避免數據類型不一致等問題,以確保數據插入正常進行。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/190774.html