[MySQL의] 캐릭터 데이터 유형은 관련 --2019-08-17 3시 4분 43초

원본 : http://blog.gqylpy.com/gqy/248

"


디렉토리

문자 유형

문자 유형

VARCHAR 타입

측정

개요

열거 된 유형 및 수집 유형


문자 유형

공식 웹 사이트 : https://dev.mysql.com/doc/refman/5.7/en/char.html
참고 : 매개 변수 길이 문자 고정 괄호 안에 숯불과 VARCHAR을 말한다

문자 유형

고정 길이, 간단하고 원유, 공간의 낭비, 액세스 속도 빠른

  • 문자 길이 : 0-255 (중국어 문자는 UTF8 인코딩은 3 바이트)
    (10)의 특정 길이, 로비까지 10 개 문자가 공백 10 채워진다 <저장 부여되는> 10자를 저장 : 예를 들어, 문자 매장.
  • 검색 : 검색 결과가 표시되면 자동으로 후행 공백을 삭제 열린 pad_char_to_full_length의 SQL 모드를 제외
    합니다 (SQL 모드 설정 : 다음 SET sql_mode = 'pad_char_to_full_length을';  쿼리의 SQL 기본 모드 : 은 SELECT @@ sql_mode; )

VARCHAR 타입

이상되고, 정확, 공간 절약, 느린 액세스 속도

  • 문자 길이 : 0 ~ 65535 (다른 종류보다가, 경우 21,845 프롬프트 MySQL의 행 최대 한계는 65535 바이트이며, 문자 인코딩 UTF8 : 공식 문서 )
  • 저장 : 사실 콘텐츠 형식 VARCHAR 공백이 후행 공백으로 채워되지 않은 데이터를 저장하는 쿼리에 필터링되지 않습니다.
    스트레스 : VARCHAR 타입은 실제 데이터를 표현하는 데 사용되는 접두사 인, 실제 데이터 1-2bytes 전에 접두사를 추가합니다 바이트의 바이트 수 . (65535 최대 길이, MySQL이 로우 제한 맞는 최대 바이트가 사용하기에 충분할 수를 나타낸다 1-2bytes)
    [만일 실제 데이터 <255bytes, 프리픽스 1bytes의 필요성 (1bytes = 8 비트 2 ** 8 나타내는 최대 값 255), 실제 데이터가> 255bytes은 프리픽스의 2 바이트가 요구되는 경우 (2 바이트 = 2 ** 16 65535 16 비트에 의해 표현되는 최대 수)]
  • 검색 : 후행 공백이 공간은 검색시 정상의 내용을 표시합니다 포함하여 유지됩니다.

