Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sự khác biệt giữa liên kết ANSI và không phải ANSI, và bạn đề xuất cái nào?

cả hai cú pháp thường hoạt động mà không có vấn đề gì, nhưng nếu bạn cố gắng thêm một điều kiện where, bạn sẽ thấy rằng với điều kiện thứ hai đơn giản hơn nhiều để hiểu đâu là điều kiện nối và đâu là mệnh đề where.

1)

  SELECT a.name,
         a.empno,
         b.loc 
    FROM tab a,
         tab b 
   WHERE a.deptno = b.deptno(+)
     AND a.empno = 190;

2)

         SELECT a.name,
                a.empno,
                b.loc 
           FROM tab a,
LEFT OUTER JOIN tab b 
             ON a.deptno = b.deptno
          WHERE a.empno = 190;

Ngoài ra, sẽ dễ dàng hơn nhiều để nhận ra một phép nối bên ngoài và đừng quên bao gồm dấu (+). Nhìn chung, bạn có thể nói đó chỉ là một câu hỏi về thị hiếu, nhưng sự thật là cú pháp thứ hai dễ đọc hơn nhiều và ít bị lỗi hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo menu trong SQLPlus hoặc PL / SQL

  2. Không thể truyền kết nối tới oracle.jdbc.OracleConnection

  3. hành vi của tham gia bên trong tồn tại bên trong sql

  4. lỗi ora-30926

  5. RELIES_ON trống cho RESULT_CACHE