ทั้งคำตอบที่ฉันเห็นว่าทำงานได้ดีใน Informix โดยเฉพาะและเป็น SQL มาตรฐานโดยทั่วไป นั่นคือสัญกรณ์:
INSERT INTO target_table[(<column-list>)] SELECT ... FROM ...;
ทำงานได้ดีกับ Informix และฉันคาดหวังว่า DBMS ทั้งหมด (เมื่อ 5 ปีที่ผ่านมานี้เป็นสิ่งที่ MySQL ไม่สนับสนุนเสมอไปตอนนี้มันมีการสนับสนุนที่ดีสำหรับไวยากรณ์ SQL มาตรฐานประเภทนี้และ AFAIK มันจะทำงานได้ดีกับสัญลักษณ์นี้) รายการคอลัมน์ เป็นทางเลือก แต่ระบุคอลัมน์เป้าหมายตามลำดับดังนั้นคอลัมน์แรกของผลลัพธ์ของ SELECT จะไปยังคอลัมน์แรกที่แสดงรายการ ฯลฯ หากไม่มีรายการคอลัมน์คอลัมน์แรกของผลลัพธ์ของ SELECT จะเข้าสู่ คอลัมน์แรกของตารางเป้าหมาย
สิ่งที่สามารถแตกต่างกันระหว่างระบบคือสัญกรณ์ที่ใช้ระบุตารางในฐานข้อมูลที่ต่างกัน - มาตรฐานไม่มีอะไรจะพูดเกี่ยวกับการดำเนินการระหว่างฐานข้อมูล ด้วย Informix คุณสามารถใช้สัญลักษณ์ต่อไปนี้เพื่อระบุตาราง:
[dbase[@server]:][owner.]table
นั่นคือคุณอาจระบุฐานข้อมูลระบุเซิร์ฟเวอร์ที่โฮสต์ฐานข้อมูลนั้นหากไม่ได้อยู่ในเซิร์ฟเวอร์ปัจจุบันตามด้วยเจ้าของตัวเลือกจุดและสุดท้ายชื่อตารางจริง มาตรฐาน SQL ใช้คำว่าสกีมาสำหรับสิ่งที่ Informix เรียกว่าเจ้าของ ดังนั้นใน Informix สัญลักษณ์ใด ๆ ต่อไปนี้สามารถระบุตาราง:
table
"owner".table
dbase:table
dbase:owner.table
dbase@server:table
dbase@server:owner.table
ไม่จำเป็นต้องอ้างถึงเจ้าของโดยทั่วไป อย่างไรก็ตามหากคุณใช้เครื่องหมายคำพูดคุณจะต้องสะกดชื่อเจ้าของให้ถูกต้อง นั่นคือ:
someone.table
"someone".table
SOMEONE.table
ทั้งหมดระบุตารางเดียวกัน ด้วย Informix มีความยุ่งยากเล็กน้อยกับฐานข้อมูล MODE ANSI ซึ่งโดยทั่วไปชื่อเจ้าของจะถูกแปลงเป็นตัวพิมพ์ใหญ่ (informix เป็นข้อยกเว้น) นั่นคือในฐานข้อมูล MODE ANSI (ไม่ได้ใช้กันทั่วไป) คุณสามารถเขียน:
CREATE TABLE someone.table ( ... )
และชื่อเจ้าของในแคตตาล็อกระบบจะเป็น "คน" แทนที่จะเป็น "ใครบางคน" หากคุณใส่ชื่อเจ้าของในเครื่องหมายคำพูดคู่มันจะทำหน้าที่เหมือนตัวระบุที่คั่น ด้วย SQL มาตรฐานตัวระบุที่คั่นสามารถใช้หลาย ๆ ที่ได้ ด้วย Informix คุณสามารถใช้งานได้เฉพาะกับชื่อเจ้าของ - ในบริบทอื่น ๆ Informix จะใช้ทั้งสตริงที่มีการเสนอราคาเดียวและการเสนอราคาสองครั้งเป็นสตริงแทนที่จะแยกสตริงที่เสนอราคาเดียวเป็นสตริงและสตริงที่มีการเสนอราคาสองครั้งเป็นตัวระบุที่คั่น (แน่นอนว่าเพื่อความสมบูรณ์มีตัวแปรสภาพแวดล้อม DELIMIDENT ที่สามารถตั้งค่า - เป็นค่าใดก็ได้ แต่ Y ปลอดภัยที่สุด - เพื่อระบุว่าอัญประกาศคู่ล้อมรอบตัวระบุที่คั่นเสมอและอัญประกาศล้อมรอบสตริงเสมอ)
โปรดทราบว่า MS SQL Server จัดการเพื่อใช้ [ตัวคั่นคั่น] ล้อมรอบในวงเล็บเหลี่ยม มันดูแปลกสำหรับฉันและแน่นอนไม่ได้เป็นส่วนหนึ่งของมาตรฐาน SQL