Различия между MySQL и SQL Server

Я ASP.NET разработчик, который использовал Microsoft SQL Server для всех своих потребностей в базе данных (оба на работе и для личных проектов).

Я подумываю опробовать стек LAMP для некоторых моих личных проектов.

Каковы основные различия между MySQL и SQL Server? Является ли использование хранимых процедур обычной практикой в ​​MySQL?

Любые советы или ресурсы, которые вы бы порекомендовали, чтобы помочь мне с переключением?

Для тех, у кого есть опыт работы с обоими, есть ли какие-либо недостающие функции из MySQL?


person sestocker    schedule 14.08.2008    source источник


Ответы (12)


Одна вещь, на которую вы должны обратить внимание, — это довольно серьезные различия в том, как SQL Server и MySQL реализуют синтаксис SQL.

Вот хорошее Сравнение различных реализаций SQL.

Например, взгляните на раздел top-n. В MySQL:

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

В SQL Server (T-SQL):

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC
person Jeff Atwood    schedule 14.08.2008
comment
и оракул тоже другой: select * from (выбрать возраст от человека в порядке назад по возрастанию) где rownum ‹= 3 Вернитесь ANSI SQL, все прощено :) - person gbjbaanb; 18.09.2008
comment
Только что наткнулся на это. Чтение обо всех различиях заставляет меня съеживаться. Основы одинаковы (по крайней мере, с точки зрения понимания), но специфика очень и очень отличается. - person JasCav; 13.05.2010
comment
может быть, глупый комментарий, но почему не может быть 1 язык sql??...есть ли другой html??...так почему бы не 1 sql. - person greaterKing; 13.07.2015
comment
@greaterKing HTML - это установленная структура и стандарт, установленный комитетом / консорциумом, SQL ... нет, это просто язык сценариев, и единственным владельцем является разработчик интерпретатора. В чем-то это похоже на Javascript: у каждого браузера свой JS-движок и свой способ интерпретации скрипта. Только благодаря явному давлению со стороны сообщества были предприняты попытки привести этот язык к какой-то солидарности. Но, черт возьми, я бы хотел, чтобы все они были очень похожи с небольшими отличиями. - person RedactedProfile; 01.12.2015
comment
Как Sql Server == T-SQL? Что означает буква Т? - person Kellen Stuart; 29.09.2016
comment
T-SQL транслируется в Transact-SQL;) Sql Server включает в себя язык (T-SQL), но это программное обеспечение в целом, с графическим интерфейсом, обрабатывающее запросы локально, через сеть и т. д. - person Botond Bertalan; 19.10.2016

Многие комментарии здесь больше похожи на религиозные аргументы, чем на утверждения из реальной жизни. Я много лет работал и с MySQL, и с MSSQL, и оба продукта хороши. Я бы выбрал MySQL в основном на основе среды, в которой вы работаете. Большинство проектов с открытым исходным кодом используют MySQL, поэтому, если вы идете в этом направлении, MySQL — ваш выбор. Если вы разрабатываете что-то с .Net, я бы выбрал MSSQL не потому, что он намного лучше, а просто потому, что его использует большинство людей. На самом деле в настоящее время я работаю над проектом, который использует ASP.NET с MySQL и С#. Он отлично работает.

person Remy    schedule 01.09.2010
comment
Строго говоря, вы не думаете, что есть что-то вроде MS SQL. То, что существует, — это MS SQL Server. - person Unbreakable; 05.07.2015
comment
Я уверен, что вы знаете больше, чем я. Я всего лишь новичок, подскажите, пожалуйста, если я ошибаюсь? Есть ли что-нибудь точное, как MS SQL? - person Unbreakable; 05.07.2015
comment
Я не уверен, что вы спрашиваете? - person Remy; 08.07.2015
comment
Все, что я хочу сказать, это то, что я не думаю, что MS SQL является правильным техническим термином для использования. РСУБД называется MS SQL Server, верно? Не только MS SQL. - person Unbreakable; 08.07.2015
comment
Итак, когда вы говорите о MS SQL, что вы на самом деле имеете в виду под MS SQL Server? - person Unbreakable; 08.07.2015
comment
Это правильно. Microsoft SQL Server 2012 или любая другая версия, которую вы используете. - person Remy; 08.07.2015
comment
В наши дни программирование состоит из аббревиатур. Возьмем пример, когда вы говорите о Lamp Stack. Многие люди, вероятно, скажут просто LAMP или WAMP. Точно так же вместо того, чтобы говорить Microsoft SQL Server, мы превратили MS SQL Server в MS SQL в MSSQL. - person ytpillai; 24.04.2016

