Perbedaan antara MySQL dan SQL Server [ditutup]

144

Saya seorang pengembang ASP.NET yang telah digunakan Microsoft SQL Serveruntuk semua kebutuhan basis data saya (baik di tempat kerja maupun untuk proyek pribadi).

Saya sedang mempertimbangkan untuk mencoba tumpukan LAMP untuk beberapa proyek pribadi saya.

Apa perbedaan utama antara MySQLdan SQL Server? Apakah menggunakan prosedur tersimpan merupakan praktik umum MySQL?

Adakah saran atau sumber daya yang Anda rekomendasikan untuk membantu saya dengan sakelar?

Bagi mereka yang memiliki pengalaman dengan keduanya, apakah ada fitur yang hilang MySQL?

ternak
sumber

Jawaban:

139

Satu hal yang harus Anda perhatikan adalah perbedaan yang cukup parah dalam cara SQL Server dan MySQL mengimplementasikan sintaks SQL.

Berikut ini adalah Perbandingan bagus Implementasi SQL Berbeda .

Sebagai contoh, lihat bagian n atas. Di MySQL:

SELECT age
FROM person
ORDER BY age ASC
LIMIT 1 OFFSET 2

Dalam SQL Server (T-SQL):

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC
Jeff Atwood
sumber
27
dan oracle juga berbeda: pilih * dari (pilih usia dari pesanan orang oleh lalu asc) di mana rownum <= 3 Kembalilah ANSI SQL, semuanya dimaafkan :)
gbjbaanb
9
Hanya berlari melintasi ini. Membaca tentang semua perbedaan membuat saya merasa ngeri. Dasar-dasarnya sama (setidaknya dalam hal pemahaman), tetapi spesifiknya sangat, sangat berbeda.
JasCav
21
mungkin komentar bodoh tapi mengapa tidak bisa ada 1 bahasa sql ?? ... adakah html yang berbeda ?? ... jadi mengapa tidak 1 sql.
Greater King
4
@greaterKing HTML adalah struktur dan standar yang ditetapkan oleh komite / konsorsium, SQL .. bukan, itu hanya bahasa scripting dan satu-satunya pemilik adalah pengembang interpreter. Ini semacam Javascript dalam suatu cara, setiap browser memiliki mesin JS mereka sendiri dan cara mereka sendiri menafsirkan skrip. Hanya dengan tekanan semata-mata dari masyarakat bahwa upaya untuk membawa bahasa itu ke semacam solidaritas telah terjadi. Tetapi saya harap mereka semua sangat mirip dengan hanya perbedaan kecil
RedactedProfile
2
T-SQL diterjemahkan menjadi Transact-SQL;) Sql Server termasuk bahasa (T-SQL) tetapi merupakan perangkat lunak secara keseluruhan, dengan GUI, menangani permintaan secara lokal dan melalui jaringan dll.
Botond Bertalan
48

Banyak komentar di sini lebih mirip argumen keagamaan daripada pernyataan kehidupan nyata. Saya telah bekerja selama bertahun-tahun dengan MySQL dan MSSQL dan keduanya adalah produk yang bagus. Saya akan memilih MySQL terutama berdasarkan lingkungan yang sedang Anda kerjakan. Sebagian besar proyek open source menggunakan MySQL, jadi jika Anda menuju ke arah itu MySQL adalah pilihan Anda. Jika Anda mengembangkan sesuatu dengan .Net saya akan memilih MSSQL, bukan karena jauh lebih baik, tetapi hanya karena itulah yang digunakan kebanyakan orang. Saya sebenarnya saat ini di Proyek yang menggunakan ASP.NET dengan MySQL dan C #. Ini bekerja dengan sangat baik.

Remy
sumber
3
Sebenarnya Anda tidak berpikir tidak ada yang seperti MS SQL. Hal yang ada adalah "MS SQL Server".
Unbreakable
Saya yakin Anda tahu lebih banyak dari saya. Saya hanya seorang pemula, bisakah Anda memberi tahu saya jika saya salah? Apakah ada yang tepat seperti MS SQL?
Unbreakable
2
Saya tidak yakin apa yang Anda tanyakan?
Remy
3
Itu betul. Microsoft SQL Server 2012 atau versi apa pun yang Anda gunakan.
Remy
5
Pemrograman adalah semua tentang akronim saat ini. Mari kita ambil contoh Anda berbicara tentang a Lamp Stack. Banyak orang mungkin hanya akan mengatakan LAMP atau WAMP. Demikian pula, alih-alih mengatakan Microsoft SQL Server, kami membuatnya menjadi MS SQL Server ke MS SQL ke MSSQL
ytpillai
23

