이 글은 주로 mysql 중국어 데이터 관련 이슈를 소개합니다. 도움이 필요한 친구들에게 도움이 되었으면 좋겠습니다!
추천 참고 튜토리얼: "mysql 튜토리얼"
중국어 데이터 문제의 본질은 문자 집합의 문제입니다.
컴퓨터는 바이너리 데이터만 인식하고 인간은 문자(기호)를 인식하는 경향이 더 높기 때문에 바이너리와 문자 간의 대응이 필요하며, 이는 문자 집합입니다.
MySQL 데이터베이스의 클라이언트를 통해 서버에 중국어 데이터를 삽입할 때 실패할 수 있습니다. 이유는 클라이언트와 서버의 문자 집합 설정이 다르기 때문일 수 있습니다. 예:
문자 집합 클라이언트의
gbk
이면 한자 하나가 2바이트에 해당합니다.gbk
,则一个中文字符,对应两个字节;服务器的字符集为
utf8
,则一个中文字符,对应三个字节。
这样显然会在编码转换的过程中出现问题,从而导致插入中文数据失败。
由于所有的数据库服务器表现的一些特性都是通过服务器端的变量来保持的,因此系统会先读取自己的变量,看看具体的表现形式。这样的话,咱们就可以通过以下语句查看服务器到底识别哪些字符集:
-- 查看服务器识别的全部字符集show character set;
通过以上查询,咱们会发现:服务器是万能的,其支持所有字符集。
既然服务器支持这么多字符集,总会有一种是服务器默认的和客户端打交道的字符集。因此,咱们可以通过以下语句查看服务器默认的对外处理的字符集:
-- 查看服务器默认的对外处理的字符集show variables like &#MySQL 튜토리얼의 중국어 데이터 문제9;character_set%&#MySQL 튜토리얼의 중국어 데이터 문제9;;
标注MySQL 튜토리얼의 중국어 데이터 문제:服务器默认的客户端传来的数据字符集为
utf8
;标注2:连接层字符集为
utf8
;标注MySQL 튜토리얼의 중국어 데이터 문제:当前数据库的字符集为
utf8
;标注MySQL 튜토리얼의 중국어 데이터 문제:服务器默认的对外处理的字符集
utf8
.
通过以上查询,咱们会发现:服务器默认的对外处理的字符集是utf8
.
那么反过来,咱们在通过客户端的属性查看客户端支持的字符集:
显然,咱们已经找到了问题的根源,确实是:客户端支持的字符集为gbk
,而服务器默认的对外处理的字符集为utf8
,因此产生矛盾。
既然问题已经找到了,那么解决方案就是:修改服务器默认接收的字符集为gbk
.
-- 修改服务器默认接收的字符集为 GBK(不区分大小写)set character_set_client = gbk;
这样的话,咱们再插入中文数据的时候,就会插入成功啦!But,在咱们查看数据的时候,又发现了一个问题,就是之前咱们插入的中文数据显示乱码啦!不过这也正常,因为查询的时候,数据的来源是服务器(utf8
),解析数据的是客户端,而客户端仅识别gbk
格式的数据,显示乱码也就在意料之中啦!
因此,解决方案就是:修改服务器给客户端的数据字符集为gbk
.
-- 修改服务器给客户端的数据字符集为 GBK(不区分大小写)set character_set_results = gbk;
如上图所示,向服务器插入中文数据的问题已经解决啦!
此外,咱们之前使用的 SQL 语句:
-- 修改的只是会话级别,即当前客户端当次连接有效,关闭后失效set 变量 = 值;
这样的话,每当咱们重启客户端的时候,都要依次重新进行设置,比较麻烦,因此咱们可以使用快捷的设置方式,即:
set names 字符集;
例如,
/** * 恒等于 set character_set_client = gbk; * 恒等于 set character_set_results = gbk; * 恒等于 set character_set_connection = gbk; */set names gbk;
表示上述一条语句,将同时改变三个变量的值。其中,connection
为连接层,是字符集转换的中间者,如果其和client
和results
서버의 문자 세트가 utf8
이면 한자 하나가 해당합니다. MySQL 튜토리얼의 중국어 데이터 문제바이트로.