CHAR 및 VARCHAR의 공식 설명은 :
! [여기에 사진 설명을 삽입 (http://blog.gqylpy.com/media/ai/2019-03/19ee0315-2e73-4b2a-b94a-598f26d0a8d1.png)

측정

시험 전에 먼저 두 가지 기능을 찾을 수 있습니다 :

  1. 길이 ()     # 바이트의 수를보기
  2. CHAR_LENGTH ()     # 바이트의 수를보기

   
   
  1. # 创建测试表,分别指明字段x为char类型,字段y为varchar类型
  2. mysql> create table test(x char( 5), y varchar( 5));
  3. Query OK, 0 rows affected (0.11 sec)
  4. # 插入数据,后面加空格
  5. mysql> insert into test values( "数据库 ", "数据库 ");
  6. Query OK, 1 row affected (0.00 sec)
  7. # 在检索时,char类型会过滤掉后面的空格,而varchar正常显示
  8. mysql> select x, char_length(x), y, char_length(y) from test;
  9. + -----------+----------------+------------+----------------+
  10. | x | char_length(x) | y | char_length(y) |
  11. + -----------+----------------+------------+----------------+
  12. | 数据库 | 3 | 数据库 | 4 |
  13. + -----------+----------------+------------+----------------+
  14. 1 row in set ( 0.00 sec)
  15. # 设置 SQL模式,使 char类型 原形毕露
  16. mysql> set sql_mode = 'pad_char_to_full_length';
  17. Query OK, 0 rows affected, 1 warning (0.00 sec)
  18. # 查当前SQL模式
  19. mysql> select @@sql_mode;
  20. + -------------------------+
  21. | @@sql_mode |
  22. + -------------------------+
  23. | PAD_CHAR_TO_FULL_LENGTH |
  24. + -------------------------+
  25. 1 row in set ( 0.00 sec)
  26. # 再次检索,发现 char类型的数据是占满规定的长度的(在后面填充空格)
  27. mysql> select x, char_length(x), y, char_length(y) from test;
  28. + -------------+----------------+------------+----------------+
  29. | x | char_length(x) | y | char_length(y) |
  30. + -------------+----------------+------------+----------------+
  31. | 数据库 | 5 | 数据库 | 4 |
  32. + -------------+----------------+------------+----------------+
  33. 1 row in set ( 0.00 sec)
  34. # 查看字节数
  35. # char类型: 3个中文字符 + 两个空格 = 11 bytes
  36. # varchar类型: 3个中文字符 + 1个空格 = 10 bytes
  37. mysql> select x, length(x), y, length(y) from test;
  38. + -------------+-----------+------------+-----------+
  39. | x | length(x) | y | length(y) |
  40. + -------------+-----------+------------+-----------+
  41. | 数据库 | 11 | 数据库 | 10 |
  42. + -------------+-----------+------------+-----------+
  43. 1 row in set ( 0.01 sec)

개요

일반 직렬 스트링 : CHAR VARCHAR VARCHAR 유연 사용할 수 있지만, 전체 시스템의 성능의 관점에서, 비록 문자 데이터 처리 속도를 입력하고, 때로는 50 % VARCHAR 처리 속도를 초과 할 수있다. 따라서, 데이터베이스 사용자의 설계에 최적의 균형을 달성하기 위해, 모든 요소를 고려해야한다

다른 직렬 스트링 (효율성 : 문자> VARCHAR> 텍스트) :

  1. TEXT 시리즈 TINYTEXT의 텍스트 MEDIUMTEXT LONGTEXT
  2. BLOB 系列 TINYBLOB BLOB MEDIUMBLOB의 LONGBLOB
  3. BINARY 系列 BINARY VARBINARY

TEXT 시리즈 : 큰 가변 길이 스트링을 저장하기위한 텍스트 데이터 타입은 최대 65,535 (2 ** 16--1)는 문자가 될
텍스트 컬럼 최대 : MEDIUMTEXT - 문자 16,777,215 (12 ** 24)의 길이 .
LONGTEXT 다음 텍스트 열 또는 4,294,967,295 최대 4GB 길이. (2의 32 - 1)의 캐릭터.


열거 된 유형 및 수집 유형

즉, 그러한 라디오 버튼 등의 선택, 미리 정해진 범위 내의 필드의 값이 체크 박스
ENUM 열거 : 즉 라디오, 소정의 범위 내에서만 선택된 값 (예 : 보이 성별 성별 / 여자)
SET를 설정 : 즉 객관식, 소정의 범위 내에서 선택 될 수 있거나, 두 개 이상의 값 ( 예를 들면 : 취미, 2 취미, 관심사 3)


   
   
  1. mysql> create table information(
  2. -> name char( 3),
  3. -> sex enum( "男", "女"),
  4. -> hobby set( "抽烟", "喝酒", "烫头")
  5. -> );
  6. Query OK, 0 rows affected (0.05 sec)
  7. mysql> insert into information values
  8. -> ( "张三", "男", "抽烟,喝酒"),
  9. -> ( "李四", "女", "烫头");
  10. Query OK, 2 rows affected (0.00 sec)
  11. Records: 2 Duplicates: 0 Warnings: 0
  12. mysql> select * from information;
  13. + ---------+------+---------------+
  14. | name | sex | hobby |
  15. + ---------+------+---------------+
  16. | 张三 | 男 | 抽烟,喝酒 |
  17. | 李四 | 女 | 烫头 |
  18. + ---------+------+---------------+
  19. 2 rows in set ( 0.00 sec)

 

 



 

"

원본 : http://blog.gqylpy.com/gqy/248

추천

출처www.cnblogs.com/bbb001/p/11367197.html