# MySQL Connectors VS MySQL Shell(Scripting) VS MySQL Workbench

## MySQL Shell:

### 목적

* MySQL Shell은 MySQL을 위한 고급 클라이언트 및 코드 편집기다.
* 데이터베이스 관리, 개발, 데이터 조작을 위해 사용한다.
* SQL,Python,JavaScript 스크립팅을 지원한다.

### 특징

#### 스크립팅 (Scripting) 기능

* SQL,Python,JavaScript로 스크립팅을 할 수 있어 데이터베이스 작업을 자동화하는데 유용한다.
* 정의
  * 스크립팅은 데이터베이스에서 복잡한 작업을 자동화하기 위해 스크립트(script) 또는 프로그램 코드를 작성하고 실행하는 과정이다.
* **예시**:
  * 데이터베이스 관리 작업 자동화: 백업, 복구, 데이터 마이그레이션 등.
  * 복잡한 데이터 처리: 대량의 데이터를 처리하거나 변환하는 작업.
  * 사용자 정의 함수 및 프로시저 작성: 특정 작업을 수행하는 코드 블록을 만든다.

#### 데어터베이스 관리

* 백업, 복구, 설정 등의 데이터베이스 관리 작업을 용이하게 한다.

#### SQL 실행

* SQL 쿼리 및 문장을 실행 할 수 있다.

#### MySQL Document Store 지원

* JSON 문서와 컬렉션을 CRUD 작업을 통해 다룰 수 있다.

#### MySQL InnoDB Cluster와의 통합

* InnoDB 클러스터를 설정하고 관리하기 위한 도구를 제공한다.

## MySQL Connector:

### 목적

* MySQL Connector는 프로그래밍 언어가 MySQL 데이터베이스 서버에 연결할 수 있도록 하는 소프트웨어 라이브러리다.

### 특징

#### 언어별 API

* Python,Java,.NET 등의 프로그래밍 언어별 API를 제공한다

#### 데이터베이스 연결

* 애플리케이션이 다양한 프로그래밍 언어로 작성된 경우 MySQL 데이터베이스에 연결할 수 있다.

#### 데어터베이스 작업 지원

* 애플리케이션 내에서 SQL 쿼리를 실행하고 CRUD 작업을 수행할 수 있다

#### 호환성

* 모든 버번의 MySQL과 호환되며 새로운 MySQL 기능을 자주 지원한다.

## MySQL Workbench

### 목적

#### 데이터베이스 설계와 모델링

* 데이터베이스 구조를 시각적으로 설계하고, 엔터티 관계 다이어그림(ERR)을 통해 데이터베이스 모델을 생성하고 수정한다.

#### SQL 개발 및 쿼리 실행

* SQL 쿼리를 작성,실행,테스트 및 최적화하는 데 사용된다.

#### 데이터베이스 관리와 유지보수

* 서버 관리,사용자 및 권한 설정,백업 및 복구 작업 등을 수행한다

#### 성능 모니터링과 최적화

* 데이터베이스의 성능을 모니터링하고, 문제를 진단하면 성능을 최적화 하는데 도움을 준다.

### 특징

#### 시각적 데이터베이스 설계 도구

* 직관적인 그래픽 인터페이스르통해 데이터베이스 구조를 쉽게 설계하고 이해할 수 있다.

#### 통합 SQL 편집기

* SQL 쿼리를 작성하고 실행하는 강력한 편집기를 제공하며, 쿼리 결과를 즉시 확인할 수 있다.

#### 서버 관리 기능

* 사용자 인터페이스를 통해 MySQL 서버를 관리하고, 사용자 계정을 관리하며, 서버 설정을 조정할 수 있다.

#### 백업 및 복구 도구

* 데이터베이스의 백업과 복구를 관리하고 실행할 수 있는 도구를 제공한다.

#### 성능 대시보드와 프로파일링 도구

* 서버의 성능을 모니터링하고, 쿼리 성능을 분석하며, 문제를 진단하는데 유용한 도구들을 포함한다.

#### 크로스 플랫폼 지원

* 다양한 운영 체제에서 사용할 수 있어, 원도우, 맥OS,리눅스 사용자 모두에게 적합하다.

## 어떤것 을 사용할까요?

* 애플리케이션 개발용 -> MySQL Connector
* 데이터베이스 관리 및 스크립팅용 -> MySQL Shell
* 데이터베이스 설계와 관리, SQL 개발을 시각적으로 수행하고자 할 때 -> MySQL Workbench