utf8
입니다. 🎜🎜🎜참고 2: 문자 연결 레이어 세트는 🎜🎜🎜참고 MySQL 튜토리얼의 중국어 데이터 문제: 현재 데이터베이스의 문자 세트는 🎜🎜🎜참고 MySQL 튜토리얼의 중국어 데이터 문제: 서버 외부 처리를 위한 기본 문자 집합은 utf8
입니다.🎜🎜위 쿼리를 통해 다음을 찾을 수 있습니다. 🎜서버에 의한 외부 처리를 위한 기본 문자 집합 is utf8 code>🎜.🎜🎜그런 다음 클라이언트 속성을 통해 클라이언트가 지원하는 문자 집합을 확인합니다.🎜🎜<img src="https://img.php.cn/upload%20/article/000/000/020%20/6f99220cMySQL%20%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC%EC%9D%98%20%EC%A4%91%EA%B5%AD%EC%96%B4%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%AC%B8%EC%A0%9CMySQL%20%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC%EC%9D%98%20%EC%A4%91%EA%B5%AD%EC%96%B4%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%AC%B8%EC%A0%9Cb0c0b09ee2MySQL%20%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC%EC%9D%98%20%EC%A4%91%EA%B5%AD%EC%96%B4%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%AC%B8%EC%A0%9C8d8820ff026-2.png?x-oss-process=image/resize,p_40" alt="MySQL 튜토리얼의 중국어 데이터 문제" title="">🎜🎜분명히 우리는 문제의 원인을 찾았습니다. 클라이언트는 <code>gbk
이고, 외부 처리를 위한 서버의 기본 문자 세트는 utf8
이므로 모순이 있습니다. 🎜🎜🎜문제가 발견되었으므로 해결책은 다음과 같습니다. 🎜서버에서 수신한 기본 문자 집합을 gbk
🎜로 수정합니다.🎜rrreee🎜이 경우 중국어 데이터를 삽입하면 삽입됩니다 성공! 그런데 데이터를 확인해 보니 또 다른 문제점이 발견되었습니다. 바로, 이전에 삽입했던 중국어 데이터가 왜곡되어 있다는 점이었습니다! 하지만 이는 정상적인 현상입니다. 쿼리할 때 데이터의 소스가 서버(utf8
)이고 클라이언트가 데이터를 구문 분석하며 클라이언트는 gbk
의 데이터만 인식하기 때문입니다. > 형식이 왜곡되어 표시될 것으로 예상됩니다! 🎜🎜그래서 해결책은 다음과 같습니다. 🎜서버에서 클라이언트에 제공하는 데이터 문자 집합을 gbk
🎜.🎜rrreee🎜
connection
은 연결 레이어이며 client
및 results
의 문자 집합과 일치하는 경우 문자 집합 변환을 위한 중개자입니다. , 더 효율적일 것입니다. 높거나 일관성이 없는지는 중요하지 않습니다. 🎜🎜 🎜위 내용은 MySQL 튜토리얼의 중국어 데이터 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

InnoDB는 Redologs 및 Undologs를 사용하여 데이터 일관성과 신뢰성을 보장합니다. 1. Redologs는 사고 복구 및 거래 지속성을 보장하기 위해 데이터 페이지 수정을 기록합니다. 2. 결점은 원래 데이터 값을 기록하고 트랜잭션 롤백 및 MVCC를 지원합니다.

설명 명령에 대한 주요 메트릭에는 유형, 키, 행 및 추가가 포함됩니다. 1) 유형은 쿼리의 액세스 유형을 반영합니다. 값이 높을수록 Const와 같은 효율이 높아집니다. 2) 키는 사용 된 인덱스를 표시하고 NULL은 인덱스가 없음을 나타냅니다. 3) 행은 스캔 한 행의 수를 추정하여 쿼리 성능에 영향을 미칩니다. 4) Extra는 최적화해야한다는 Filesort 프롬프트 사용과 같은 추가 정보를 제공합니다.