Saya tidak percaya bahwa tidak ada yang menyebutkan bahwa MySQL tidak mendukung pernyataan Common Table Expressions (CTE) / "with". Perbedaan yang cukup menyebalkan.

Ely
sumber
Saya telah menggunakan CTE dan temp / tabel variabel. Apa manfaat menggunakan CTE dari dua yang terakhir?
Jared
8
@Jared Menggunakan CTE membuat kode dapat dibaca karena Anda tidak perlu mendefinisikan tabel temp dan jenis kolomnya dan dengan menggunakan cte Anda bahkan mendapatkan intellisense untuk jenis dan nama kolom bahkan Anda tidak menentukannya.
Aleks
9
Rekursi adalah salah satu manfaat yang perlu disebutkan.
Faiz
2
Mysql 8 mendukung CTE
Ivanzinho
Jadi mysql sekarang juga mendapatkan permen sintaksis.
TheLegendaryCopyCoder
15

MySQL lebih cenderung memiliki masalah korupsi basis data, dan itu tidak memperbaikinya secara otomatis ketika terjadi. Saya telah bekerja dengan MSSQL sejak versi 6.5 dan tidak ingat masalah korupsi basis data membuat database offline. Beberapa kali saya bekerja dengan MySQL di lingkungan produksi, masalah korupsi basis data membuat seluruh basis data offline hingga kami menjalankan keajaiban "tolong perbaiki indeks rusak saya" dari baris perintah.

Sistem transaksi dan penjurnalan MSSQL, dalam pengalaman saya, menangani hampir semua hal - termasuk siklus daya atau kegagalan perangkat keras - tanpa korupsi basis data, dan jika ada sesuatu yang kacau maka memperbaikinya secara otomatis.

Ini adalah pengalaman saya, dan saya akan senang mendengar bahwa ini telah diperbaiki atau kami melakukan sesuatu yang salah.

http://dev.mysql.com/doc/refman/6.0/id/corrupted-myisam-tables.html

http://www.google.com/search?q=site%3Abugs.mysql.com+index+corruption

Jon Galloway
sumber
2
myIsam dimaksudkan untuk respons yang sangat cepat, itu tidak memaksa cek kunci asing dengan alasan lebih cepat. Coba gunakan mesin InnoDB jika melakukan sesuatu yang lebih serius. Saya memiliki beberapa masalah yang sangat buruk dengan MS Access, dan tidak dapat memaafkan mereka karena tidak bertanggung jawab, jadi saya tidak menyukai database MS, membiarkan mereka melakukan OS, dan memberikan bisnis serius kepada komunitas open source ... walaupun Anda tidak bisa yakin apa pun sejak Oracle telah mengambil alih MySQL ..
ante.sabo
8
Cukup adil, tapi itu konyol untuk mengabaikan database Microsoft berdasarkan Access. Akses itu adalah database desktop dan tidak ada hubungannya dengan SQL Server. Anda tahu StackOverflow berjalan pada SQL Server, bukan?
Jon Galloway
@JonGalloway: Hai, saya seorang pemula. Saya hanya ingin tahu secara tegas apakah kita memiliki sesuatu seperti MS SQL. Saya pikir yang ada adalah MS SQL Server. Tolong jelaskan saya tentang hal ini. Ini mungkin kata yang umum sehingga Anda mungkin menggunakannya sebagai MS SQL dan itu akan masuk akal bagi setiap orang. Tapi saya seorang pemula jadi saya agak terpaku dengan terminologi untuk mendapatkan konsep. Tolong beri tahu saya apa yang Anda bicarakan adalah MS SQL atau MS SQL Server?
Unbreakable
1
Ketika orang mengatakan MSSQL, TSQL mereka umumnya berarti bahasa SQL atau Transaction SQL (TSQL) yang dikirimkan bersama produk Microsoft SQL Server. Ini seharusnya tidak terlalu sulit untuk diketahui. Baca di en.wikipedia.org/wiki/Microsoft_SQL_Server
Faiz
@JonGalloway dan di sini adalah referensi: stackoverflow.blog/2008/09/what-was-stack-overflow-built-with
Moayad Hani Abu Rmilah
7

