MySQL은 사용자가 입력한 모든 SQL 문을 서버로 전송하여 실행합니다. 하지만 그 외에도 mysql 클라이언트가 자체적으로 해석하는 별도의 명령어 집합이 존재합니다. 이 글에서는 MySQL 클라이언트에서 활용할 수 있는 주요 명령어들을 하나씩 살펴보겠습니다.
명령어 목록 확인하기
mysql 프롬프트에서 아래 명령어를 입력하면 사용할 수 있는 전체 명령어 목록을 확인할 수 있습니다.
mysql> help
주요 MySQL 클라이언트 명령어
help 명령을 실행하면 다음과 같은 명령어 목록이 출력됩니다. 참고로 모든 텍스트 명령어는 반드시 줄의 맨 앞에 위치해야 하며 세미콜론(;)으로 끝나야 합니다.
| 명령어 | 단축형 | 설명 |
|---|---|---|
| ? | \? | 'help'의 동의어 |
| clear | \c | 현재 입력 중인 문장을 지움 |
| connect | \r | 서버에 재연결(db와 host를 선택적 인수로 지정 가능) |
| delimiter | \d | 문장 구분자(delimiter) 설정 |
| edit | \e | $EDITOR 환경 변수에 지정된 편집기로 명령 편집 |
| ego | \G | 명령을 서버로 전송하고 결과를 세로 방향으로 표시 |
| exit | \q | mysql 종료(quit과 동일) |
| go | \g | 명령을 mysql 서버로 전송 |
| help | \h | 도움말 표시 |
| nopager | \n | pager를 비활성화하고 stdout으로 출력 |
| notee | \t | outfile에 기록하지 않음 |
| pager | \P | PAGER를 설정하고 쿼리 결과를 PAGER를 통해 출력 |
| \p | 현재 명령 출력 | |
| prompt | \R | mysql 프롬프트 변경 |
| quit | \q | mysql 종료 |
| rehash | \# | 자동 완성(completion) 해시 재구축 |
| source | \. | SQL 스크립트 파일 실행(파일 이름을 인수로 받음) |
| status | \s | 서버 상태 정보 조회 |
| system | \! | 시스템 셸(shell) 명령 실행 |
| tee | \T | outfile을 설정하고 모든 내용을 해당 파일에 추가 기록 |
| use | \u | 다른 데이터베이스로 전환(데이터베이스 이름을 인수로 받음) |
| charset | \C | 다른 문자셋으로 전환(멀티바이트 문자셋의 binlog 처리 시 필요할 수 있음) |
| warnings | \W | 모든 문장 실행 후 경고(warning) 표시 |
참고로 mysql을 --binary-mode 옵션과 함께 실행하면, 입력이 파이프(pipe)로 전달되거나 source 명령으로 로드되는 비대화형(non-interactive) 모드에서 charset과 delimiter를 제외한 나머지 모든 mysql 명령이 비활성화됩니다.
롱 폼(Long Form) 명령어
각 명령어는 롱 폼과 숏 폼, 두 가지 형태로 제공됩니다. 롱 폼은 대소문자를 구분하지 않으며, 명령 뒤에 선택적으로 세미콜론을 붙일 수 있습니다. 예를 들어 quit;과 QUIT;은 동일하게 동작합니다.
숏 폼(Short Form) 명령어
반면 숏 폼은 대소문자를 구분하며, 명령 뒤에 어떠한 문자도 덧붙여서는 안 됩니다. 또한 여러 줄로 작성되는 /* ... */ 주석 내부에서는 숏 폼 명령어를 사용할 수 없습니다. 다만 한 줄 형태의 /*! ... */ 버전 주석이나 /*+ ... */ 옵티마이저 힌트 주석 안에서는 숏 폼 명령어가 정상적으로 동작하며, 이러한 주석은 객체 정의(object definitions)에 함께 저장됩니다.
실무에서 유용한 활용 팁
컬럼이 많은 넓은 테이블의 조회 결과를 보기 좋게 확인하려면 세미콜론 대신 \G를 사용해 결과를 세로로 출력할 수 있습니다.
mysql> SELECT * FROM employees\G
또한 미리 작성해 둔 SQL 스크립트 파일을 한 번에 실행하려면 source 명령어를 활용하면 됩니다.
mysql> source /path/to/script.sql