<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 字符串類型 #### char 定長字符:指定長度之后,系統一定會分配指定的空間用于存儲數據. 基本語法:char(L),L代表**字符數**(中文與英文字母一樣),L長度為0到255. #### varchar 變長字符:指定長度之后,系統會根據實際存儲的數據來計算長度,分配合適的長度(數據沒有超出長度) 基本語法:Varchar(L),L代表字符數,L的長度理論值位0到65535. 1. char一定會使用指定的空間,varchar是根據數據來定空間. 2. char的數據查詢效率比varchar高:varchar是需要通過后面的記錄數來計算. 3. 如果確定數據一定是占指定長度,那么使用char類型,如果不確定數據到底有多少,那么使用varchar類型,如果數據長度超過255個字符,不論是否固定長度,都會使用text,不再使用char和varchar. 4. 因為varchar要記錄數據長度(系統根據數據長度自動分配空間),所以每個varchar數據產生后,系統都會在數據后面增加1-2個**字節**的額外開銷:是用來保存數據所占用的空間長度如果數據本身小于127個**字符**:額外開銷一個**字節**;如果大于127個,就開銷兩個**字節**. #### char和varchar數據存儲對比(utf8,一個字符都會占用3個字節,gbk一個字符占用2個字節) | 存儲數據 |char(2) | varchar(2) | char所占字節 |varchar所占字節 | | --- | --- | --- | --- | --- | | A | A |A | 2* 3 = 6 | 1 * 3 +1 = 4 | char因為是定長,所以肯定用了兩個字符去存儲,而varchar是不定長,只會用一個字符去存儲,還有一個字節用來記錄長度. ## text 文本類型 : 本質上mysql提供了兩種文本類型. 1. text : 存儲普通的字符文本. 2. blob : 存儲二進制文本(圖片,文件) ,一般都不會使用blob來存儲文件本身,通常是使用一個鏈接來指向對應的文件本身,這樣就可以節省可多的空間. ### 系統中提供了四種text 1. tinytext : 系統使用一個字節來保存,系統是用1個字節來保存數據所在的位置,并不是真的用1個字節來保存數據,實際能夠存儲的數據為: 2^8 +1 ; 2. text :使用兩個字節來存儲,實際存儲2^16 +2 . 3. mediumtext : 使用三個字節存儲,實際存儲為 : 2^ 24 +3 . 4. longtext : 使用四個字節存儲 , 實際存儲為 :2 ^ 32 +4. 注意 : 1. 在選擇對應的存儲文本的時候,不用顆粒去選擇text類型,系統會自動根據存儲的數據長度來選擇合適的文本類型.一般使用text類型就行了. 2. 在選擇字符存儲的時候,如果數據超過255個字符,那么一定要選擇text存儲(效率更高,而且更節省空間). 3. #### enum (枚舉類型) 枚舉類型: 在數據插入之前,先設定幾個項,這幾個項就是可能最終出現的數據結果. 如果確定某個字段的數據只有那么幾個值 :如性別,男,女,保密,系統就可以在設定字段的時候規定當前字段只能存在固定的幾個值,那么請使用枚舉類型. 系統提供了1到2個字節來存儲枚舉數據 : 通過計算enum列舉的具體值來選擇實際的存儲空間,如果數據值列表在255以內,name1個字節就夠了,如果超過255但是小于65535,那么系統采用兩個字節來保存. 語法 ~~~ create table class( gender enum('男','女','保密')); ~~~ 注意: 1. 只有插入enum設定的這幾個值才能插入成功,否則的話系統會報錯. 2. 枚舉enum的存儲原理:實際上字段上所存儲的值并不是真正的字符串,而是字符串對應的下標:當系統設定枚舉類型的時候,會給枚舉中每個元素定義一個下標,這個下標規則從1開始Enum(1=>‘男’,2=>’女’,3=>’保密’). 3. 特性:在mysql中系統是自動進行類型轉換的:如果數據碰到“+、-、*、/”系統就會自動將數據轉換成數值:而普通字符串轉換成數值為0 .Select 字段名 + 0 from 表名. 4. 既然實際enum字段存儲的結果是數值:那么在進行數據插入的時候,就可以使用對應的數值來進行. ~~~ select gender + 0 from 表名; 結果: 系統進行了強制轉換. +------------+ | gender + 0 | +------------+ | 1 | | 1 | +------------+ ~~~ 枚舉類型的意義 : 1. 規范數據本身,限定只能插入規定的數據項. 2. 節省存儲空間. #### set (集合類型) 集合:是一種將多個數據選項可以同時保存的數據類型,本質是將指定的項按照對應的二進制位來進行控制:1表示該選項被選中,0表示該選項沒有被選中。 語法 ~~~ create table class( hobby set('足球','籃球','排球','游泳','乒乓球') ); ~~~ 插入數據 : 注意在最外層加上引號,里面每個數據用逗號隔開, 不在set設置的數據無法插入,這個類型類似html中的多選. ~~~ insert into class values("足球,籃球,游泳"); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看