Standar SQL mana yang paling luas dan sepenuhnya didukung?


8

Saya ingin berkonsentrasi pada salah satu spesifikasi bahasa SQL untuk tujuan pembelajaran dan referensi. Versi standar SQL mana yang paling banyak didukung di seluruh DBMS sehingga saya bisa memfokuskan waktu dan energi saya di sana?

Jawaban:


15

Saya pikir Anda mencoba untuk hidup di dunia mimpi Joe Celko di mana Anda hanya dapat menggunakan SQL standar dan dalam setiap minggu Anda mungkin harus mem-port semua kode Anda dari SQL Server ke Oracle dan kemudian Oracle ke DB2 dan kemudian kembali ke SQL Server lagi . Dua kali.

Sementara aspek-aspek inti dan mendasar dari SQL standar akan membantu Anda di mana saja, mencoba membatasi diri pada rangkaian bahasa tersebut karena takut porting di masa depan (atau hanya pada prinsipnya) bukan jalan yang saya sarankan. Secara pribadi, saya tetap berpegang pada hal-hal standar ANSI ketika saya bisa (mis. <> Vs.! =, COALESCE vs. ISNULL, CURRENT_TIMESTAMP vs. GETDATE (), dll.), Tapi saya juga tidak takut menggunakan SQL Server-specific hal-hal yang membuat pekerjaan saya lebih mudah.

Penting untuk memahami bagaimana SQL bekerja secara umum; sama pentingnya untuk memahami cara kerja bahasa dalam RDBMS Anda - termasuk penyimpangan dari standar, penyimpangan dari cara RDBMS lain mungkin menerapkan konsep yang sama, dan ekstensi kepemilikan yang tidak ada di tempat lain.

SQL Server, sebagai contoh, mencakup sebagian standar, dan semakin mendekati kepatuhan penuh pada setiap versi baru. Apakah ini akan mencakup 100%? Sangat meragukan. Apakah ini akan terus menambahkan ekstensi milik tidak dalam standar? Pasti. Jika semua orang membahas standar dan tidak ada yang melangkah keluar, maka tidak akan ada keuntungan untuk memilih satu platform di atas yang lain, dan kita semua akan menggunakan hal yang sama.


1
+1 Untuk menyebutkan bahwa kepatuhan kurang dari 100% tidak selalu merupakan hal yang buruk. Sementara kemampuan untuk mem-porting kode Anda ke berbagai platform mungkin tampak seperti hal yang hebat, faktanya adalah Anda memilih RDBMS Anda karena suatu alasan (atau setidaknya saya berharap pilihannya lebih dari sekadar yang sewenang-wenang). Di dunia nyata, biaya porting kode Anda ke platform baru seringkali lebih mahal daripada mencari tahu bagaimana melakukannya di platform Anda saat ini.
Matt M

11

Tidak satupun dari mereka. Anda dapat mempelajari SQL standar (-ish) untuk RDBMS apa pun.

SQL standar tidak digunakan di dunia nyata untuk membayar pekerjaan pada proyek yang berhasil ...

Mengatakan itu, MySQL adalah tempat yang baik untuk memulai dan ini adalah tutorial


"SQL Standar tidak digunakan di dunia nyata untuk membayar pekerjaan pada proyek yang berhasil ..." - hal paling konyol yang diposting di semua pertukaran stack.
Jonesome Reinstate Monica

3
@samsmith mengapa? Hanya karena Anda tidak setuju, tidak membuatnya konyol. Mungkin Anda bisa menjelaskan mengapa Anda tidak setuju, alih-alih hanya menyebutnya konyol?
Aaron Bertrand

1
@samsmith juga, dan terutama jika Anda adalah pemilih bawah, maka saya menemukan permohonan Anda sebelumnya untukconstructive guidance sangat munafik. Di mana panduan konstruktif Anda di sini bagi gbn untuk meningkatkan jawabannya?
Aaron Bertrand

3
@samsmith Jika tujuan Anda adalah "proyek yang berhasil", maka Anda perlu memanfaatkan semua fitur RDBMS Anda. Gagal melakukannya, dan hanya menggunakan SQL standar hanya membuang-buang kemampuan perangkat lunak Anda
Lamak

1
@samsmith Di mana Anda mendapatkan statistik Anda untuk "% besar"? Dan berapa% dari sistem basis data dunia nyata yang dirancang oleh pengembang? Dalam pengalaman pribadi saya, dan bahwa dari setiap keterlibatan pelanggan yang pernah saya miliki, saya belum menemukan toko SQL Server yang mematuhi standar. Pernah. Sangat bodoh melakukannya, terlepas dari apa yang dikatakan teman pengembang Anda tentang apa yang mereka lakukan.
Aaron Bertrand

10

Semua RDBMS utama mendukung versi spesifikasi SQL yang berbeda untuk derajat yang berbeda, dengan versi spesifikasi yang lebih lama lebih didukung sepenuhnya. Tidak semua menganggap kesesuaian sama seriusnya (misalnya, Oracle mulai mendukung 'ansi joins' pada tahun 2001, hampir satu dekade setelah SQL-92 ), dan seperti yang sudah dikatakan @gbn, dalam praktiknya Anda perlu mengetahui rasa SQL yang digunakan oleh setiap produk Kau gunakan.

Postgres adalah pengecualian karena "membanggakan diri dalam kepatuhan standar" . Untuk "tujuan pembelajaran dan referensi", Anda memerlukan praktik langsung dengan database, bukan hanya pengetahuan dari buku atau standar, dan postgres adalah platform yang ideal untuk mempelajari tali dengan karena:

  1. Ini gratis dan tersedia di sebagian besar platform
  2. Kepatuhan standar tersebut di atas
  3. Ini memiliki dokumentasi yang sangat baik
  4. Ini matang dan banyak digunakan
  5. Ini memiliki banyak fitur yang ditemukan di RDBMS komersial paling populer, dan beberapa yang tidak

3

Setuju dengan Jack dan gbn, tidak ada standar dan Anda harus membuat pilihan. Untuk membuat pilihan ini, Anda harus memilih RDBMS terlebih dahulu. Saya akan merekomendasikan untuk memikirkan hal-hal berikut: 1) apakah Anda ingin menjadi DB-developer atau DBA? 2) Sistem operasi apa yang ingin Anda gunakan? Saya setuju, pertanyaan ini sedikit aneh, tetapi ketika saya berbicara dengan siswa, mereka mengatakan itu penting.

Misalnya (hanya contoh, mungkin saya salah) jika Anda ingin menjadi DBA dan tidak ingin bekerja dengan Windows, Anda tidak perlu memikirkan MSSQL. Dan jika Anda ingin menjadi DBA dan Anda ingin bekerja dengan perintah-string dan file konfigurasi - mungkin Oracle adalah yang Anda butuhkan. Jika Anda ingin menjadi pengembang ingin menggunakan pengetahuan Anda dalam proyek-proyek lepas, mungkin Anda perlu MySQL?


2
Saya harap ini bukan satu-satunya kriteria yang digunakan startup untuk memilih platform mereka. :-)
Aaron Bertrand
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.