Latest web development tutorials

SQLite ร่วม

SQLiteจะร่วมข้อที่จะรวมสองคนหรือมากกว่าตารางในบันทึกฐานข้อมูลเข้าร่วมเป็นค่าร่วมกันโดยการรวมสองเขตข้อมูลในตารางหมายถึง

SQL กำหนดสามประเภทหลักของการเชื่อมต่อ:

  • ข้าม Connect - CROSS JOIN

  • en - INNER JOIN

  • การเชื่อมต่อภายนอก - เข้าร่วม outer

ก่อนที่เราจะดำเนินการต่อให้เราคิดว่ามีสองตาราง บริษัท ฯ และกรม ที่เราเคยเห็นใช้ในการกรอก บริษัท คำสั่งตาราง INSERT ตอนนี้ให้เราถือว่าระเบียนตาราง บริษัท จดทะเบียนดังต่อไปนี้:

ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
2 อัลเลน 25 15,000.0 เท็กซัส
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

โต๊ะก็คือกรมจะกำหนดดังนี้

สร้างตารางกรม (
   ID INT คีย์หลักไม่เป็นโมฆะ,
   DEPT CHAR (50) ไม่เป็นโมฆะ,
   emp_id INT ไม่เป็นโมฆะ
);

ต่อไปนี้เป็นตาราง DEPARTMENT คำสั่ง INSERT ที่เต็มไปด้วย:

