Mysql varchar 字節長度

1.我們經常 mysql創建 varchar(20) ?name這個 20長度 究竟是表示的字符數還是字節數?根編碼字符集又有沒有關系?

首先 mysql 5.X 以上的版本的 定義中 表示的字符長度,如上varchar(20)你既可以添加20個英文字符,也可以添加二十個中文字符。 表示的字符長度

mysql 4.X 的版本表示的是字節長度,會根據字符集轉變 內容字節長度存儲。

2.關于 int(2) 中的2 ?,表示的并非是int類型只能輸入2位數字,而是只能顯示2位數字范圍,可以添加11位的int的任何數字。

3.mysql 5.X以上版本 ?存儲時 char最大255字節,這個和字符集是否有關系?

本人測試沒有關系,字符集是GBK或者UTF-8在char(255)下都可已添加255個字符(字母或者漢字或者都有)。

------------------------

1、限制規則?

字段的限制在字段定義的時候有以下規則:?
a) 存儲限制?
varchar 字段是將實際內容單獨存儲在聚簇索引之外,內容開頭用1到2個字節表示實際長度(長度超過255時需要2個字節),因此最大長度不能超過65535。?
b) 編碼長度限制?
字符類型若為gbk,每個字符最多占2個字節,最大長度不能超過32766;?
  字符類型若為utf8,每個字符最多占3個字節,最大長度不能超過21845。?
  對于英文比較多的論壇 ,使用GBK則每個字符占用2個字節,而使用UTF-8英文卻只占一個字節。?
  若定義的時候超過上述限制,則varchar字段會被強行轉為text類型,并產生warning。?
c) 行長度限制?
   導致實際應用中varchar長度限制的是一個行定義的長度。 MySQL要求一個行的定義長度不能超過65535。若定義的表長度超過這個值,則提示?
  ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to    change some columns to TEXT or BLOBs。?
2、計算例子?
  舉兩個例說明一下實際長度的計算。?
a) 若一個表只有一個varchar類型,如定義為?
create table t4(c varchar(N)) charset=gbk;?
則此處N的最大值為(65535-1-2)/2= 32766。?
減1的原因是實際行存儲從第二個字節開始';?
減2的原因是varchar頭部的2個字節表示長度;?
除2的原因是字符編碼是gbk。?


b) 若一個表定義為?
create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;?
則此處N的最大值為 (65535-1-2-4-30*3)/3=21812 。(一行長度限制)
減1和減2與上例相同;?
減4的原因是int類型的c占4個字節;?
減30*3的原因是char(30)占用90個字節,編碼是utf8。?

如果被varchar超過上述的b規則,被強轉成text類型,則每個字段占用定義長度為11字節,當然這已經不是“varchar”了。



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538004.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網上訂餐python_來自美國網上訂餐網站的創新

美國網上訂餐網站的創新:小服務半徑產生大價值來源:站長網 作者:揚揚做為一個上班族,尤其是從事it行業的白領階層,整日對著電腦鍵盤敲敲打打,講究的是效率,而每天中午乃至晚上考慮吃些什么卻是讓人極其頭疼的事。去哪里…

PHP學習方向-進階2(三)

