[MySQLの]文字のデータ型は関連--2019-08-17午前3時11分55秒

オリジナル:http://blog.gqylpy.com/gqy/248

"


ディレクトリ

文字型

char型

varchar型のタイプ

測定

概要

列挙型およびコレクション型


文字型

公式サイト:https://dev.mysql.com/doc/refman/5.7/en/char.html
注:パラメータは、長さの文字固定かっこでcharにいいとvarchar

char型

固定長、シンプルで、粗、スペースの無駄、アクセス速度より速いです

  • 文字長: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(他のタイプよりも多くの場合21845プロンプト、MySQLの行の上限は65535バイトである:文字コードUTF8 公式文書
  • ストレージ:真のコンテンツタイプVARCHARは、末尾のスペースを、スペースで埋めていないデータを格納するためには、クエリでフィルタリングされません。
    ストレス:varchar型のタイプは、実際のデータを表すために使用される接頭辞である、実際のデータ1-2bytes前にプレフィックスを追加しますバイトのバイト数(65535は、最大長を表す1-2bytes、最大バイトMySQLが使用するのに十分である、行の制限に適合する)。
    [実データ<255bytes、プレフィックス1bytesの必要性(1bytes = 8ビット2の場合** 8が表す最大数である255)、実データが> 255bytesは、接頭辞の2バイトが必要な場合(2バイト= 2 ** 16 16ビット65535によって表される最大数)]
  • 検索:末尾のスペースは、スペースが検索時に通常の内容を表示するなど、保存されます。

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)

概要

共通の直列ストリング:チャーVARCHAR VARCHARより柔軟な使用が、しかし、システム全体の性能の観点から、チャーデータが高速処理を入力し、時には50%VARCHAR処理速度を超えることができます。そのため、データベースユーザの設計に最適なバランスを達成するために、すべての要因を考慮する必要があります

他のシリーズの文字列(効率:CHAR> VARCHAR> テキスト)

  1. TEXTシリーズTINYTEXTのTEXT MEDIUMTEXT LONGTEXT
  2. BLOB系列TINYBLOB BLOB MEDIUMBLOBのLONGBLOB
  3. BINARY系列BINARY VARBINARY

TEXTシリーズ:大型の可変長文字列を格納するためのテキスト・データ・タイプ、最大65,535(2 ** 16--1)する文字
MEDIUMTEXT:最大のテキスト列 16,777,215の長さ(2 ** 24から1)文字
LONGTEXT:テキストをカラム4,294,967,295の最大長または4ギガバイト-文字(2 ** 32 1。)。


列挙型およびコレクション型

すなわち、のみ、ラジオボタンなどの選択、所定の範囲内のフィールドの値は、チェックボックス
列挙列挙:すなわちラジオ、与えられた範囲内でのみ選択された値(例:少年セックスセックス/ガール)
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/gqy02/p/11367199.html