型別(寬度):指的是查詢的顯示寬度,而非儲存寬度,儲存寬度隨型別而定,不寫寬度的時候,預設是型別的最大值顯示的寬度值
案例
create table student (
id int,
name char(6),
born_year year,
birth_date date,
class_time time,
reg_time datetime
);# 會預設以其對應的格式內容插入
insert into student values(1, 'egon', now(), now(), now(), now());
datetime和timestamp的區別
datatime的日期範圍是1001 - 2023年,timestamp的時間愛你範圍是1970 - 2023年
datetime佔據8個位元組,timestamp佔據4個位元組
datetime儲存時間與時區無關,timestamp儲存時間與時區有關
案例
# 寬度指的是字元的個數
create table t1(name char(5));
create table t2 (name varchar(5));
insert into t1 values('李傑'); # '李傑 ' 補全到3個空格到5個寬度
insert into t2 values('李傑'); # '李傑' 有多少存多少
# 檢視儲存的長度
select char_length(name) from t1; # 2 mysql char取的時候會自動去除空格
select char_length(name) from t2; # 存的是2個,取的也是2個
修改mysql的模式,來查詢char的儲存長度
set sql_mode = 'pad_char_to_full_length';
mysql查詢的時候,char補全空格的,查詢的會自動去除空格進行查詢
select name from t1 where name = '李傑'; # 有空格還是無空格的都能查
# 末尾去空格查詢只適用等號,不適用like
select name from t1 where name like '李傑';
末尾去空格查詢只適用等號,不適用like
varchar 還會用乙個位元組儲存資料的長度
length: 檢視位元組數
char_length: 檢視字元數
char填充空格來滿足固定長度,但是在查詢時會很不要臉的刪除尾部的空格(裝作好像自己沒有浪費過空間一樣),然後更改sql_mode
讓其顯出原形。
訪問資料很快
浪費空間
varchar
更加節省空間,存資料更精準
訪問資料比較慢,得先獲取頭
大部分場景使用char,儲存空間不是一種限制了。建表時盡量的把定長的資料往前放,變長的資料往後放。
欄位的值只能在給定的範圍中選擇,如:單選框,多選框
enum
單選,只能在給定的範圍內選乙個值,如:性別
set
多選,在給定的範圍內可以選擇乙個或多個的值 如:愛好
案例
create table consumer (
id int,
name char(16),
*** enum("male", "female", "other"),
level enum('vip1', 'vip2', 'vip3'),
hobbies set('play', 'music', 'read', 'run')
);insert into consumer values (1, 'egon', 'male', 'vip1', 'music,read')
set插入數值是,引號內多個值以逗號隔開
如果傳入不在範圍之內的,插入之後查詢結果為空
加入命令列的模式下,輸入的sql語句打錯了或者最後一句輸入了乙個逗號而不是分號;
可以輸入\c
終止執行
MySQL 資料型別 筆記
mysql中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別。mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別 integer smallint decimal和numeric 以及近似數值資料型別 f...
(MySQL筆記)MySQL資料型別
mysql筆記 mysql資料型別 mysql筆記 搭建mysql資料庫系統 mysql的直接量指的是乙個直接的值,是乙個固定的 不會改變的值。直接量的資料型別分為這麼幾類 數值 字元 時間 布林。整型直接量 乙個整數,可以帶正負號 如 15 32 小數直接量 帶有小數點或者不帶小數點的數,可以帶正...
mysql筆記3 資料型別
整數型別 tinyint smallint mediumint int bigint 8 16 24 32 64 可選屬性 unsigned 對字元寬度的定義,如int 11 這並不會限制值的範圍,只是規定了客戶端顯示字元的個數,在儲存的時候,int 1 和int 21 是一樣的 可以使用decim...