DATAONLINE.IO.VN

https://dataonline.io.vn

Bài 12: Sử dụng JOIN trong SQLite - Học SQLite cơ bản

Bài 12: Sử dụng JOIN trong SQLite - Học SQLite cơ bản.

Bài 12: Sử dụng JOIN trong SQLite - Học SQLite cơ bản

Mệnh đề Joins trong SQLite được sử dụng để kết hợp các bản ghi từ hai hoặc nhiều bảng trong một Database. Một JOIN là một phương tiện để kết hợp các trường từ hai bảng bằng việc sử dụng các giá trị chung của mỗi bảng.
SQLite định nghĩa ba loại Join chính, đó là:

  • CROSS JOIN
  • INNER JOIN
  • OUTER JOIN


Trước khi bắt đầu, bạn theo dõi hai bảng COMPANY và DEPARTMENT. Chúng ta đã thấy cách lệnh INSERT nhập dữ liệu vào trong bảng COMPANY. Do đó, giả sử dưới đây là danh sách các bản ghi có trong bảng COMPANY.

ID          NAME        AGE         ADDRESS     SALARY----------  ----------  ----------  ----------  ----------1           Paul        32          California  20000.02           Allen       25          Texas       15000.03           Teddy       23          Norway      20000.04           Mark        25          Rich-Mond   65000.05           David       27          Texas       85000.06           Kim         22          South-Hall  45000.07           James       24          Houston     10000.0


Bảng DEPARTMENT có các định nghĩa sau:

CREATE TABLE DEPARTMENT(   ID INT PRIMARY KEY      NOT NULL,   DEPT           CHAR(50) NOT NULL,   EMP_ID         INT      NOT NULL);


Lệnh INSERT để chèn dữ liệu vào bảng này:

INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)VALUES (1, 'IT Billing', 1 );INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)VALUES (2, 'Engineering', 2 );INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)VALUES (3, 'Finance', 7 );


Và chúng ta có các bản ghi sau trong bảng DEPARTMENT:

ID          DEPT        EMP_ID----------  ----------  ----------1           IT Billing  12           Engineerin  23           Finance     7

1. CROSS JOIN trong SQLite

Một CROSS JOIN kết nối mỗi hàng của bảng đầu tiên với mỗi hàng của bảng thứ hai. Nếu các bảng đầu vào có x và y cột, thì tương ứng với đó, bảng kết quả sẽ có x+y cột. Bởi vì các CROSS JOIN này có khả năng để tạo ra các bảng lớn, do đó bạn nên cẩn thận để chỉ sử dụng chúng khi thấy cần thiết.
Cú pháp cơ bản của CROSS JOIN trong SQLite là:

SELECT ... FROM table1 CROSS JOIN table2 ...


Dựa vào hai bảng trên, chúng ta có thể viết một Cross Join như sau:

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT;


Truy vấn trên sẽ cho kết quả:

EMP_ID      NAME        DEPT----------  ----------  ----------1           Paul        IT Billing2           Paul        Engineerin7           Paul        Finance1           Allen       IT Billing2           Allen       Engineerin7           Allen       Finance1           Teddy       IT Billing2           Teddy       Engineerin7           Teddy       Finance1           Mark        IT Billing2           Mark        Engineerin7           Mark        Finance1           David       IT Billing2           David       Engineerin7           David       Finance1           Kim         IT Billing2           Kim         Engineerin7           Kim         Finance1           James       IT Billing2           James       Engineerin7           James       Finance

2. INNER JOIN trong SQLite

Một INNER JOIN tạo một bảng kết quả mới bằng việc kết hợp các giá trị cột của hai bảng (table1 và table2) dựa trên join-predicate. Truy vấn này so sánh mỗi hàng trong table1 với mỗi hàng trong table2 để tìm ra các cặp hàng mà thỏa mãn join-predicate. Khi join-predicate được thỏa mãn, các giá trị cột của mỗi cặp hàng được kết nối A và B được kết hợp vào trong một hàng kết quả.
Một INNER JOIN là loại Join được sử dụng phổ biến nhất và là loại Join mặc định. Bạn có thể sử dụng từ khóa INNER tùy ý.
Cú pháp cơ bản của INNER JOIN trong SQLite là:

SELECT ... FROM table1 [INNER] JOIN table2 ON conditional_expression ...


Để tránh sự rườm rà và giúp cho truy vấn của bạn ngắn hơn, các điều kiện INNER JOIN có thể được khai báo với biểu thức USING. Biểu thức này xác định một danh sách của một hoặc nhiều cột.

SELECT ... FROM table1 JOIN table2 USING ( column1 ,... ) ...


Một NATURAL JOIN là tương đương với một JOIN…USING, chỉ khi nó tự động kiểm tra cho sự cân bằng giữa các giá trị của mỗi cột tồn tại trong cả hai bảng.

SELECT ... FROM table1 NATURAL JOIN table2...


Dựa vào hai bảng trên, chúng ta có thể viết một INNER JOIN như sau:

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT        ON COMPANY.ID = DEPARTMENT.EMP_ID;


Truy vấn trên sẽ cho kết quả:

EMP_ID      NAME        DEPT----------  ----------  ----------1           Paul        IT Billing2           Allen       Engineerin7           James       Finance

3. OUTER JOIN trong SQLite

OUTER JOIN là một sự mở rộng của INNER JOIN. Mặc dù SQL chuẩn định nghĩa 3 loại OUTER JOIN là: LEFT, RIGHT, và FULL nhưng SQLite chỉ hỗ trợ LEFT OUTER JOIN.
Các OUTER JOIN có một điều kiện giống như các INNER JOIN, được biểu diễn bởi sử dụng từ khóa ON, USING hoặc NATURAL. Bảng kết quả ban đầu được tính toán theo cùng cách thức. Khi JOIN đầu tiên được tính toán, một Outer Join sẽ nhận bất kỳ các hàng chưa được kết hợp nào từ một hoặc các bảng, đệm chúng với các NULL và phụ chúng thêm vào bảng kết quả.
Cú pháp cơ bản của LEFT OUTER JOIN trong SQLite là:

SELECT ... FROM table1 LEFT OUTER JOIN table2 ON conditional_expression ...


Để tránh sự rườm rà và giúp cho truy vấn của bạn ngắn hơn, các điều kiện INNER JOIN có thể được khai báo với biểu thức USING. Biểu thức này xác định một danh sách của một hoặc nhiều cột.

SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( column1 ,... ) ...


Dựa vào các bảng trên, chúng ta có thể viết một LEFT OUTER JOIN như sau:

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT        ON COMPANY.ID = DEPARTMENT.EMP_ID;


Truy vấn trên sẽ cho kết quả:

EMP_ID      NAME        DEPT----------  ----------  ----------1           Paul        IT Billing2           Allen       Engineerin            Teddy            Mark            David            Kim7           James       Finance

 

Nguồn tin: vncoder.vn

Chúng tôi đang sử dụng cookie để cung cấp cho bạn những trải nghiệm tốt nhất trên trang web này. Bằng cách tiếp tục truy cập, bạn đồng ý với Chính sách thu thập và sử dụng cookie của chúng tôi.
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây