資料型別

顽固派發表於2024-03-23

一、常用資料型別

整數型別:INT(或INTEGER)
定點數型別:DECIMAL
日期時間型別:YEAR、TIME、DATE、DATETIME、TIMESTAMP
文字字串型別:CHAR、VARCHAR、TEXT

二、整數型別

例子:
-- 1、建表
create table demo.demo1(
num int
);

-- 2、插入資料
insert into demo.demo1 values(null);         -- 成功 null
insert into demo.demo1 values(1);            -- 成功 1
insert into demo.demo1 values('2');          -- 成功 2
insert into demo.demo1 values('3.1');        -- 成功 3
insert into demo.demo1 values(true);         -- 成功 1
insert into demo.demo1 values(false);        -- 成功 0
insert into demo.demo1 values(1=1);          -- 成功 1
insert into demo.demo1 values(1=2);          -- 成功 0

insert into demo.demo1 values('');           -- 失敗
insert into demo.demo1 values('2.i');        -- 失敗
insert into demo.demo1 values('true');       -- 失敗
insert into demo.demo1 values('false');      -- 失敗
insert into demo.demo1 values('2023-01-01'); -- 失敗

三、定點型

-- 1、建表
create table demo.demo2(
num decimal(20,6)
);

-- 2、插入資料
insert into demo.demo2 values(null);         -- 成功 null
insert into demo.demo2 values(1);            -- 成功 1
insert into demo.demo2 values('2');          -- 成功 2
insert into demo.demo2 values('3.1');        -- 成功 3.1
insert into demo.demo2 values(true);         -- 成功 1
insert into demo.demo2 values(false);        -- 成功 0
insert into demo.demo2 values(1=1);          -- 成功 1
insert into demo.demo2 values(1=2);          -- 成功 0

insert into demo.demo2 values('');           -- 失敗
insert into demo.demo2 values('2.i');        -- 失敗
insert into demo.demo2 values('true');       -- 失敗
insert into demo.demo2 values('false');      -- 失敗
insert into demo.demo2 values('2023-01-01'); -- 失敗

四、日期型

-- 1、建表
create table demo.demo3(
tim date
);

-- 2、插入資料
insert into demo.demo3 values()              -- 成功 null
insert into demo.demo3 values(null)          -- 成功 null
insert into demo.demo3 values('20230101');   -- 成功 2023-01-01
insert into demo.demo3 values('2023-01-02'); -- 成功 2023-01-02
insert into demo.demo3 values('2023/01/03'); -- 成功 2023-01-03
insert into demo.demo3 values('2023$01$04'); -- 成功 2023-01-04
insert into demo.demo3 values(20230105);     -- 成功 2023-01-05

insert into demo.demo3 values('')            -- 失敗 mysql的date型別不能插入'',clickhouse資料庫允許插入'',且ck裡面的''和null也有所區別
insert into demo.demo3 values(2023-01-05);   -- 失敗

五、文字型

char 和 varchar的區別:
在MySQL中,CHAR和VARCHAR是兩種不同的資料型別,它們的主要區別在於儲存方式、儲存容量和效能。

儲存方式:
  CHAR是固定長度的型別,這意味著它為儲存的每個字元分配固定的空間,如果儲存的字元少於定義的CHAR長度,MySQL會使用空格填充剩餘空間。
  VARCHAR則是可變長度的型別,它根據實際儲存的字元長度分配空間,不會為未使用的空間分配空間。
儲存容量;
  CHAR型別的最大長度是255個字元,與字元編碼無關。
  VARCHAR型別的最大長度可以達到65535個字元,但這個長度受限於InnoDB儲存引擎的單行記錄的最大長度,通常這個限制是65535位元組。
效能:
  CHAR型別在更新或插入資料時,由於長度固定,通常比VARCHAR更快,因為它不需要在更新時重新計算和調整空間分配。
  VARCHAR型別在插入或更新資料時可能需要動態調整空間,這可能導致效能稍遜於CHAR。
空間使用:
  CHAR型別通常比VARCHAR型別更節省空間,因為它總是使用定義的長度來儲存資料,
  而VARCHAR型別則根據實際儲存的字元長度來分配空間。
總結:
  選擇CHAR還是VARCHAR取決於應用的具體需求,例如,如果知道字串的長度並且不需要經常更改,CHAR可能是更好的選擇,因為它提供了固定的儲存空間,減少了空間浪費。
相反,如果字串長度可能變化,或者需要頻繁更新,VARCHAR可能是更好的選擇,因為它提供了更大的靈活性,可以根據實際需要動態調整儲存空間。

相關文章