實踐篇 給定二維數組,根據某個字段排序如何判斷上傳文件類型,如:僅允許 jpg 上傳不使用臨時變量交換兩個變量的值 $a1; $b2; > $a2; $b1; strtoupper 在轉換中文時存在亂碼,你如何解決?php echo strtoupper(ab你好c…

Spring的@Autowired和@Resource

Autowired 當Spring發現Autowired注解時,將自動在代碼上下文中找到和其匹配(默認是類型匹配)的Bean,并自動注入到相應的地方去。 必須確保該類型在IOC容器中只有一個對象;否則報錯。 Resource1、Resource后面沒有任何內…

關于xml文件 xsi:schemaLocation

原文連接&#xff1a;https://www.jianshu.com/p/7f4cbcd9f09f ------------------------------------------------------相信很多人對xml 頭上一大堆得東西都是拿來主義&#xff0c;copy過來就行了&#xff0c;并不理解那是什么意思先來一段<?xml version"1.0" …

ES6部分特性小結

前言 踩著前人的肩膀&#xff0c;努力前行。參考了很多前人的文章。 1.變量聲明const和let es6之前聲明變量只能用var&#xff0c;var的特點是無論聲明在何處&#xff0c;都會被視為聲明在函數的最頂部(不在函數內即在全局作用域的最頂部) function test(){if(false){var name …

java 順序棧_Java實現順序棧

一、分析棧是限定僅在表的一端進行插入或刪除操作的線性表&#xff0c;對于棧來說&#xff0c;操作端稱為棧頂&#xff0c;另一端則稱為棧底&#xff0c;棧的修改是按照后進先出的原則進行的&#xff0c;因此又稱為后進先出的線性表。順序棧是指利用順序存儲結構實現的棧&#…

Spring IO platform

什么是Spring IO PlatformSpring IO Platform&#xff0c;簡單的可以認為是一個依賴維護平臺&#xff0c;該平臺將相關依賴匯聚到一起&#xff0c;針對每個依賴&#xff0c;都提供了一個版本號&#xff0c;這些版本對應的依賴都是經過測試的&#xff0c;可以保證一起正常使用。…

二十多歲不信,三十多歲卻深信不疑的道理

1.那些年偷的懶、荒廢的時間、敗壞的身體&#xff0c;都&#xff01;得&#xff01;還&#xff01; 年輕的時候心比天高&#xff0c;以為自己能干出一番大事業&#xff0c;后來慢慢意識到自己只是個普通人。 2.不和講道理。 3.原來被嗤之以鼻的門當戶對是有一定道理的。 4.以貌…

javascript === 和==的區別

原文鏈接&#xff1a;https://blog.csdn.net/seven_amber/article/details/62889290 -------------------------------------------------------------------- 用于比較 判斷 兩者相等 在比較的時候可以轉自動換數據類型用于嚴格比較 判斷兩者嚴格相等 嚴格比較…

authentication java_HTTP基本認證(Basic Authentication)的JAVA實例代碼

大家在登錄網站的時候&#xff0c;大部分時候是通過一個表單提交登錄信息。但是有時候瀏覽器會彈出一個登錄驗證的對話框&#xff0c;如下圖&#xff0c;這就是使用HTTP基本認證。下面來看看一看這個認證的工作過程:第一步:客戶端發送http request 給服務器,服務器驗證該用戶是…

Python數據分析入門(四)

前言上期給大家分享了關于豆瓣5500部電視劇的分析&#xff0c;那么這次我們就給吃貨們帶來一些福利&#xff0c;此次我們的主題為“尋找最好吃的火鍋”。進入主題之前&#xff0c;先給所有的吃貨們帶來一桌美味的火鍋&#xff0c;作為各位看官的前菜。數據采集此次我們采集的是…

微信開發者工具下載

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

java continue goto_Java中goto和break、continue實現區別

goto 關鍵字很早就在程序設計語言中出現。事實上&#xff0c;goto 是匯編語言的程序控制結構的始祖&#xff1a;“若條件 A&#xff0c;則跳到這里&#xff1b;否則跳到那里”。若閱讀由幾乎所有編譯器生成的匯編代碼&#xff0c;就會發現程序控制里包含了許多跳轉。然而&#…

Linux VirtualBox安裝及使用指南

2019獨角獸企業重金招聘Python工程師標準>>> VirtualBox是一款虛擬機軟件。雖然它的功能并不及VMware Workstation Pro&#xff0c;但它對開源精神的堅持使得它在Linux中依然深受歡迎。 唯一難以令人接受的是&#xff0c;VirtualBox的安裝步驟較為復雜。不過&#x…

java web vm_java web .vm文件??

在JavaWeb項目中有很多.vm文件&#xff0c;打開以后是類似于.NETMVC項目中的.cshtml文件的形式#if($linkList)#set($itemsOnLine0)#foreach($linkin...在Java Web項目中有很多.vm文件&#xff0c;打開以后是類似于.NET MVC項目中的.cshtml文件的形式#if($linkList)#set ($items…

Android studio gradle 無法獲取 pom文件

Android studio 3.1 導入app項目后&#xff0c;gradle無法獲取 pom文件 具體保存內容如下&#xff1a; Could not GET https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-g…

生產環境linux下安裝兩個及兩個以上tomcat實踐

前言: 在生產環境部署程序項目中&#xff0c;有時候由于服務器緊張或缺少服務器等原因,往往都需要安裝兩個及兩個以上tomcat。我們需要在/etc/profile中增加tomcat的環境變量&#xff0c;然后在新增加的tomcat的bin目錄下的catalina.sh中引用自己在/etc/profile中配置的環境變量…

java 內存 四_java最終化的內存保留問題(4)

四、一種代替最終化的選擇在前面一節中的示例還存在一種不確定性可能&#xff1a;JVM并不能保證它在最終化隊列中調用對象的終結器的順序。而來自于所有類(應用程序&#xff0c;庫&#xff0c;等等)的終結器都是被同等對待的。因此&#xff0c;一個占有大量內存或一種稀有的本地…

基于Spring Boot不同的環境使用不同的配置方法

原文路徑&#xff1a;http://www.jb51.net/article/132589.htm ---------------------------------------- 默認是profile為dev&#xff0c;可以修改 spring 多文件配置&#xff1a; 1、properties文件 2、YAML文件 一、properties文件 在 Spring Boot 中&#xff0c; 多環境配…

java set方法賦值_java方面:private屬性,沒有set方法,只有get方法,如何給這個屬性賦值?...

富國滬深用反射吧&#xff0c;然后設置setAccessible為true就可以了&#xff0c;如下&#xff1a;public class Test {private String readOnly;public String getReadOnly() {return readOnly;}public static void main(String[] args) throws SecurityException, NoSuchField…