Terus terang, saya tidak dapat menemukan satu alasan untuk menggunakan MySQL daripada MSSQL. Masalah sebelumnya digunakan untuk biaya tetapi SQL Server 2005 Express gratis dan ada banyak perusahaan web hosting yang menawarkan hosting lengkap dengan sql server dengan harga kurang dari $ 5,00 sebulan.

MSSQL lebih mudah digunakan dan memiliki banyak fitur yang tidak ada di MySQL.

Abdu
sumber
2
Saya pikir harga adalah satu-satunya alasan nyata untuk memilih MySQL daripada MSSQL. Tentu, ada beberapa hosting MSSQL murah tetapi jarang dan sering sangat terbatas pada penyimpanan.
Craig
21
Saya akan mengatakan bahwa lisensi adalah alasan yang cukup bagus untuk menggunakan MySQL.
Dr. Mike
3
Group_concat dan REGEXP adalah lebih dari cukup alasan untuk menggunakan MySQL melalui SQL Server (bahkan jika kedua lisensi itu diaktifkan)
Michele
1
Alasan lain mengapa saya menggunakan MySQL adalah jika Anda menginginkan database lokal dan Anda menggunakan MS SQL Server, Anda harus menjalankan mesin windows, yang mencakup lebih banyak biaya lisensi ... khususnya jika Anda ingin menyimpan semuanya terkini
Pedro Braz
2
Diturunkan karena saya pikir itu bias dan jelas tidak akurat untuk mengatakan tidak ada alasan tunggal untuk menggunakan MySQL melalui MSSQL. SQL Server Express memiliki batasan parah yang tidak dimiliki MySQL, dan tidak ada proyek serius yang akan menggunakan Express, artinya masalah biaya masih sangat valid. Sebagian besar perusahaan terbesar di luar sana memilih MySQL / MariaDB daripada MSSQL. Secara pribadi, saya juga akan, tidak hanya untuk masalah lisensi dan biaya tetapi karena dalam pengalaman saya MySQL jauh lebih mudah untuk dikerjakan. MySQL cenderung hanya berfungsi, sementara saya menemukan diri saya berjuang dengan MSSQL sesekali untuk mendapatkannya untuk melakukan apa yang saya inginkan.
dallin
7

Segala sesuatu di MySQL tampaknya dilakukan lebih dekat ke logam daripada di MSSQL, Dan dokumentasi memperlakukannya seperti itu. Khusus untuk pengoptimalan, Anda harus memahami bagaimana indeks, konfigurasi sistem, dan pengoptimal berinteraksi dalam berbagai keadaan.

"Pengoptimal" lebih bersifat parser. Di MSSQL, rencana kueri Anda sering kali mengejutkan (biasanya bagus, kadang tidak). Di MySQL, cukup banyak melakukan apa yang Anda minta, seperti yang Anda harapkan. Yang berarti Anda sendiri perlu memiliki pemahaman yang mendalam tentang berbagai cara yang mungkin dilakukan.

Tidak dibangun di sekitar model TRANSAKSI yang baik (mesin MyISAM default).

Pengaturan sistem file adalah masalah Anda.

Semua konfigurasi basis data adalah masalah Anda - terutama berbagai ukuran cache.

Kadang-kadang tampaknya lebih baik untuk menganggapnya sebagai ad-hoc, dimuliakan isam. Codd dan Date tidak membawa banyak beban di sini. Mereka akan mengatakannya tanpa malu.

dkretz
sumber
3
Standar MySQL modern untuk Innodb, hanya titik klarifikasi. Saya pikir setelah 5.1 atau lebih. Innodb mendukung transaksi, kunci asing, dan penguncian level baris yang bertentangan dengan penguncian level tabel dengan MyISAM.
Joseph Hamilton
5

Saya pikir salah satu hal utama yang harus diperhatikan adalah bahwa versi sebelum MySQL 5.0 tidak memiliki pandangan, pemicu, dan prosedur tersimpan.

Lebih dari ini dijelaskan di halaman Unduh MySQL 5.0 .

Jon Limjap
sumber
4

@du

Hal utama yang saya temukan bahwa MySQL memiliki lebih dari MSSQL adalah dukungan zona waktu - kemampuan untuk berubah dengan baik di antara zona waktu, menghargai penghematan di siang hari sangat fantastis.

Bandingkan ini:

mysql> SELECT CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles');
+-----------------------------------------------------------------+
| CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles') |
+-----------------------------------------------------------------+
| 2008-04-01 05:00:00                                             |
+-----------------------------------------------------------------+

untuk contortions yang terlibat pada jawaban ini .

Adapun komentar 'lebih mudah digunakan', saya akan mengatakan bahwa intinya adalah mereka berbeda, dan jika Anda tahu satu, akan ada overhead dalam mempelajari yang lain.

Cebjyre
sumber
Juga, perbaiki dukungan ansi untuk grup oleh, kolom stempel waktu otomatis, paging JAUH lebih sederhana ...
Joel Coehoorn
1
Dukungan zona waktu MySQL secara signifikan rusak, saya tidak berpikir itu fitur yang berguna. Lakukan itu di aplikasi sebagai gantinya.
MarkR
Saya belum punya masalah dengan dukungan zona waktu, dapatkah Anda masuk ke detail lebih lanjut atau memberikan tautan?
Cebjyre
2
Mengapa Anda membutuhkan dukungan zona waktu di database? Gunakan UTC di mana-mana dan render di ujung depan / gui menggunakan zona waktu lokal OS.
Tiberiu-Ionuț Stan
4

Keduanya adalah server Product Sql DBMS adalah aplikasi komersial sementara MySql adalah aplikasi opensouces. Namun produk tersebut menyertakan fitur yang serupa, namun sql server harus digunakan untuk solusi perusahaan, sedangkan mysql mungkin sesuai dengan implementasi yang lebih kecil. Jika Anda memerlukan fitur seperti pemulihan, replikasi, keamanan granalar dan signifikan, Anda memerlukan server sql

MySql mengambil lebih sedikit ruang pada disk, dan menggunakan lebih sedikit memori dan cpu daripada server sql

pangeran
sumber
3

Adakah yang punya pengalaman bagus dengan "port" database dari SQL Server ke MySQL?

Ini seharusnya cukup menyakitkan! Saya mengganti versi MySQL dari 4.x ke 5.x dan berbagai pernyataan tidak akan berfungsi lagi seperti dulu. Penganalisis kueri "ditingkatkan" sehingga pernyataan yang sebelumnya disetel untuk kinerja tidak akan berfungsi lagi seperti yang diharapkan.

Pelajaran yang didapat dari bekerja dengan database MySQL 500GB: Ini adalah topik yang halus dan hal-hal lain selain sepele!

dlinsin
sumber
2

@ Cebjyre. IDE apakah Enterprise Manager atau Management Studio lebih baik dari apa yang saya lihat sejauh ini untuk MySQL. Saya mengatakan 'lebih mudah digunakan' karena saya dapat melakukan banyak hal di MSSQL di mana MySQL tidak memiliki rekan. Di MySQL saya tidak tahu cara menyetel kueri dengan hanya melihat rencana kueri atau melihat statistik. Panduan penyetelan indeks di MSSQL mengambil sebagian besar pekerjaan menebak pada indeks apa yang hilang atau salah tempat.

Satu kekurangan dari MySQL adalah tidak ada ukuran maksimal untuk database. Basis data hanya akan bertambah besar sampai mengisi disk. Bayangkan jika disk ini berbagi basis data dengan pengguna lain dan tiba-tiba semua kueri mereka gagal karena basis data mereka tidak dapat tumbuh. Saya telah melaporkan masalah ini ke MySQL sejak lama. Saya pikir belum diperbaiki.

Abdu
sumber
2
Di sisi lain, saya merasa terganggu oleh konsol studio manajemen yang tidak menghargai undo dengan benar (dimungkinkan untuk memiliki kueri yang valid yang tersendat, karena tidak menyadari teks telah diperbarui), dan kurangnya tab -pembangunan (dibandingkan dengan shell mysql). Ada kekurangan di kedua sisi.
Cebjyre
1

Menghabiskan waktu bekerja dengan MySQL dari MSSQL ke sintaks MySQL POV Saya terus menemukan diri saya terbatas pada apa yang bisa saya lakukan.

Ada batasan aneh untuk memperbarui tabel sambil memperbarui tabel yang sama selama pembaruan.

Selain itu UPDATE FROM tidak berfungsi dan terakhir kali saya memeriksa mereka juga tidak mendukung sintaks Oracle MERGE INTO. Ini adalah show stopper untuk saya dan saya berhenti berpikir saya akan mendapatkan apa pun dengan MySQL setelah itu.


sumber