資料類型(2)

來源:互聯網
上載者:User

標籤:...   數字   varchar   資料類型   靈活   設計   mysq   使用   binary   

字元類型
#官網:https://dev.mysql.com/doc/refman/5.7/en/char.html# 注意:  char 和 varchar  括弧內的參數知道的都是字元長度# char 類型:  定長 , 簡單粗暴浪費空間 , 存取速度快    字元長度範圍 : 0-255(一個中文是一個字元 , 是utf8編碼的3個位元組)    儲存:        儲存char類型的值時 , 會往右填充空格來滿足長度        例如:指定長度為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位元組,字元編碼為utf-8:https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html)    儲存:        varchar類型儲存資料的真實內容,不會用空格填充,如果‘ab  ‘,尾部的空格也會被存起來        強調:varchar類型會在真實資料前加1-2Bytes的首碼,該首碼用來表示真實資料的bytes位元組數(1-2Bytes最大表示65535個數字,正好符合mysql對row的最大位元組限制,即已經足夠使用)        如果真實的資料<255bytes則需要1Bytes的首碼(1Bytes=8bit 2**8最大表示的數字為255)        如果真實的資料>255bytes則需要2Bytes的首碼(2Bytes=16bit 2**16最大表示的數字為65535)    檢索:        尾部有空格會儲存下來,在檢索或者說查詢時,也會正常顯示包含空格在內的內容

 

官網解釋如下:

 

 

 

 

驗證:

驗證之前瞭解兩個函數:

length()    # 查看位元組數 char_length()   #查看字元數

 

1.char填充空格來滿足固定長度,但是在查詢時卻會很不要臉地刪除尾部的空格(裝作自己好像沒有浪費過空間一樣),然後修改sql_mode讓其現出原形。

# 建立t1表,分別指明欄位x為char類型,欄位y為varchar類型mysql> create table t1(x char(5),y varchar(4));Query OK, 0 rows affected (0.16 sec)# char存放的是5個字元,而varchar存4個字元mysql>  insert into t1 values(‘你瞅啥 ‘,‘你瞅啥 ‘);Query OK, 1 row affected (0.01 sec)# 在檢索時char很不要臉地將自己浪費的2個字元給刪掉了,裝的好像自己沒浪費過空間一樣,而varchar很老實,存了多少,就顯示多少mysql> select x,char_length(x),y,char_length(y) from t1;+-----------+----------------+------------+----------------+| x         | char_length(x) | y          | char_length(y) |+-----------+----------------+------------+----------------+| 你瞅啥    |              3 | 你瞅啥     |              4 |+-----------+----------------+------------+----------------+1 row in set (0.02 sec) #略施小計,讓char現原形 mysql> SET sql_mode = ‘PAD_CHAR_TO_FULL_LENGTH‘;Query OK, 0 rows affected (0.00 sec)#查看當前mysql的mode模式mysql> select @@sql_mode;+-------------------------+| @@sql_mode              |+-------------------------+| PAD_CHAR_TO_FULL_LENGTH |+-------------------------+1 row in set (0.00 sec)#原形畢露了吧。。。。mysql> select x,char_length(x) y,char_length(y) from t1;+-------------+------+----------------+| x           | y    | char_length(y) |+-------------+------+----------------+| 你瞅啥      |    5 |              4 |+-------------+------+----------------+1 row in set (0.00 sec)# 查看位元組數#char類型:3個中文字元+2個空格=11Bytes#varchar類型:3個中文字元+1個空格=10Bytesmysql> select x,length(x),y,length(y) from t1;+-------------+-----------+------------+-----------+| x           | length(x) | y          | length(y) |+-------------+-----------+------------+-----------+| 你瞅啥      |        11 | 你瞅啥     |        10 |+-------------+-----------+------------+-----------+1 row in set (0.02 sec)

 

總結:
#常用字串系列:char與varchar註:雖然varchar使用起來較為靈活,但是從整個系統的效能角度來說,char資料類型的處理速度更快,有時甚至可以超出varchar處理速度的50%。因此,使用者在設計資料庫時應當綜合考慮各方面的因素,以求達到最佳的平衡#其他字串系列(效率:char>varchar>text)TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXTBLOB 系列    TINYBLOB BLOB MEDIUMBLOB LONGBLOB BINARY系列 BINARY VARBINARYtext:text資料類型用於儲存變長的大字串,可以組多到65535 (2**16 − 1)個字元。mediumtext:A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.longtext:A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1) characters.

 

枚舉類型和集合類型

欄位的值只能在給定範圍中選擇,如單選框,多選框

enum 單選  只能在給定的範圍內選一個值 , 如性別sex 男 male /女female

set 多選  在給定的範圍內可以選擇一個或一個以上的值 (愛好1,愛好2,愛好3....)

mysql> create table consumer(    -> id int,    -> name varchar(50),    -> sex enum("male","female","other"),    -> level enum("vip1","vip2","vip3","vip4"),    -> fav set("play","music","girl","money")    -> );Query OK, 0 rows affected (0.38 sec)mysql> insert into consumer values    ->     (1,‘趙雲‘,‘male‘,"vip2","girl,money"),    ->     (2,‘趙雲2‘,‘other‘,‘vip4‘,‘music‘);Query OK, 2 rows affected (0.08 sec)Records: 2  Duplicates: 0  Warnings: 0mysql> select * from db5.consumer;+------+---------+-------+-------+------------+| id   | name    | sex   | level | fav        |+------+---------+-------+-------+------------+|    1 | 趙雲    | male  | vip2  | girl,money ||    2 | 趙雲2   | other | vip4  | music      |+------+---------+-------+-------+------------+2 rows in set (0.04 sec)

 

資料類型(2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.