varchar(n)跟varchar(max)的區別
我們平常mysql資料庫一些定長的欄位用char,
一些不定長的資料用varchar,事實上,一般varchar的欄位查詢速度都比char高。
但是有一個問題,既然varchar的長度是根據實際資料的長度進行儲存的,那為什麼我們不能一直用varchar(8000)或者varchar(max)呢,總結了以下幾點:
1、第一,資料庫執行時,欄位佔據了記憶體空間以及磁碟空間,磁碟中是根據資料的實際長度(n:n+1, max:n*2)進行儲存的,而varchar(n)則佔據著記憶體的n長度位元組的空間,max = 2^32 -1 = 65535
2、第二、拋開空間不說,欄位長度有利於讓我們開發者從欄位名意義上理解分析欄位的意義以及作用,試想一下一整個資料庫都是varchar(8000),開發看資料庫時候不會暈嗎,看著這些欄位都不知道有什麼區別,只是欄位名不一樣,也不知道作用(當然有文件,但你也不可能記住所有欄位意思或者說你是剛開始理解別人的專案),不會害怕寫錯資料啥的嗎。
3、第三、沒有限定住欄位長度可能會產生垃圾資料------這也有可能產生一種後果,被惡意攻擊,存入了超大的資料來佔滿磁碟空間。
相關推薦
varchar(n)跟varchar(max)的區別
我們平常mysql資料庫一些定長的欄位用char, 一些不定長的資料用varchar,事實上,一般varchar的欄位查詢速度都比char高。 但是有一個問題,既然varchar的長度是根據實際資料的長度進行儲存的,那為什麼我們不能一直用varchar(8000)或者varchar(max)呢,總結了以下幾點
char跟varchar的區別
在建立資料庫表結構的時候,為了給一個String型別的資料定義一個數據庫的資料庫型別,一般參考的都是char或者varchar char的長度是不可變的,而varchar的長度是可變的 也就是說,定義一個char[10]和varchar[10],如果存進去的是‘csdn’
mysql中char(n)和varchar(n)在資料存入的時候關於是否丟棄最後的空格的區別
【字串】: char(length) [BINARY | ASCII | UNICODE] : 本型別資料,存入的時候,會丟棄最後的空格,如存入 'hello ',只存'hello'varchar(length) [BINARY] :本型別資料,存入的時候,保留所有的空
sqlserver2008 字符串類型varchar,nvarchar,nchar之間的區別
裏根 nchar ext col 不定 字符串類型 今天 har char 平時都沒怎麽註意sqlserver字符串的寫法,以為它和mysql一樣默認是varchar,然而不是。。。 然而今天在查詢數據庫數據時死活查不到,後來才發現從前臺讀取的數據後面含有大量空格 ,而前
MySql : varchar 和varchar 的區別 mysql int(10)的含義 MySql中varchar(10)和varchar(100)的區別==>>以及char的利弊
mysql int(10)的含義 int(M) M表示最大顯示寬度。最大有效顯示寬度是255。顯示寬度與儲存大小或型別包含的值的範圍無關。 在 int(M) 中,M 的值跟 int(M) 所佔多少儲存空間並無任何關係。 int(1)
mysql varchar(n) n表示字元個數
(注:以下針對mysql 5.0以上版本) mysql varchar(n) n表示字元個數,不是位元組數。對於utf8編碼,無論是字元、數字、漢字均佔3位元組。 varchar最大長度為65535個位元組,最大可儲存漢字數 = (65535-1-2)/3 減1是因為實際儲
Mysql int(n),char(n),varchar(n)中n的含義
Mysql int(n),char(n),varchar(n)n的含義 Tinyint(n):此處的n僅僅與顯示有關,和底層儲存實際佔用空間大小無關 tinyint(1) 這裡的1表示的是 最短顯示一個字元。tinyint(2) 這裡的2表示的是 最短顯示兩個字元,但這
Mysql中char,varchar與text型別的區別和選用
關於char,varchar與text平時沒有太在意,一般來說,可能現在大家都是用varchar。但是當要儲存的內容比較大時,究竟是選擇varchar還是text呢?不知道。。。。。。 於是去查閱了一些資料,順便將這三種類型做個比較: (1)char: char不用多說
varchar 與 char vachar2的區別
區別: varchar 與 char 區別 Varchar 對每個英文 (ASCII) 字元都佔用 2 個位元組 , 對一個漢字也只佔用兩個位元組 . 而 char 對英文 (ASCII) 字元佔用 1 個位元組 , 對一個漢字佔用 2 個位元組 . 2 .
mysql中char,varchar與text型別的區別
text 、 char、varchar 是資料在資料庫中的存放策略問題,設定資料型別的目的為了合理應用儲存空間,是資料庫伺服器資料型別劃分的方式。對於應用程式,把它們和string對應就可以了。 三種類型做個比較 (1)char: char不用多說了,它是定
關鍵字: char varchar text nchar nvarchar ntext 區別
關鍵字: char varchar text nchar nvarchar ntext 區別 1、CHAR。CHAR儲存定長資料很方便,CHAR欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間。 &n
mysql與db2中的varchar(n)
一個字元=一個位元組(ascii) 一個字元=二個位元組(unicode) 一個字元=三個位元組(utf-8) 一個漢字=一個字元 db2中varchar(n)最大能存n個位元組; mysql5.0以下版本varchar(n)最大能存n個位元組; mysql5.0以上版本v
MySQL中VARCHAR(n)最多能存多少個漢字
首先要確定自己使用的MySQL版本是多少 (1)MySQL 4.0 版本以下,VARCHAR(n) 中的 n 指的是改欄位容量為 n 位元組。如果存放的漢字為UTF8編碼時(utf8編碼每個漢字佔3位元組),則只能存16個漢字。 (2)MySQL 5.0 版本以上,VARCH
application跟session的區別
範圍 如果 超出 銷毀 use 發送 用戶 string類 所有 1.session是會話變量,只要同一個瀏覽器沒有被關閉,session對象就會存在。因此在同一個瀏覽器窗口中,無論向服務器發送多少請求,session對象只有一個。但是如果在一個會話中,客戶端長時間不
Redshift 通過重新建表修改varchar(60) 到varchar(90)
redshift 通過重新建表修改varchar(60) 到varchar(90)首先需要知道的是redshift不支持SQL語法直接修改varchar(60) 到varchar(90),但PostgreSQL和MySQL都支持。1.PostgreSQL如何修改varchar(60)到varchar(90)?
utf8_bin跟utf8_general_ci的區別
sele 區別 大小 from 二進制 ins div 判斷 utf ci是 case insensitive, 即 "大小寫不敏感", a 和 A 會在字符判斷中會被當做一樣的; bin 是二進制, a 和 A 會別區別對待. 例如你運行: SELECT * FRO
進程跟線程區別與聯系
而且 ext left 線程 color text 控制 個數 分配 進程跟線程區別與聯系 進程:具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。 線程:線程是一個實體,是cpu進行調度和分派的基本單位,是比進
URI跟URL的區別
這不 問題 抽象 事物 例子 還要 sina 概念 網絡資源 關於URL和URI的區別,個人見解。 初學java,最近被一個概念搞得頭暈腦脹,就是url和uri的概念和區別,網上查了一大通,發現各種回答眼花繚亂,有百科直接粘貼的,有胡說八道的,有故意繞來繞去的,我估計
LinkedBlockingQueue的put add跟offer的區別
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java多執行緒-併發之sleep() 和 wait(n) 、 wait() 的區別
sleep() 和 wait(n) 、 wait() 的區別 答: sleep 方法:是 Thread 類的靜態方法,當前執行緒將睡眠 n 毫秒,執行緒進入阻塞狀態。當睡眠時間到了,會接觸阻塞,進入可執行狀態,等待 CPU 的到來。睡眠不釋放鎖(如果有的話) wai