オリジナル:http://blog.gqylpy.com/gqy/248
"
ディレクトリ
文字型
公式サイト: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)[ここで絵の説明を挿入]
測定
試験の前に最初の二つの機能を見つけるために:
- 長さ() #は、バイト数を見ます
- CHAR_LENGTH() #は、バイト数を見ます
-
# 创建测试表,分别指明字段x为char类型,字段y为varchar类型
-
mysql>
create
table
test(x
char(
5), y
varchar(
5));
-
Query OK, 0 rows affected (0.11 sec)
-
-
# 插入数据,后面加空格
-
mysql>
insert
into
test
values(
"数据库 ",
"数据库 ");
-
Query OK, 1 row affected (0.00 sec)
-
-
# 在检索时,char类型会过滤掉后面的空格,而varchar正常显示
-
mysql>
select x,
char_length(x), y,
char_length(y)
from
test;
-
+
-----------+----------------+------------+----------------+
-
| x | char_length(x) | y | char_length(y) |
-
+
-----------+----------------+------------+----------------+
-
| 数据库 | 3 | 数据库 | 4 |
-
+
-----------+----------------+------------+----------------+
-
1 row in
set (
0.00 sec)
-
-
-
mysql>
set sql_mode =
'pad_char_to_full_length';
-
Query OK, 0 rows affected, 1 warning (0.00 sec)
-
-
# 查当前SQL模式
-
mysql>
select @@sql_mode;
-
+
-------------------------+
-
| @@sql_mode |
-
+
-------------------------+
-
| PAD_CHAR_TO_FULL_LENGTH |
-
+
-------------------------+
-
1 row in
set (
0.00 sec)
-
-
# 再次检索,发现
char类型的数据是占满规定的长度的(在后面填充空格)
-
mysql>
select x,
char_length(x), y,
char_length(y)
from
test;
-
+
-------------+----------------+------------+----------------+
-
| x | char_length(x) | y | char_length(y) |
-
+
-------------+----------------+------------+----------------+
-
| 数据库 | 5 | 数据库 | 4 |
-
+
-------------+----------------+------------+----------------+
-
1 row in
set (
0.00 sec)
-
-
# 查看字节数
-
#
char类型:
3个中文字符 + 两个空格 =
11
bytes
-
#
varchar类型:
3个中文字符 +
1个空格 =
10
bytes
-
mysql>
select x,
length(x), y,
length(y)
from
test;
-
+
-------------+-----------+------------+-----------+
-
| x | length(x) | y | length(y) |
-
+
-------------+-----------+------------+-----------+
-
| 数据库 | 11 | 数据库 | 10 |
-
+
-------------+-----------+------------+-----------+
-
1 row in
set (
0.01 sec)
概要
共通の直列ストリング:チャーとVARCHAR VARCHARより柔軟な使用が、しかし、システム全体の性能の観点から、チャーデータが高速処理を入力し、時には50%VARCHAR処理速度を超えることができます。そのため、データベースユーザの設計に最適なバランスを達成するために、すべての要因を考慮する必要があります
他のシリーズの文字列(効率:CHAR> VARCHAR> テキスト):
- TEXTシリーズTINYTEXTのTEXT MEDIUMTEXT LONGTEXT
- BLOB系列TINYBLOB BLOB MEDIUMBLOBのLONGBLOB
- 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)
-
mysql>
create
table information(
-
->
name
char(
3),
-
-> sex enum(
"男",
"女"),
-
-> hobby
set(
"抽烟",
"喝酒",
"烫头")
-
-> );
-
Query OK, 0 rows affected (0.05 sec)
-
-
mysql>
insert
into information
values
-
-> (
"张三",
"男",
"抽烟,喝酒"),
-
-> (
"李四",
"女",
"烫头");
-
Query OK, 2 rows affected (0.00 sec)
-
Records: 2 Duplicates: 0 Warnings: 0
-
-
mysql>
select *
from information;
-
+
---------+------+---------------+
-
| name | sex | hobby |
-
+
---------+------+---------------+
-
| 张三 | 男 | 抽烟,喝酒 |
-
| 李四 | 女 | 烫头 |
-
+
---------+------+---------------+
-
2 rows in
set (
0.00 sec)
"