MySQL과 SQL Server의 차이점


144

저는 모든 데이터베이스 요구 사항 (직장 및 개인 프로젝트 모두)에 사용한 ASP.NET 개발자입니다 Microsoft SQL Server.

개인 프로젝트 중 일부에 대해 LAMP 스택을 시험 해보고 있습니다.

사이의 주요 차이점은 무엇입니까 MySQL와는 SQL Server? 사용하는 저장 프로 시저 에서 일반적인 관행을 MySQL?

스위치 사용에 도움이되는 조언이나 리소스가 있습니까?

둘 다 경험이있는 사람들에게 누락 된 기능이 MySQL있습니까?

답변:


139

주의해야 할 사항 중 하나는 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

27
oracle도 다릅니다. select * from (asc에 의해 사람 순서에서 나이를 선택하십시오) 여기서 rownum <= 3 ANSI SQL으로 돌아와서 모두 용서합니다 :)
gbjbaanb

9
이걸 가로 질러 달려 모든 차이점에 대해 읽으면 울부 짖습니다. 기본 사항은 동일하지만 (적어도 이해 측면에서) 세부 사항은 매우 다릅니다.
JasCav

21
어쩌면 바보 같은 의견이지만 왜 1 개의 SQL 언어가있을 수 없습니까? .... 다른 HTML이 있습니까?
Greating King

4
@greaterKing HTML은위원회 / 컨소시엄에 의해 설정된 구조이며 표준입니다. SQL은 스크립트 언어 일 뿐이며 유일한 소유자는 통역사의 개발자입니다. 모든 브라우저에는 자체 JS 엔진과 스크립트 해석 방법이 있습니다. 그 언어를 어떤 종류의 연대로 가져 오려는 노력은 지역 사회의 압력에 의해서만 이루어졌습니다. 그러나 사람은 그들이 단지 약간의 차이만으로도 매우 유사하기를 바랍니다
RedactedProfile

2
T-SQL은 Transact-SQL로 변환됩니다.) Sql Server에는 언어 (T-SQL)가 포함되어 있지만 GUI를 사용하여 로컬 및 네트워크 등을 통해 요청을 처리하는 전체 소프트웨어입니다.
Botond Bertalan

48

여기에 많은 의견이 실제 진술보다 종교적인 주장처럼 들립니다. 나는 MySQL과 MSSQL 모두에서 수년간 일해 왔으며 둘 다 좋은 제품입니다. 나는 주로 작업중 인 환경을 기반으로 MySQL을 선택합니다. 대부분의 오픈 소스 프로젝트는 MySQL을 사용하므로, 그러한 방향으로 나아가면 MySQL이 선택됩니다. .Net으로 무언가를 개발한다면 MSSQL을 선택할 것입니다. 왜냐하면 MSSQL이 훨씬 낫기 때문이 아니라 대부분의 사람들이 사용하는 것입니다. 저는 현재 MySQL 및 C #과 함께 ASP.NET을 사용하는 프로젝트에 있습니다. 완벽하게 작동합니다.


3
엄밀히 말하면 MS SQL과 같은 것은 없다고 생각합니다. 존재하는 것은 "MS SQL Server"입니다.
깨지지 않는

나는 당신이 나보다 더 많이 알고 있다고 확신합니다. 나는 단지 초보자입니다. 제가 틀렸다면 알려주십시오. MS SQL과 정확히 일치하는 것이 있습니까?
깨지지 않는

2
당신이 무엇을 요구하는지 잘 모르겠습니다.
Remy

3
맞아요. Microsoft SQL Server 2012 또는 사용중인 버전
Remy

5
프로그래밍은 오늘날 약어에 관한 것입니다. 에 대해 이야기하는 예를 들어 봅시다 Lamp Stack. 많은 사람들이 아마도 LAMP 또는 WAMP라고 말할 것입니다. 마찬가지로, Microsoft SQL Server 대신 MS SQL Server에서 MS SQL에서 MSSQL로
ytpillai

23

MySQL이 CTE (Common Table Expressions) / "with"문을 지원하지 않는다고 언급 한 사람은 아무도 없습니다. 꽤 성가신 차이입니다.


CTE와 임시 / 변수 테이블을 모두 사용했습니다. 후자에 비해 CTE를 사용하면 어떤 이점이 있습니까?
Jared

8
@Jared CTE를 사용하면 임시 테이블과 열 유형을 정의 할 필요가 없으므로 cTE를 사용하면 코드를 읽을 수 있습니다 .cte를 사용하면 열 유형과 이름을 지정하지 않아도 지능을 얻을 수 있습니다.
Aleks

9
재귀는 언급이 필요한 이점 중 하나입니다.
Faiz

2
Mysql 8은 CTE를 지원합니다
Ivanzinho

따라서 mysql은 이제 구문 사탕을 얻습니다.
TheLegendaryCopyCoder

15

MySQL은 데이터베이스 손상 문제가있을 가능성이 높으며, 발생할 때 자동으로 수정하지는 않습니다. 버전 6.5 이후로 MSSQL을 사용해 왔으며 데이터베이스를 오프라인으로 만드는 데이터베이스 손상 문제를 기억하지 못합니다. 프로덕션 환경에서 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+corruption


2
myIsam은 정말 빠른 응답을 위해 만들어 졌으므로 외래 키 확인이 더 빠르지 않습니다. 더 심각한 일을한다면 InnoDB 엔진을 사용해보십시오. 나는 MS Access와 관련하여 정말 불쾌한 문제를 겪었고 그러한 무책임 때문에 용서할 수 없으므로 MS의 데이터베이스를 선호하지 않고 OS를 허용하고 오픈 소스 커뮤니티에 심각한 비즈니스를 제공합니다 ... 확실히 아무것도 오라클을 추월했기 때문에 MySQL은 ..
ante.sabo

8
충분하지만 Access 기반의 Microsoft 데이터베이스를 무시하는 것은 어리석은 일입니다. 액세스는 데스크톱 데이터베이스이며 SQL Server와 관련이 없습니다. SQL Server에서 StackOverflow가 실행되는 것을 알고 있습니까?
Jon Galloway

@ JonGalloway : 안녕하세요 저는 초보자입니다. 나는 MS SQL과 같은 것을 가지고 있다는 것을 엄격히 말하고 싶습니다. MS SQL Server가 존재한다고 생각합니다. 이것에 대해 명확하게 설명해 주시겠습니까? 이 단어는 일반적인 단어이므로 MS SQL로 사용했을 수 있으며 모든 단어에 의미가 있습니다. 그러나 나는 초보자이므로 개념을 얻기 위해 용어로 고정되어 있습니다. MS SQL 또는 MS SQL Server에 대해 말씀해주십시오.
깨지지 않는

1
사람들이 MSSQL, TSQL을 말할 때 일반적으로 제품 Microsoft SQL Server와 함께 제공된 SQL 또는 Transaction SQL (TSQL) 언어를 의미합니다. 찾기가 그렇게 어렵지 않아야합니다. en.wikipedia.org/wiki/Microsoft_SQL_Server
Faiz


7

솔직히 MSSQL 대신 MySQL을 사용해야하는 이유는 없습니다. 이전에는 비용이 많이 들었지만 SQL Server 2005 Express는 무료이며 한 달에 5.00 달러 미만으로 SQL 서버로 전체 호스팅을 제공하는 많은 웹 호스팅 회사가 있습니다.

MSSQL은 사용하기 쉽고 MySQL에는없는 많은 기능을 가지고 있습니다.


2
가격이 MSSQL 대신 MySQL을 선택하는 유일한 이유라고 생각합니다. 물론 저렴한 MSSQL 호스팅이 있지만 드물고 스토리지에 대한 제한이 매우 큽니다.
Craig

21
라이센싱이 MySQL과 함께해야 할 꽤 좋은 이유라고 말하고 싶습니다.
Dr. Mike

3
Group_concat과 REGEXP는 SQL Server를 통해 MySQL을 사용해야하는 충분한 이유 이상입니다 (두 라이센스가 전환 된 경우에도 해당)
Michele

1
내가 MySQL을 사용하는 또 다른 이유는 로컬 데이터베이스를 원하고 MS SQL Server를 사용하려면 더 많은 라이센스 비용을 포함하여 Windows 시스템을 실행해야한다는 것입니다. 특히 모든 것을 유지하려면 최신
Pedro Braz

2
MSSQL 대신 MySQL을 사용해야 할 이유가 없다고 말하는 편견이 있고 부정확하다고 생각하기 때문에 다운 보트되었습니다. SQL Server Express에는 MySQL이 사용하지 않는 심각한 제한 사항이 있으며 심각한 프로젝트에서 Express를 사용하지 않으므로 비용 문제가 여전히 유효합니다. 가장 큰 회사의 대부분은 MSSQL 대신 MySQL / MariaDB를 선택했습니다. 개인적으로 라이센스 및 비용 문제뿐만 아니라 경험상 MySQL이 훨씬 쉽게 작업 할 수 있기 때문입니다. MySQL은 작동하는 경향이 있지만 MSSQL과 때때로 싸우고 싶어서 원하는 작업을 수행합니다.
dallin

7

MySQL의 모든 것은 MSSQL보다 금속에 더 가까운 것으로 보입니다. 그리고 문서는 그것을 그렇게 취급합니다. 특히 최적화의 경우 다양한 상황에서 인덱스, 시스템 구성 및 옵티마이 저가 상호 작용하는 방식을 이해해야합니다.

"최적화 기"는 더 많은 파서입니다. MSSQL에서 쿼리 계획은 종종 놀랍습니다 (보통 좋지만 때로는 그렇지 않습니다). MySQL에서는 요청한대로 예상 한대로 수행합니다. 즉, 다양한 방법으로 자신을 깊이 이해해야합니다.

좋은 TRANSACTION 모델 (기본 MyISAM 엔진)을 기반으로 구축되지 않았습니다.

파일 시스템 설정이 문제입니다.

모든 데이터베이스 구성, 특히 다양한 캐시 크기가 문제입니다.

때로는 그것을 특별하고 영광스러운 isam으로 생각하는 것이 가장 좋습니다. 코드와 날짜는 여기에 많은 무게를 가지고 있지 않습니다. 그들은 당황하지 않고 그것을 말할 것입니다.


3
현대 MySQL은 기본적으로 Innodb로 설정되어 있습니다. 5.1 정도 후에 생각합니다. Innodb는 MyISAM을 사용한 테이블 레벨 잠금과 달리 트랜잭션, 외래 키 및 행 레벨 잠금을 지원합니다.
Joseph Hamilton


4

@abdu

내가 MSSQL보다 MySQL이 가지고있는 주요한 것은 시간대 지원입니다. 일광 절약을 존중하면서 시간 대간을 멋지게 변경하는 기능은 환상적입니다.

이것을 비교하십시오 :

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

이 답변에 관련된 왜곡에 .

'사용하기 쉬운'댓글에 관해서는 요점은 다르다는 것입니다. 하나를 안다면 다른 것을 배우는 데 오버 헤드가있을 것입니다.


또한, 그룹화, 자동 타임 스탬프 열, 훨씬 더 간단 페이징 ...에 대한 올바른 ANSI 지원
조엘 Coehoorn

1
MySQL의 시간대 지원이 크게 중단되었으므로 유용한 기능이라고 생각하지 않습니다. 대신 응용 프로그램에서 수행하십시오.
MarkR

시간대 지원에 문제가 없었습니다. 자세한 내용을 보거나 링크를 제공 할 수 있습니까?
Cebjyre

2
데이터베이스에서 시간대 지원이 필요한 이유는 무엇입니까? 어디에서나 UTC를 사용하고 OS의 현지 시간대를 사용하여 프론트 엔드 / gui에서 렌더링하십시오.
Tiberiu-Ionuț Stan

4

둘 다 DBMS의 제품 Sql 서버는 상용 응용 프로그램이지만 MySql은 오픈 소스 응용 프로그램입니다. 제품에는 비슷한 기능이 포함되어 있지만 SQL Server는 엔터프라이즈 솔루션에 사용해야하지만 mysql은 더 작은 구현에 적합 할 수 있습니다. 복구와 같은 기능이 필요한 경우, 복제, granalar 보안 및 중요, 당신은 SQL Server가 필요합니다

MySql은 디스크 공간을 덜 차지하고 SQL Server보다 메모리와 CPU를 적게 사용합니다.


3

SQL Server에서 MySQL에 이르는 데이터베이스의 "포트"에 대한 경험이 있습니까?

이것은 상당히 고통 스러워야합니다! MySQL 버전을 4.x에서 5.x로 전환했으며 이전에는 다양한 명령문이 더 이상 작동하지 않습니다. 쿼리 분석기는 "개선"되었으므로 이전에 성능을 위해 조정 된 명령문은 더 이상 예상대로 작동하지 않습니다.

500GB MySQL 데이터베이스 작업을 통해 얻은 교훈은 미묘한 주제이며 사소한 것이 아닙니다!


2

@Cebjyre. Enterprise Manager 또는 Management Studio가 MySQL에서 지금까지 본 것보다 낫다는 IDE. MySQL이없는 MSSQL에서 많은 일을 할 수 있기 때문에 '사용하기 쉽다'고 말합니다. MySQL에서는 단순히 쿼리 계획을 보거나 통계를 보면서 쿼리를 조정하는 방법을 모릅니다. MSSQL의 인덱스 튜닝 마법사는 누락되거나 잘못 배치 된 인덱스에 대한 대부분의 추측 작업을 수행합니다.

MySQL의 단점 중 하나는 데이터베이스의 최대 크기가 없다는 것입니다. 데이터베이스는 디스크를 채울 때까지 크기가 커집니다. 이 디스크가 다른 사용자와 데이터베이스를 공유하고 있고 데이터베이스가 커질 수 없기 때문에 갑자기 모든 쿼리가 실패한다고 상상해보십시오. 이 문제를 오래 전에 MySQL에보고했습니다. 아직 해결되지 않았다고 생각합니다.


2
반면에, 관리 스튜디오 콘솔이 실행 취소를 제대로 존중하지 않아 짜증을 냈습니다 (텍스트가 업데이트되었음을 ​​알지 못하기 때문에 질식하는 유효한 쿼리를 가질 수 있음). -확장 (mysql 쉘과 비교). 양쪽에 마이너스가 있습니다.
Cebjyre

1

MSSQL에서 MySQL 구문 POV에 이르기까지 MySQL을 사용하는 데 약간의 시간을 소비하면서 나는 내가 할 수있는 일이 제한적이라고 생각했습니다.

업데이트 중에 동일한 테이블을 참조하면서 테이블을 업데이트하는 데에는 제한이 있습니다.

또한 UPDATE FROM이 작동하지 않고 마지막으로 확인했을 때 Oracle MERGE INTO 구문도 지원하지 않습니다. 이것은 나를위한 쇼 스토퍼 였고 그 후 MySQL로 어디서나 얻을 것이라고 생각하지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.