Temporary를 사용하면 MySQL 쿼리에 임시 테이블을 생성해야 할 필요성이 있으며, 이는 별개의, 그룹 비 또는 비 인덱스 열을 사용하여 순서대로 발견됩니다. 인덱스 발생을 피하고 쿼리를 다시 작성하고 쿼리 성능을 향상시킬 수 있습니다. 구체적으로, 설명 출력에 사용되는 경우, MySQL은 쿼리를 처리하기 위해 임시 테이블을 만들어야 함을 의미합니다. 이것은 일반적으로 다음과 같은 경우에 발생합니다. 1) 별개 또는 그룹을 사용할 때 중복 제거 또는 그룹화; 2) OrderBy가 비 인덱스 열이 포함되어있을 때 정렬하십시오. 3) 복잡한 하위 쿼리 또는 조인 작업을 사용하십시오. 최적화 방법은 다음과 같습니다. 1) Orderby 및 GroupB

MySQL/InnoDB는 4 개의 트랜잭션 격리 수준을 지원합니다. Readuncommitted, ReadCommitted, ReturableRead 및 Serializable. 1. READUCMITTED는 커밋되지 않은 데이터를 읽을 수 있으므로 더러운 판독 값을 유발할 수 있습니다. 2. ReadCommitted는 더러운 읽기를 피하지만 반복 할 수없는 독서가 발생할 수 있습니다. 3. RepeatableRead는 더러운 읽기와 반복 할 수없는 독서를 피하는 기본 레벨이지만 팬텀 독서가 발생할 수 있습니다. 4. 직렬화 가능한 것은 모든 동시성 문제를 피하지만 동시성을 줄입니다. 적절한 격리 수준을 선택하려면 균형 잡힌 데이터 일관성 및 성능 요구 사항이 필요합니다.

MySQL은 웹 응용 프로그램 및 컨텐츠 관리 시스템에 적합하며 오픈 소스, 고성능 및 사용 편의성에 인기가 있습니다. 1) PostgreSQL과 비교하여 MySQL은 간단한 쿼리 및 높은 동시 읽기 작업에서 더 잘 수행합니다. 2) Oracle과 비교할 때 MySQL은 오픈 소스와 저렴한 비용으로 인해 중소 기업에서 더 인기가 있습니다. 3) Microsoft SQL Server와 비교하여 MySQL은 크로스 플랫폼 응용 프로그램에 더 적합합니다. 4) MongoDB와 달리 MySQL은 구조화 된 데이터 및 트랜잭션 처리에 더 적합합니다.

MySQL Index Cardinality는 쿼리 성능에 중대한 영향을 미칩니다. 1. 높은 카디널리티 인덱스는 데이터 범위를보다 효과적으로 좁히고 쿼리 효율성을 향상시킬 수 있습니다. 2. 낮은 카디널리티 인덱스는 전체 테이블 스캔으로 이어질 수 있으며 쿼리 성능을 줄일 수 있습니다. 3. 관절 지수에서는 쿼리를 최적화하기 위해 높은 카디널리티 시퀀스를 앞에 놓아야합니다.

MySQL 학습 경로에는 기본 지식, 핵심 개념, 사용 예제 및 최적화 기술이 포함됩니다. 1) 테이블, 행, 열 및 SQL 쿼리와 같은 기본 개념을 이해합니다. 2) MySQL의 정의, 작업 원칙 및 장점을 배우십시오. 3) 인덱스 및 저장 절차와 같은 기본 CRUD 작업 및 고급 사용량을 마스터합니다. 4) 인덱스의 합리적 사용 및 최적화 쿼리와 같은 일반적인 오류 디버깅 및 성능 최적화 제안에 익숙합니다. 이 단계를 통해 MySQL의 사용 및 최적화를 완전히 파악할 수 있습니다.

MySQL의 실제 응용 프로그램에는 기본 데이터베이스 설계 및 복잡한 쿼리 최적화가 포함됩니다. 1) 기본 사용 : 사용자 정보 삽입, 쿼리, 업데이트 및 삭제와 같은 사용자 데이터를 저장하고 관리하는 데 사용됩니다. 2) 고급 사용 : 전자 상거래 플랫폼의 주문 및 재고 관리와 같은 복잡한 비즈니스 로직을 처리합니다. 3) 성능 최적화 : 인덱스, 파티션 테이블 및 쿼리 캐시를 사용하여 합리적으로 성능을 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구