Я не могу поверить, что никто не упомянул, что MySQL не поддерживает операторы Common Table Expressions (CTE)/with. Это довольно раздражающая разница.

person ely    schedule 12.10.2012
comment
Я использовал как CTE, так и таблицы temp/variable. В чем преимущество использования CTE по сравнению с двумя последними? - person Jared; 12.05.2014
comment
@Jared Использование CTE делает код читабельным, потому что вам не нужно определять временную таблицу и ее типы столбцов, а с помощью cte вы даже получаете интеллектуальное представление для типа и имени столбца, даже если вы их не указали. - person Aleks; 21.08.2014
comment
Рекурсия — это одно из преимуществ, о котором следует упомянуть. - person Faiz; 03.10.2015
comment
Mysql 8 поддерживает CTE - person ; 27.08.2018
comment
Таким образом, mysql теперь также получает синтаксические конфеты. - person TheLegendaryCopyCoder; 17.01.2019

MySQL, скорее всего, имеет проблемы с повреждением базы данных, и он не исправляет их автоматически, когда они происходят. Я работал с MSSQL с версии 6.5 и не помню проблемы с повреждением базы данных, которая переводила базу данных в автономный режим. Несколько раз, когда я работал с MySQL в производственной среде, проблема с повреждением базы данных переводила всю базу данных в автономный режим, пока мы не запускали волшебную вещь «пожалуйста, исправьте мой поврежденный индекс» из командной строки.

По моему опыту, система транзакций и журналирования MSSQL справляется практически со всем, включая отключение питания или аппаратный сбой, без повреждения базы данных, а если что-то идет не так, она исправляет это автоматически.

Это был мой опыт, и я был бы рад услышать, что это было исправлено или мы делали что-то не так.

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

http://www.google.com/search?q=site%3Abugs.mysql.com+index+повреждение

person Jon Galloway    schedule 20.08.2008
comment
myIsam предназначен для очень быстрых ответов, он не требует принудительной проверки внешнего ключа, чтобы быть быстрее. Попробуйте использовать движок InnoDB, если делаете что-то более серьезное. У меня были действительно неприятные проблемы с MS Access, и я не могу простить им такую ​​безответственность, поэтому я не одобряю ни одну из баз данных MS, пусть они делают операционные системы и отдают серьезный бизнес сообществу с открытым исходным кодом ... хотя вы не можете быть уверен ни в чем, так как Oracle обогнал MySQL.. - person ante.sabo; 01.09.2010
comment
Справедливо, но глупо игнорировать базы данных Microsoft, основанные на Access. Access это настольная база данных и не имеет ничего общего с SQL Server. Вы знаете, что StackOverflow работает на SQL Server, верно? - person Jon Galloway; 02.09.2010
comment
@JonGalloway: Привет, я новичок. Я просто хочу знать, строго говоря, есть ли у нас что-нибудь вроде MS SQL. Я думаю, что существует MS SQL Server. Не могли бы вы разъяснить мне это. Это может быть обычное слово, поэтому вы могли использовать его как MS SQL, и оно имело бы смысл для всех. Но я новичок, поэтому я немного зациклен на терминологии, чтобы понять концепцию. Пожалуйста, дайте мне знать, о чем вы говорите, это MS SQL или MS SQL Server? - person Unbreakable; 05.07.2015
comment
Когда люди говорят MSSQL, TSQL, они обычно имеют в виду язык SQL или Transaction SQL (TSQL), поставляемый с продуктом Microsoft SQL Server. Это не должно быть так сложно выяснить. Читайте на en.wikipedia.org/wiki/Microsoft_SQL_Server. - person Faiz; 03.10.2015
comment
@JonGalloway, а вот ссылка: stackoverflow.blog/2008/09/what-was -stack-overflow-встроенный - person Moayad Hani Abu Rmilah; 22.02.2017

Честно говоря, я не могу найти ни одной причины использовать MySQL, а не MSSQL. Раньше проблема заключалась в стоимости, но SQL Server 2005 Express бесплатен, и есть много веб-хостинговых компаний, которые предлагают полный хостинг с сервером sql менее чем за 5 долларов в месяц.

MSSQL проще в использовании и имеет много функций, которых нет в MySQL.

