2012-05-09 44 views
5

Tôi đang học SQL cho một kỳ thi cơ sở dữ liệu và cách tôi đã nhìn thấy SQL là họ thức của nó trên trang này:Khi nào sử dụng tham gia tự nhiên SQL thay vì tham gia .. vào?

http://en.wikipedia.org/wiki/Star_schema IE join viết cách Join <table name> On <table attribute> và sau đó là điều kiện để lựa chọn tham gia. Cuốn sách khóa học của tôi và các bài tập của tôi được trao cho tôi từ tổ chức học thuật, tuy nhiên, chỉ sử dụng tham gia tự nhiên trong các ví dụ của họ. Vậy khi nào có quyền sử dụng tham gia tự nhiên? Nên tham gia tự nhiên được sử dụng nếu truy vấn cũng có thể được viết bằng cách sử dụng JOIN .. ON?

Cảm ơn mọi câu trả lời hoặc nhận xét

+4

một bài báo đại diện trực quan rất tốt trên SQL tham gia có thể giúp bạn http: //www.codinghorror. com/blog/2007/10/a-visual-explan-of-sql-joins.html – Sanath

+1

http://vi.wikipedia.org/wiki/Join_%28SQL % 29 – Sanath

+1

Một [tham gia tự nhiên] (http://en.wikipedia.org/wiki/Join_ (SQL) #Natural_join) là một kiểu tham gia equi, nghĩa là các điều kiện chỉ sử dụng các phép so sánh bình đẳng ('='). Nếu bạn có một cái gì đó giống như '... JOIN tblA một ON a.amount> b.amount', điều đó không thể được diễn tả như một sự tham gia tự nhiên. – Wiseguy

Trả lời

9

Tham gia tự nhiên sẽ tìm các cột có cùng tên trong cả hai bảng và thêm một cột vào kết quả cho mỗi cặp được tìm thấy. Tham gia bên trong cho phép bạn chỉ định so sánh bạn muốn thực hiện bằng cách sử dụng bất kỳ cột nào.

+1

Đây là câu trả lời hay nhất vì nó là khách quan, lý thuyết và không chỉ là SQL. –

5

IMO, cú pháp JOIN ON dễ đọc và dễ bảo trì hơn cú pháp nối tự nhiên. Tham gia tự nhiên là một phần còn lại của một số tiêu chuẩn cũ, và tôi cố gắng tránh nó như bệnh dịch hạch.

+1

Tôi đã học được điều gì đó ngày hôm nay :) – keyser

+2

tham gia tự nhiên có rất nhiều vấn đề bên cạnh khả năng đọc. Ví dụ. nếu bạn thay đổi một trong các bảng, bạn có thể phá vỡ truy vấn. – svallory

+0

Tôi đồng ý. Cảm ơn bạn đã trả lời. –

1

Tham gia tự nhiên sẽ tìm các cột có cùng tên trong cả hai bảng và thêm một cột vào kết quả cho mỗi cặp được tìm thấy. Tham gia bên trong cho phép bạn chỉ định so sánh bạn muốn thực hiện bằng cách sử dụng bất kỳ cột nào.

Từ khóa JOIN được sử dụng trong câu lệnh SQL để truy vấn dữ liệu từ hai hoặc nhiều bảng, dựa trên mối quan hệ giữa các cột nhất định trong các bảng này.

khác nhau tham gia

* JOIN: Return rows when there is at least one match in both tables 
* LEFT JOIN: Return all rows from the left table, even if there are no matches in the right table 
* RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table 
* FULL JOIN: Return rows when there is a match in one of the tables 

INNER JOIN http://www.w3schools.com/sql/sql_join_inner.asp

FULL JOIN http://www.w3schools.com/sql/sql_join_full.asp

+0

Cảm ơn bạn đã trả lời. +1 –

+1

Câu trả lời này không giải quyết được câu hỏi. – Brad