INSERT INTO กรม (ID, ฝ่าย emp_id)
VALUES (1, 'การเรียกเก็บเงินไอที, 1);

INSERT INTO กรม (ID, ฝ่าย emp_id)
VALUES (2, 'วิศวกรรม', 2);

INSERT INTO กรม (ID, ฝ่าย emp_id)
VALUES (3, 'การเงิน' 7);

สุดท้ายเรามีรายการต่อไปนี้ของระเบียนในตารางกรม:

ID DEPT emp_id
---------- ---------- ----------
การเรียกเก็บเงิน 1 1
2 วิศวกรรมการ 2
3 การคลัง 7

ข้าม Connect - CROSS JOIN

เชื่อมต่อข้าม (CROSS JOIN) แถวของตารางแรกแต่ละคนมีแถวของตารางที่สองเพื่อให้ตรงกับแต่ละ ถ้าทั้งสองเข้าตารางคอลัมน์ x และ y ตามลำดับตารางผลที่ได้ X + Y คอลัมน์ ตั้งแต่การเชื่อมต่อข้าม (CROSS JOIN) อาจผลิตตารางขนาดใหญ่มากที่คุณจะต้องใช้ความระมัดระวังในการใช้พวกเขาเพียง แต่เมื่อมีความเหมาะสม

นี่คือไวยากรณ์สำหรับการเชื่อมต่อข้าม (CROSS JOIN) ของ:

SELECT ... จาก table1 CROSS JOIN Table2 ...

ขึ้นอยู่กับตารางข้างต้นเราสามารถเขียนข้าม Connect (CROSS JOIN) ดังต่อไปนี้:

SQLite> emp_id SELECT ชื่อ DEPT จาก บริษัท CROSS JOIN กรม;

แบบสอบถามดังกล่าวจะก่อให้เกิดผลต่อไปนี้:

emp_id NAME DEPT
---------- ---------- ----------
การเรียกเก็บเงิน 1 เปาโลไอที
2 พอลวิศวกรรมการ
7 พอลการคลัง
การเรียกเก็บเงิน 1 อัลเลนไอที
2 อัลเลนวิศวกรรมการ
7 อัลเลนการเงิน
การเรียกเก็บเงิน 1 เท็ดดี้ไอที
เท็ดดี้ 2 วิศวกรรมการ
7 เท็ดดี้การเงิน
การเรียกเก็บเงิน 1 ทำเครื่องหมาย
2 มาร์ควิศวกรรมการ
7 มาร์คการเงิน
การเรียกเก็บเงิน 1 เดวิดไอที
2 เดวิดวิศวกรรมการ
7 เดวิดการเงิน
การเรียกเก็บเงิน 1 คิมไอที
2 คิมวิศวกรรมการ
7 คิมการคลัง
การเรียกเก็บเงิน 1 เจมส์ไอที
2 เจมส์วิศวกรรมการ
7 เจมส์การเงิน

en - INNER JOIN

การเชื่อมต่อภายใน (INNER JOIN) เพื่อสร้างตารางใหม่ผลรวมสองตาราง (table1 และ Table2) เข้าร่วมในค่าของคอลัมน์กริยา คำสั่งจะ Table1 และ Table2 ในแต่ละแถวในแต่ละแถวจะเปรียบเทียบเพื่อหาแถวทั้งหมดที่ตอบสนองความร่วมคู่จับคู่คำกริยา เมื่อความพึงพอใจเข้าร่วมค่าในคอลัมน์กริยา A และ B แต่ละแถวจับคู่ของผลที่ได้จะถูกรวมเข้าเป็นหนึ่งแถว

การเชื่อมต่อภายใน (INNER JOIN) เป็นชนิดที่พบมากที่สุดของการเชื่อมต่อเป็นประเภทการเชื่อมต่อเริ่มต้น คำหลัก INNER เป็นตัวเลือก

นี่คือไวยากรณ์สำหรับการรวมภายใน (INNER JOIN) ของ:

SELECT ... จาก table1 [INNER] เข้าร่วม Table2 ON conditional_expression ...

เพื่อหลีกเลี่ยงความซ้ำซ้อนและให้ถ้อยคำสั้น ๆคุณสามารถใช้คำสั่งในการเชื่อมต่อการใช้การแสดงออก (INNER JOIN) สภาพสำนวนนี้ระบุรายชื่อของหนึ่งหรือมากกว่าหนึ่งคอลัมน์:

SELECT ... จาก table1 JOIN Table2 ใช้ (COLUMN1, ... ) ...

การเชื่อมต่อธรรมชาติ (NATURAL JOIN)จะคล้ายกับการเข้าร่วม ... ใช้ แต่มันจะมีค่าเท่ากันระหว่างค่าของสองตารางในแต่ละคอลัมน์ทดสอบโดยอัตโนมัติสำหรับการปรากฏตัวของ:

SELECT ... จาก table1 ธรรมชาติ JOIN Table2 ...

ยึดตามตารางข้างต้นเราสามารถเขียนรวมภายใน (INNER JOIN) ดังต่อไปนี้:

SQLite> emp_id SELECT ชื่อ DEPT จาก บริษัท รวมภายในกรม
        ON COMPANY.ID = DEPARTMENT.EMP_ID;

แบบสอบถามดังกล่าวจะก่อให้เกิดผลต่อไปนี้:

emp_id NAME DEPT
---------- ---------- ----------
การเรียกเก็บเงิน 1 เปาโลไอที
2 อัลเลนวิศวกรรมการ
7 เจมส์การเงิน

การเชื่อมต่อภายนอก - เข้าร่วม outer

การเชื่อมต่อภายนอก (OUTER JOIN) เป็นรวมภายใน (INNER JOIN) ส่วนขยาย แม้ว่า SQL มาตรฐานกำหนดสามประเภทของนอกเข้าร่วม: ซ้าย, ขวา, เต็ม แต่ SQLiteรองรับซ้ายเพียงด้านนอกเข้าร่วม (ซ้าย OUTER JOIN)

การเชื่อมต่อภายนอก (OUTER JOIN) ประกาศหลักเกณฑ์เงื่อนไขและวิธีการในการเชื่อมต่อภายใน (INNER JOIN) เป็นเดียวกันการใช้งานบนที่ใช้คำว่าธรรมชาติหรือการแสดงออก ตารางผลเบื้องต้นการคำนวณในลักษณะเดียวกัน เมื่อคำนวณจะเสร็จสิ้นการเชื่อมต่อหลักเชื่อมต่อภายนอก (OUTER JOIN) จากหนึ่งหรือสองตารางไม่ได้เชื่อมต่อสายใด ๆ ในการผสานเข้าร่วม outer คอลัมน์ที่มีค่าเป็น NULL, แนบให้ตารางผลลัพธ์

นี่คือไวยากรณ์สำหรับการเข้าร่วม outer ซ้าย (ซ้าย OUTER JOIN) ของ:

SELECT ... จาก table1 ซ้าย OUTER JOIN Table2 ON conditional_expression ...

เพื่อหลีกเลี่ยงความซ้ำซ้อนและให้ถ้อยคำสั้น ๆคุณสามารถใช้คำสั่งการใช้นิพจน์นอกร่วม (OUTER JOIN) สภาพสำนวนนี้ระบุรายชื่อของหนึ่งหรือมากกว่าหนึ่งคอลัมน์:

SELECT ... จาก table1 ซ้าย OUTER JOIN Table2 ใช้ (COLUMN1, ... ) ...

ขึ้นอยู่กับตารางข้างต้นเราสามารถเขียนการเชื่อมต่อภายนอก (OUTER JOIN) ดังต่อไปนี้:

SQLite> emp_id SELECT ชื่อ DEPT จาก บริษัท ภายนอกด้านซ้าย DEPARTMENT
        ON COMPANY.ID = DEPARTMENT.EMP_ID;

แบบสอบถามดังกล่าวจะก่อให้เกิดผลต่อไปนี้:

emp_id NAME DEPT
---------- ---------- ----------
การเรียกเก็บเงิน 1 เปาโลไอที
2 อัลเลนวิศวกรรมการ
            เท็ดดี้
            เครื่องหมาย
            เดวิด
            คิม
7 เจมส์การเงิน