person Abdu    schedule 09.09.2008
comment
Я думаю, что цена - единственная реальная причина выбрать MySQL вместо MSSQL. Конечно, есть несколько дешевых хостингов MSSQL, но они редки и часто сильно ограничены в хранении. - person Craig; 23.11.2008
comment
Хранилище сервера sql составляет 100–500 МБ. Для обычного сайта этого достаточно. - person Abdu; 20.04.2009
comment
Я бы сказал, что лицензирование — довольно веская причина для использования MySQL. - person Dr. Mike; 02.09.2013
comment
Пока мои проблемы заключаются в том, что mySQL не поддерживает типы переменных на основе таблиц, а также вы не можете повторно открывать временные таблицы. В значительной степени показать стопперы для меня. - person realtek; 09.04.2014
comment
Group_concat и REGEXP — более чем достаточные причины для использования MySQL вместо SQL Server (даже если две лицензии поменялись местами). - person Michele; 24.02.2015
comment
@Michele SQL Server поддерживает Regex с интеграцией CLR. Не знаю, что такое Group_concat. Я уверен, что есть эквивалентный способ получить те же результаты. С интеграцией CLR у вас есть .NET Framework под рукой. Что касается лицензий, вы можете использовать бесплатную версию Express до размера базы данных 10G. Большинству людей нужно меньше. - person Tony_Henrich; 24.02.2015
comment
@Tony_Henrich О да, конечно. Я сам написал две CLR на C# для выполнения этих двух задач (group_concat объединяет несколько строк в одну строку). Дело в том, что такие функции, в частности регулярное выражение, являются важными инструментами для анализа данных и должны быть включены по умолчанию. - person Michele; 25.02.2015
comment
еще одна причина, по которой я бы выбрал MySQL, заключается в том, что если вам нужна локальная база данных и вы выбираете MS SQL Server, вам нужно будет запустить машину с Windows, что включает в себя больше затрат на лицензирование ... особенно если вы хотите сохранить все это своевременно - person Pedro Braz; 15.07.2015
comment
Проголосовал против, потому что я думаю, что это предвзято и явно неточно, чтобы сказать, что нет ни одной причины использовать MySQL вместо MSSQL. SQL Server Express имеет серьезные ограничения, которых нет у MySQL, и ни один серьезный проект не собирается использовать Express, а это означает, что вопрос стоимости по-прежнему актуален. Большинство крупнейших компаний предпочли MySQL/MariaDB MSSQL. Лично я бы тоже хотел, не только из-за проблем с лицензированием и стоимостью, но и потому, что, по моему опыту, с MySQL намного проще работать. MySQL имеет тенденцию просто работать, в то время как я иногда борюсь с MSSQL, чтобы заставить его делать то, что я хочу. - person dallin; 24.08.2016
comment
сервер ms sql не занимает много места на жестком диске, тогда как mysql намного меньше. Также mysql обычно устанавливается как часть пакета WAMP. - person barlop; 20.10.2016
comment
@barlop В эту эпоху дешевых терабайтных дисков дисковое пространство не имеет значения. SQL Server занимает менее 0,5 гигабайта, что составляет долю терабайтного диска, и вы получаете гораздо больше функциональных возможностей, чем MySQL. Да, он использует больше дискового пространства, чем MySQL, но что с того? Кому интересен WAMP и почему он здесь актуален. WAMP означает установку других вещей вместе с MySQL. Либо My SQLServer, либо MySQL не проблема. Просто дважды щелкните установщик и несколько кнопок OK. - person Tony_Henrich; 04.12.2016
comment
@Tony_Henrich недешево, если SSD, а SSD может понадобиться, например, для бесшумности. - person barlop; 04.12.2016
comment
SSD на 250 ГБ стоит менее 100 долларов. Дни, когда вы слишком беспокоились о дисковом пространстве HD или SSD, прошли. 0,5 ГБ — это тонна дискового пространства, как и 10 лет назад. Добро пожаловать в 2016 год. - person Tony_Henrich; 05.12.2016

В MySQL вроде все сделано ближе к металлу, чем в MSSQL, и документация трактует именно так. В частности, для оптимизации вам необходимо понимать, как индексы, системная конфигурация и оптимизатор взаимодействуют в различных обстоятельствах.

"Оптимизатор" - это больше парсер. В MSSQL ваш план запроса часто является сюрпризом (обычно хорошим, иногда нет). В MySQL он в значительной степени делает то, что вы просили, так, как вы ожидали. Это означает, что вы сами должны иметь глубокое понимание различных способов, которыми это можно сделать.

Не построен на хорошей модели ТРАНЗАКЦИИ (движок MyISAM по умолчанию).

Настройка файловой системы - ваша проблема.

Вся конфигурация базы данных - это ваша проблема, особенно различные размеры кеша.

Иногда кажется, что лучше думать об этом как о специальном, прославленном изаме. Кодд и Дейт не имеют здесь большого значения. Они сказали бы это без смущения.

person dkretz    schedule 23.11.2008
comment
Однако современный MySQL по умолчанию использует Innodb, просто пояснение. Я думаю после 5.1 или около того. Innodb поддерживает транзакции, внешние ключи и блокировку на уровне строк, в отличие от блокировки на уровне таблиц с MyISAM. - person Joseph Hamilton; 19.06.2015

Я думаю, что одна из главных вещей, на которую следует обратить внимание, это то, что в версиях до MySQL 5.0 не было представлений, триггеров и хранимых процедур.

Подробнее об этом читайте на странице загрузки MySQL 5.0.

person Jon Limjap    schedule 14.08.2008

@абду

Главное, что я обнаружил в MySQL по сравнению с MSSQL, - это поддержка часовых поясов - возможность красивого переключения между часовыми поясами с учетом перехода на летнее время просто фантастическая.

Сравните это:

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                                             |
+-----------------------------------------------------------------+

к искажениям, связанным с этот ответ.

Что касается комментария «проще в использовании», я бы сказал, что дело в том, что они разные, и если вы знаете один, изучение другого будет накладным.

person Cebjyre    schedule 09.09.2008
comment
Кроме того, правильная поддержка ansi для группировки, столбцы с автоматическими отметками времени, НАМНОГО более простая подкачка... - person Joel Coehoorn; 02.10.2008
comment
Поддержка часового пояса MySQL значительно нарушена, я не думаю, что это полезная функция. Вместо этого сделайте это в приложении. - person MarkR; 23.11.2008
comment
У меня не было проблем с поддержкой часовых поясов, не могли бы вы рассказать подробнее или дать ссылку, пожалуйста? - person Cebjyre; 16.12.2008
comment
Зачем вам нужна поддержка часового пояса в базе данных? Используйте UTC везде и визуализируйте во внешнем интерфейсе / графическом интерфейсе, используя локальный часовой пояс ОС. - person Tiberiu-Ionuț Stan; 14.03.2017

Оба являются продуктом СУБД. Сервер Sql является коммерческим приложением, а MySql — приложением с открытым исходным кодом. Оба продукта включают аналогичную функцию, однако сервер sql следует использовать для корпоративного решения, тогда как mysql может подойти для меньшей реализации. Если вам нужна такая функция, как восстановление, репликация, безопасность granalar и значительный, вам нужен сервер sql

MySql занимает меньше места на диске и использует меньше памяти и процессора, чем сервер sql.

person prince    schedule 08.03.2010

У кого-нибудь есть хороший опыт работы с «портом» базы данных с SQL Server на MySQL?

Это должно быть довольно болезненно! Я переключил версии MySQL с 4.x на 5.x, и различные операторы больше не работали, как раньше. Анализатор запросов был «улучшен», поэтому операторы, которые ранее были настроены для повышения производительности, больше не работали должным образом.

Урок, извлеченный из работы с базой данных MySQL объемом 500 ГБ: это тонкая тема и совсем не тривиальная!

person dlinsin    schedule 14.08.2008

@Cebjyre. IDE, будь то Enterprise Manager или Management Studio, лучше всего, что я видел до сих пор для MySQL. Я говорю «проще в использовании», потому что я могу делать много вещей в MSSQL, где MySQL не имеет аналогов. В MySQL я понятия не имею, как настраивать запросы, просто просматривая план запроса или просматривая статистику. Мастер настройки индексов в MSSQL берет на себя большую часть работы по угадыванию того, какие индексы отсутствуют или находятся не на своем месте.

Одним из недостатков MySQL является отсутствие максимального размера базы данных. База данных будет просто увеличиваться в размере, пока не заполнит диск. Представьте, что этот диск совместно использует базы данных с другими пользователями, и вдруг все их запросы терпят неудачу, потому что их базы данных не могут расти. Я уже давно сообщал об этой проблеме MySQL. Я не думаю, что это еще исправлено.

person Abdu    schedule 09.09.2008
comment
С другой стороны, меня раздражало, что консоль управления Studio не соблюдает отмену должным образом (может быть действительный запрос, который она подавляет, потому что не понимает, что текст был обновлен), и отсутствие вкладки -расширение (по сравнению с оболочкой mysql). Минусы есть с обеих сторон. - person Cebjyre; 16.12.2008

Потратив некоторое время на работу с MySQL от MSSQL до синтаксиса MySQL POV, я продолжал обнаруживать, что мои возможности ограничены.

Существуют странные ограничения на обновление таблицы при повторном обращении к той же таблице во время обновления.

Кроме того, UPDATE FROM не работает, и в последний раз, когда я проверял, они также не поддерживают синтаксис Oracle MERGE INTO. Это было для меня препятствием, и я перестал думать, что после этого чего-то добьюсь с MySQL.

person Community    schedule 23.11.2008