4.5.1.6 mysql Tips
이 섹션에서는 mysql을 더욱 효과적으로 사용하는 기법을 소개합니다.
4.5.1.6.1 입력 행의 편집
mysql은 입력 행의 편집을 지원하고 현재의 입력 행을 수정하거나 이전 입력 행을 호출 할 수 있습니다. 예를 들어, "왼쪽 화살표"키와 "오른쪽 화살표"키를 누르면 현재 입력 행을 가로 방향으로 이동하고 "위쪽 화살표"키와 "아래 화살표"키에 이전에 입력 한 행을 위아래로 이동할 수 있습니다. "백 스페이스"에서 커서 앞의 문자를 삭제하고 새로운 문자를 입력하면 커서 위치에 삽입됩니다. 행을 입력하려면 "Enter"를 누릅니다.
Windows에서는 편집 키 시퀀스는 콘솔 창에서 명령 편집에 대해 지원되는 것과 동일합니다. Unix에서는 키 순서는 mysql의 빌드에 사용 된 입력 라이브러리 (예를 들어, libedit
또는 readline
라이브러리)에 의존합니다.
libedit
라이브러리 및 readline
라이브러리의 문서는 온라인에서 구할 수 있습니다. 주어진 입력 라이브러리에 허용되는 키 시퀀스 집합을 변경하려면 라이브러리 시작 파일에서 키 바인딩을 정의합니다. 이것은 홈 디렉토리에있는 파일에서 .editrc
는 libedit
용 .inputrc
는 readline
용입니다.
예를 들어 libedit
에서는 Control-W는 현재 커서 위치 앞에있는 것을 모두 제거하고 Control + U 행 전체를 삭제합니다. readline
는 Control-W는 커서 앞의 단어를 삭제하고 Control + U는 현재 커서 위치 앞에있는 것을 모두 삭제합니다. mysql이 libedit
를 사용하여 빌드 된 경우 이러한 두 키에 대해 readline
동작을 선호하는 사용자는 .editrc
파일에 다음 줄을 넣을 수 있습니다 (필요에 따라 파일을 만듭니다) .
bind "^ W"ed-delete-prev-word bind "^ U"vi-kill-line-prev
현재 키 바인딩 세트를 표시하려면 일시적으로 bind
만 행을 .editrc
끝에 놓습니다. mysql은 시작하면 바인딩을 표시합니다.
4.5.1.6.2 Windows에서 Unicode 지원
Windows 콘솔에서 읽기 및 쓰기에 UTF-16LE에 기반 API를 제공합니다. MySQL 5.6.2에서는 Windows의 mysql 클라이언트는 이러한 API를 사용할 수 있습니다. 5.6.3에서는 Windows Installer는 MySQL 메뉴에 MySQL command line client - Unicode
라는 항목을 만듭니다. 이 항목은 Unicode를 사용하여 MySQL 서버에 콘솔을 통해 통신하도록 설정된 프로퍼티에서 mysql 클라이언트를 호출합니다.
이 지원을 수동으로 이용하기 위해서는 호환 Unicode 글꼴을 사용하는 콘솔에서 mysql을 실행하여 디폴트 문자 집합을 서버와의 통신에서 지원하는 Unicode 문자 세트로 설정합니다.
콘솔 창을 엽니 다.
콘솔 창 등록 정보로 이동하여 '글꼴'탭을 선택하고 Lucida Console 또는 기타 호환 Unicode 글꼴을 선택합니다. 콘솔 창은 기본적으로 Unicode 잘못된 DOS 래스터 글꼴을 사용하기 때문에 이것이 필요합니다.
mysql.exe를
--default-character-set=utf8
(또는utf8mb4
) 옵션으로 실행합니다.utf16le
연결 문자 집합을 지원하지 않기 때문에이 옵션이 필요합니다.
이러한 변경으로 인해 mysql은 Windows API를 사용하여 UTF-16LE를 사용하여 콘솔과 통신하고 서버는 UTF-8을 사용하여 통신합니다. (위의 메뉴 항목 글꼴 및 문자 세트를 지금 설명한대로 설정합니다.)
mysql을 시작할 때마다이 단계를 수행하지 않아도 좋다 그래야, mysql.exe 전화 바로 가기를 만들 수 있습니다. 이 바로 가기는 콘솔 글꼴을 Lucida Console 또는 기타 호환 Unicode 글꼴로 설정하고 --default-character-set=utf8
(또는 utf8mb4
) 옵션을 mysql.exe에 전달하도록하십시오.
또는 콘솔 글꼴 설정만을 할 바로 가기를 만들고 문자 세트는 my.ini
파일의 [mysql]
그룹으로 설정합니다.
[mysql] default-character-set = utf8
4.5.1.6.3 쿼리 결과를 수직으로 표시
쿼리 결과에 세로보기의 경우 일반적 가로 방향의 표 형식보다 훨씬 쉽게 읽을 수 있습니다. 세미콜론 대신에 \ G에서 쿼리를 종료하여 쿼리를 세로로 볼 수 있습니다. 예를 들어, 종종 줄 바꿈을 포함한 긴 텍스트 값은 수직 출력이 훨씬 쉽게 읽을 수 있습니다.
mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1. row ******************** *******
msg_nro : 3068
date : 2000-03-01 23:29:50
time_zone : +0200
mail_from : Monty
reply : monty@no.spam.com
mail_to : "Thimble Smith"<tim@no.spam.com>
sbj : UTF-8
txt : >>>>> "Thimble"== Thimble Smith writes :
Thimble> Hi. I think this is a good idea. Is anyone familiar
Thimble> with UTF-8 or Unicode? Otherwise, I 'll put this on my
Thimble> TODO list and see what happens.
Yes, please do that.
Regards,
Monty
file : inbox-jani-1
hash : 190402944
1 row in set (0.09 sec)
4.5.1.6.4 --safe-updates 옵션 사용
초보자를위한 사용하기 쉬운 시작 옵션은 --safe-updates
(또는 동일한 효과가있는 --i-am-a-dummy
)입니다. 이것은 DELETE FROM
명령문을 발행했으나 tbl_name
WHERE
절을 잊은 경우에 유용합니다. 일반적으로 이러한 문은 테이블에서 모든 행을 삭제합니다. --safe-updates
를 사용하면 행을 특정 키 값을 지정하지 않으면 행을 지울 수 없습니다. 이로 인해 사고를 예방합니다.
--safe-updates
옵션을 사용하면 mysql은 MySQL 서버에 접속했을 때 다음 문을 실행합니다.
SET sql_safe_updates = 1, sql_select_limit = 1000, max_join_size = 1000000;
섹션 5.1 "서버 시스템 변수" 를 참조하십시오.
SET
문에는 다음의 효과가 있습니다.
UPDATE
문 또는DELETE
문은WHERE
절에 키 제약 조건을 지정하거나LIMIT
절을 제공하거나 (또는 둘 다)하지 않는 한 실행을 허용하지 않습니다. 예 :UPDATE
tbl_name
SETnot_key_column
=val
WHEREkey_column
=val
; UPDATEtbl_name
SETnot_key_column
=val
LIMIT 1;서버는 문에
LIMIT
절이 포함되어 있지 않은 한, 모든 대규모SELECT
의 결과를 1000 행으로 제한합니다.서버는 1,000,000을 넘는 행의 조합을 확인하여야 말라 가능성이있는 여러 테이블의
SELECT
문을 중지합니다.
1,000 및 1,000,000 이외의 제한을 지정하려면 --select_limit
옵션 및 --max_join_size
옵션을 사용하여 기본값을 재정의 할 수 있습니다.
shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
4.5.1.6.5 mysql 자동 재 연결을 해제하려면
문 보내는 동안 서버와의 연결이 끊어진 경우, mysql 클라이언트는 즉시 자동으로 서버에 한 번 다시 연결하고 문을 다시 보내려고합니다. 그러나 mysql이 다시 연결에 성공해도 첫 번째 연결이 종료 이전 세션 오브젝트와 설정이 손실됩니다. 이 중에는 임시 테이블 자동 커밋 모드 및 사용자 정의 및 세션 변수가 포함됩니다. 또한 현재 트랜잭션이 롤백합니다. 이 동작은 위험 할 수 있습니다. 예를 들어, 다음 예제에서는 서버가 사용자의 동의없이 첫 번째 문 및 두 번째 문장 사이에 종료하고 다시 시작시킬 수 있습니다.
mysql>SET @a=1;
Query OK, 0 rows affected (0.05 sec) mysql>INSERT INTO t VALUES(@a);
ERROR 2006 : MySQL server has gone away No connection. Trying to reconnect ... Connection id : 1 Current database : test Query OK, 1 row affected (1.30 sec) mysql>SELECT * FROM t;
+------+ | a | +------+ | NULL | +------+ 1 row in set (0.05 sec)
@a
사용자 변수는 연결과 함께 손실 재접속 후는 미정 도리입니다. 연결이 끊긴 경우에 mysql이 오류로 종료하는 것이 바람직한 경우, mysql 클라이언트를 --skip-reconnect
옵션으로 시작할 수 있습니다.
자동 재 연결 및 재 연결 상태 정보에 미치는 영향 대한 자세한 내용은 섹션 23.8.16 "자동 재 연결 동작 제어" 를 참조하십시오.