MySQL數據庫之數據類型


MySQL中定義數據字段的類型對數據庫的優化非常重要

MySQL支持多種類型,大致可分為數值、日期/時間和字符串(字符)類型。

       數值:

  1.整數(TINYINT SMALLINT MEDIUMINT INT BIGINT)

  tinyint[(m)] [unsigned] [zerofill](小整數,用於保存一定范圍內的整數)

   有符號:-127~128  

        無符號:0~255

 int[(m)][unsigned][zerofill](整數,用於保存一定范圍內的整數)
 有符號:-2147483648 ~ 2147483647
 無符號:0 ~ 4294967295
 
  bigint[(m)][unsigned][zerofill](大整數,用於保存一定范圍內的整數)
 有符號:(-9233372036854775808,9223372036854775807)
 2.小數類型
 
        
 

    日期:(DATETIME、DATE、TIMESTAMP、TIME和YEAR)

 

  每個時間類型有一個有效值范圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。

在實際應用的很多場景中,MySQL的這兩種日期類型都能夠滿足我們的需要,存儲精度都為秒,但在某些情況下,會展現出他們各自的優劣。下面就來總結一下兩種日期類型的區別。

1.DATETIME的日期范圍是1001——9999年,TIMESTAMP的時間范圍是1970——2038年。

2.DATETIME存儲時間與時區無關,TIMESTAMP存儲時間與時區有關,顯示的值也依賴於時區。在mysql服務器,操作系統以及客戶端連接都有時區的設置。

3.DATETIME使用8字節的存儲空間,TIMESTAMP的存儲空間為4字節。因此,TIMESTAMP比DATETIME的空間利用率更高。

4.DATETIME的默認值為null;TIMESTAMP的字段默認不為空(not null),默認值為當前時間(CURRENT_TIMESTAMP),如果不做特殊處理,並且update語句中沒有指定該列的更新值,則默認更新為當前時間。

datetime與timestamp的區別

 

  字符串

  

  注意:

1. 單獨插入時間時,需要以字符串的形式,按照對應的格式插入
2. 插入年份時,盡量使用4位值
3. 插入兩位年份時,<=69,以20開頭,比如50,  結果2050      
                >=70,以19開頭,比如71,結果1971
MariaDB [db1]> create table t12(y year);
MariaDB [db1]> insert into t12 values  
    -> (50),
    -> (71);
MariaDB [db1]> select * from t12;
+------+
| y    |
+------+
| 2050 |
| 1971 |
+------+

 枚舉類型與集合類型

   字段的值只能在給定范圍中選擇,如單選框,多選框
   enum 單選 只能在給定的范圍內選一個值,如性別 sex 男male/女female
   set 多選 在給定的范圍內可以選擇一個或一個以上的值(愛好1,愛好2,愛好3...)

 #枚舉類型
CREATE TABLE shirts (
                    name VARCHAR(40),
                    size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
                );
                INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');

#集合類型
 CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
                INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

 


 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM