SQLite Joins
Klausa Joins SQLite digunakan untuk menyertai rekod daripada dua atau lebih jadual dalam pangkalan data. JOIN ialah satu cara untuk menggabungkan medan daripada dua jadual melalui nilai sepunya.
SQL mentakrifkan tiga jenis cantuman utama:
CROSS JOIN
INNER JOIN
OUTER JOIN - OUTER JOIN
Sebelum kita meneruskan, mari kita anggap ada dua meja SYARIKAT dan JABATAN. Kami telah melihat pernyataan INSERT yang digunakan untuk mengisi jadual SYARIKAT. Sekarang mari kita anggap bahawa senarai rekod jadual syarikat adalah seperti berikut: -------- 🎜> 3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.07 James 24 Houston 10000.0
Jadual lain ialah JABATAN, ditakrifkan seperti berikut:
ID INT KUNCI UTAMA BUKAN NULL,
DEPT CHAR(50) BUKAN NULL,
EMP_ID INT NOT NULL
);
Berikut ialah pernyataan INSERT untuk mengisi jadual JABATAN:
NILAI ( 1, 'Pengebilan IT', 1 );
Akhir sekali, kami mempunyai senarai rekod berikut dalam jadual JABATAN:
--- ------- ---------- ----------
1 Pengebilan IT 1
2 Jurutera 2
3 Kewangan 7
CROSS JOIN - CROSS JOIN
Cross JOIN (CROSS JOIN) sepadan dengan setiap baris jadual pertama dengan setiap baris jadual kedua. Jika dua jadual input mempunyai lajur x dan y, jadual hasil mempunyai lajur x+y. Memandangkan cantuman silang (CROSS JOIN) boleh menghasilkan jadual yang sangat besar, ia mesti digunakan dengan berhati-hati dan hanya menggunakannya apabila sesuai.
Berikut ialah sintaks cantuman silang (CROSS JOIN):
Berdasarkan pada jadual di atas, kita boleh menulis cantuman silang (CROSS JOIN) seperti berikut:
Pertanyaan di atas akan menghasilkan keputusan berikut:
---------- ---------- ----------
1 Paul It Billing
2 Paul Engineerin
7 Paul Finance
1 Allen IT Billing
2 Allen Engineerin
7 Allen Finance
1 Teddy It Billing
2 Teddy Engineerin
7 Teddy Finance
1 Tandakan IT Biling
2 Mark Engineerin
7 Mark Finance
1 David It Billing
2 David Engineerin
7 David Finance
1 Kim IT Biling
2 Kim Engineerin
7 Kim Finance
1 James It Billing
2 James Engineerin
7 James Finance
内连接 - INNER JOIN
内连接(INNER JOIN)根据连接谓词结合两个表(table1 和 table2)的列值来创建一个新的结果表。查询会把 table1 中的每一行与 table2 中的每一行进行比较,找到所有满足连接谓词的行的匹配对。当满足连接谓词时,A 和 B 行的每个匹配对的列值会合并成一个结果行。
内连接(INNER JOIN)是最常见的连接类型,是默认的连接类型。INNER 关键字是可选的。
下面是内连接(INNER JOIN)的语法:
为了避免冗余,并保持较短的措辞,可以使用 USING 表达式声明内连接(INNER JOIN)条件。这个表达式指定一个或多个列的列表:
自然连接(NATURAL JOIN)类似于 JOIN...USING,只是它会自动测试存在两个表中的每一列的值之间相等值:
基于上面的表,我们可以写一个内连接(INNER JOIN),如下所示:
ON COMPANY.ID = DEPARTMENT.EMP_ID;
Pertanyaan di atas akan menghasilkan keputusan berikut:
---------- ---------- ----------
1 Paul IT Billing
2 Allen Engineerin
7 James Finance
外连接 - OUTER JOIN
外连接(OUTER JOIN)是内连接(INNER JOIN)的扩展。虽然 SQL 标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但 SQLite 只支持 左外连接(LEFT OUTER JOIN)。
外连接(OUTER JOIN)声明条件的方法与内连接(INNER JOIN)是相同的,使用 ON、USING 或 NATURAL 关键字来表达。最初的结果表以相同的方式进行计算。一旦主连接计算完成,外连接(OUTER JOIN)将从一个或两个表中任何未连接的行合并进来,外连接的列使用 NULL 值,将它们附加到结果表中。
下面是左外连接(LEFT OUTER JOIN)的语法:
为了避免冗余,并保持较短的措辞,可以使用 USING 表达式声明外连接(OUTER JOIN)条件。这个表达式指定一个或多个列的列表:
基于上面的表,我们可以写一个外连接(OUTER JOIN),如下所示:
ON COMPANY.ID = DEPARTMENT.EMP_ID;
Pertanyaan di atas akan menghasilkan keputusan berikut:
---------- ---------- ----------
1 Paul IT Billing
2 Allen Engineerin
Teddy
Mark
David
Kim
7 James Finance