Tiêu chuẩn SQL nào được hỗ trợ rộng rãi và hoàn toàn nhất?


8

Tôi muốn tập trung vào một trong các thông số kỹ thuật ngôn ngữ SQL cho mục đích học tập và tham khảo. Phiên bản nào của tiêu chuẩn SQL được hỗ trợ rộng rãi nhất trên các DBMS để tôi có thể tập trung thời gian và năng lượng của mình vào nó?

Câu trả lời:


15

Tôi nghĩ rằng bạn đang cố gắng sống trong thế giới mơ ước của Joe Celko, nơi bạn chỉ có thể sử dụng SQL tiêu chuẩn và trong bất kỳ tuần nào bạn có thể phải chuyển tất cả mã của mình từ SQL Server sang Oracle và sau đó trở lại SQL Server và sau đó quay lại SQL Server . Hai lần.

Mặc dù các khía cạnh cốt lõi và cơ bản của SQL tiêu chuẩn sẽ giúp bạn ở bất cứ đâu, nhưng cố gắng giới hạn bản thân với bộ ngôn ngữ đó vì sợ chuyển tiếp trong tương lai (hoặc theo nguyên tắc) không phải là một con đường tôi khuyên dùng. Cá nhân, tôi tuân thủ các công cụ tiêu chuẩn ANSI khi tôi có thể (ví dụ <> vs.! =, COALESCE so với ISNULL, CURRENT_TIMESTAMP so với GETDATE (), v.v.), nhưng tôi cũng không ngại sử dụng SQL Server dành riêng cho máy chủ những thứ làm cho công việc của tôi dễ dàng hơn.

Điều quan trọng là phải hiểu cách SQL hoạt động nói chung; điều quan trọng không kém là phải hiểu cách ngôn ngữ hoạt động trong (các) RDBMS của bạn - bao gồm các sai lệch so với tiêu chuẩn, các sai lệch so với cách RDBMS khác có thể đã thực hiện cùng một khái niệm và các tiện ích mở rộng độc quyền không tồn tại ở nơi khác.

Ví dụ, SQL Server bao gồm một phần tốt của tiêu chuẩn và nó tiến gần hơn đến việc tuân thủ đầy đủ với từng phiên bản mới. Nó sẽ bao giờ bao gồm 100%? Nghi ngờ cao độ. Nó sẽ tiếp tục thêm các phần mở rộng độc quyền không có trong tiêu chuẩn? Chắc chắn rồi. Nếu mọi người đều tuân theo tiêu chuẩn và không ai bước ra ngoài tiêu chuẩn đó, thì sẽ không có lợi thế nào khi chọn một nền tảng này trên nền tảng khác và tất cả chúng ta đều đang sử dụng cùng một thứ.


1
+1 Để đề cập rằng tuân thủ dưới 100% không nhất thiết là điều xấu. Mặc dù khả năng chuyển mã của bạn sang các nền tảng khác nhau có vẻ như là một điều tuyệt vời, nhưng thực tế là bạn đã chọn RDBMS của mình vì một lý do (hoặc ít nhất tôi hy vọng sự lựa chọn không chỉ là một tùy ý). Trong thế giới thực, chi phí chuyển mã của bạn sang một nền tảng mới thường đắt hơn so với việc tìm ra cách thực hiện nó trên nền tảng hiện tại của bạn.
Matt M

11

Không một ai trong số họ. Bạn có thể học SQL (-ish) chuẩn cho bất kỳ RDBMS nào.

SQL chuẩn không được sử dụng trong thế giới thực để trả công cho các dự án thành công ...

Nói rằng, MySQL là một nơi tốt để bắt đầu và đây là một hướng dẫn


"SQL tiêu chuẩn không được sử dụng trong thế giới thực để trả công việc cho các dự án thành công ..." - điều thú vị nhất được đăng trên tất cả các trao đổi ngăn xếp.
Jonesome phục hồi Monica

3
@samsmith tại sao? Chỉ vì bạn không đồng ý không làm cho nó ngớ ngẩn. Có lẽ bạn có thể giải thích tại sao bạn không đồng ý, thay vì chỉ gọi nó là ngớ ngẩn?
Aaron Bertrand

