Điều kiện tiên quyết cho sự xuất hiện của toán tử THAM GIA
Khi lượng dữ liệu trong bảng tăng lên, các giá trị trùng lặp thường xuất hiện trong đó. Ví dụ, bảng sản phẩm có tên thương hiệu. mà đôi khi được lặp đi lặp lại. Sẽ rất hữu ích nếu có một bảng thương hiệu riêng cho chúng, chẳng hạn như bảng này sẽ chứa dữ liệu sau:
- id - id thương hiệu;
- tên – thương hiệu;
- company_owner - tên công ty sở hữu thương hiệu;
- company_contacts - địa chỉ liên hệ của công ty chủ sở hữu thương hiệu.
Sau đó, chúng tôi muốn tạo một bảng địa chỉ mà chúng tôi có thể đặt tất cả các địa chỉ vào:
- id – địa chỉ id;
- quốc gia;
- vùng đất;
- thành phố;
- đường phố;
- căn nhà;
- khóa kéo.
Hơn nữa, trong bảng này có thể lưu trữ địa chỉ của không chỉ các công ty sở hữu thương hiệu mà còn cả địa chỉ của khách hàng và nhân viên. Và cách tiếp cận này chỉ đơn giản là hệ quả của sự tăng trưởng về lượng dữ liệu (số lượng hàng trong bảng). Điều này giúp thao tác dữ liệu trong bảng dễ dàng hơn và duy trì tính toàn vẹn của chúng.
Khi bạn có 5 nhân viên, bạn chỉ cần nhập nghề nghiệp của họ vào cột nghề nghiệp . Nếu bạn có 5 nghìn nhân viên trong công ty của mình, thì bạn cần một bảng với danh sách x ngành nghề và trách nhiệm của họ.
Nhân tiện, trong ngôn ngữ Java, có một cái gì đó tương tự. Nếu bạn có nhiều mã trong một phương thức, thì bạn sẽ muốn chia nó thành nhiều phương thức. Nếu có nhiều phương thức trong một lớp, thì tôi muốn chia nó thành nhiều lớp.
Đó là lý do tại sao cơ sở dữ liệu lớn có hàng nghìn bảng. Và hầu như tất cả các truy vấn được thực hiện trên một số bảng cùng một lúc. Và tích Descartes của các hàng của ba bảng trong đó mỗi bảng có một nghìn bản ghi đã là một tỷ hàng.
Nhưng chỉ lọc một tỷ hàng bằng cách sử dụng WHERE có thể mất hàng giờ. Do đó, những người tạo ra ngôn ngữ SQL đã đưa ra giải pháp của họ - toán tử THAM GIA.
Giới thiệu về toán tử THAM GIA
Toán tử THAM GIA được sử dụng để thông báo rõ ràng cho máy chủ SQL rằng chúng ta không cần tích Descartes của tất cả các hàng của bảng cho tất cả, mà là một cách dán thông minh các hàng của các bảng khác nhau tham chiếu đến nhau bằng ID (hoặc theo cách khác) . Máy chủ có một thuật toán riêng để xử lý các phép nối bảng bằng cách sử dụng toán tử THAM GIA, cho phép các thao tác đó được thực hiện nhanh hơn nhiều. Dạng tổng quát của toán tử JOIN như sau:
table 1 JOIN table 2 ON condition
Nó nói ở đây rằng bạn cần kết hợp các bảng table1 và table2 thành một bảng và sử dụng điều kiện làm tiêu chí tham gia .
Hãy lấy ví dụ cũ của chúng tôi:
SELECT * FROM employee, task WHERE emploee.id = task.emploee_id
Và viết lại nó bằng toán tử THAM GIA:
SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id
Cả hai truy vấn sẽ cho cùng một kết quả trong trường hợp của chúng tôi, nhưng điều này chỉ là do các truy vấn rất đơn giản. Trong tương lai, WHERE cho phép bạn xây dựng chính xác bộ lọc hàng và bộ lọc được chỉ định sau khi BẬT cho phép bạn viết các tập lệnh phức tạp để liên kết các bảng. Bạn cũng có thể sử dụng bí danh (bí danh bảng) khi sử dụng câu lệnh THAM GIA. Ví dụ:
SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id
GO TO FULL VERSION