1
@samsmith cũng vậy, và đặc biệt nếu bạn là người bỏ phiếu, thì tôi thấy sự hấp dẫn trước đây của bạn làconstructive guidance vô cùng đạo đức giả. Đâu là hướng dẫn mang tính xây dựng của bạn ở đây để gbn cải thiện câu trả lời của anh ấy?
Aaron Bertrand

3
@samsmith Nếu mục tiêu của bạn là một "dự án thành công", thì bạn cần tận dụng tất cả các tính năng RDBMS của mình. Không làm như vậy và chỉ sử dụng SQL tiêu chuẩn chỉ làm lãng phí khả năng của phần mềm của bạn
Lamak

1
@samsmith Bạn lấy số liệu thống kê của mình cho "% lớn" ở đâu? Và bao nhiêu% hệ thống cơ sở dữ liệu trong thế giới thực đang được các nhà phát triển thiết kế? Theo kinh nghiệm cá nhân của tôi và của mọi khách hàng mà tôi từng có, tôi vẫn chưa bắt gặp một cửa hàng SQL Server tuân thủ tiêu chuẩn. Không bao giờ. Nó chỉ đơn giản là ngu ngốc để làm như vậy, bất kể bạn bè nhà phát triển của bạn tuyên bố họ đang làm gì.
Aaron Bertrand

10

Tất cả các RDBMS chính đều hỗ trợ các phiên bản khác nhau của thông số SQL ở các mức độ khác nhau, với các phiên bản cũ hơn của thông số kỹ thuật được hỗ trợ đầy đủ hơn. Không phải tất cả đều tuân thủ nghiêm túc như nhau (ví dụ, Oracle bắt đầu hỗ trợ 'ansi tham gia' vào năm 2001, gần một thập kỷ sau SQL-92 ), và như @gbn đã nói, trong thực tế, bạn cần biết hương vị của SQL được sử dụng bởi mỗi sản phẩm bạn sử dụng.

Postgres là một ngoại lệ ở chỗ nó "tự hào về việc tuân thủ tiêu chuẩn" . Đối với "mục đích học tập và tham khảo", bạn cần thực hành thực hành với cơ sở dữ liệu, không chỉ là kiến ​​thức từ một cuốn sách hoặc tiêu chuẩn, và postgres là một nền tảng lý tưởng để học các sợi dây vì:

  1. Nó là miễn phí và có sẵn trên hầu hết các nền tảng
  2. Việc tuân thủ các tiêu chuẩn đã nói ở trên
  3. Nó có xuất sắc tài liệu
  4. Nó là trưởng thành và được sử dụng rộng rãi
  5. Nó có nhiều tính năng được tìm thấy trong các RDBMS thương mại phổ biến nhất và khá nhiều tính năng không

3

Đồng ý với Jack và gbn, không có tiêu chuẩn và bạn cần phải đưa ra lựa chọn. Để đưa ra lựa chọn này, bạn cần chọn RDBMS trước. Tôi khuyên bạn nên suy nghĩ về những điều sau đây: 1) bạn có muốn trở thành nhà phát triển DB hoặc DBA không? 2) Bạn muốn làm việc với (các) hệ thống hoạt động nào? Tôi đồng ý, câu hỏi này hơi lạ, nhưng khi tôi nói chuyện với sinh viên, họ nói rằng nó rất quan trọng.

Ví dụ: (ví dụ, có thể tôi sai) nếu bạn muốn trở thành một DBA và không muốn làm việc với Windows, bạn không cần phải nghĩ về MSSQL. Và nếu bạn muốn trở thành DBA và bạn muốn làm việc với các chuỗi lệnh và tệp cấu hình - có lẽ Oracle là thứ bạn cần. Nếu bạn muốn trở thành nhà phát triển muốn sử dụng kiến ​​thức của mình trong các dự án tự do, có lẽ bạn cần MySQL?


2
Tôi hy vọng đây không phải là tiêu chí duy nhất mà các công ty khởi nghiệp sử dụng để chọn nền tảng của họ. :-)
Aaron Bertrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.