寧德時代董事長曾毓群超越馬化騰成中國第二大富豪,身家達到 477 億美元
阿新 • • 發佈:2021-07-27
整型
''' 分類 TINYINT SMALLINT MEDUIMINT INT BIGINT 作用 儲存年齡,等級,id,號碼等等 圖片介紹地址:https://images2017.cnblogs.com/blog/1036857/201708/1036857-20170801181433755-146301178.png 以TINYINT作驗證 是否有符號 預設情況下是帶符號的 超出會如何 超出限制只存最大可接收值 create table t9(id tinyint); insert into t9 values(-129),(256); 約束條件之unsigned(無符號) create table t10(id tinyint unsigned); insert into t10 values(-1),(256); create table t11(id int); insert into t11 values(-1),(256); int預設也是帶符號的 整型預設情況下都是帶有符號的 針對整型,括號內的寬度到底是幹嘛的?(作顯示,並不是指只能存多少位) create table t12(id int(8)); insert into t12 values(123456789); insert into t12 values(1); 特例:只有整型括號裡面的數字不適表示限制位數 id int(8) 如果數字沒有超出8位,那麼預設用空格填充至8位 如果數字超出了8位,那麼有幾位就存幾位(但是還是要遵守最大範圍) 約束條件之zerofill create table t13(id int(8) unsigned zerofill); 用0填充至8位 總結: 針對整型欄位,括號內無需指定寬度,因為它預設的寬度已經足夠顯示所有的資料了'''
浮點型
''' 分類 float double decimal 作用 身高,體重,薪資... 儲存限制 float(255,30) # 總共255位,小數部分佔30位 double(255,30) # 總共255位,小數部分佔30位 decimal(65,30) # 總共64位,小數部分佔30位 精確度驗證 create table t15(id float(255,30)); create table t16(id double(255,30)); create table t17(id decimal(65,30)); insert into t15 values(1.111111111111111111111111111111); insert into t16 values(1.111111111111111111111111111111); insert into t17 values(1.111111111111111111111111111111); 精確度:float<double<decimal 要結合實際應用場景,三者都能使用 擴充套件:其實在實際生產中,很多看似需要用整型或者浮點型儲存的資料,內部可能都是用的字元型別儲存'''
字元型別
''' 分類 char 定長;char(4)資料超過四個字元直接報錯,不夠四個字元空格補全 varchar 變長;varchar(4)資料超過四個字元直接報錯,不夠有幾個存幾個 create table t18(name char(4)); create table t19(name varchar(4)); insert into t18 values('a'); insert into t19 values('a'); 介紹一個小方法char_length統計欄位長度 select char_length(name) from t18; select char_length(name) from t19; 首先可以肯定的是char硬碟上存的絕對是真正的資料,帶有空格;但是在顯示的時候,mysql會自動將多餘的空格剔除 再次修改sql_mode,讓MySQL不要做自動剔除操作 set global sql_mode = 'strict_trans_tables,pad_char_to_full_length'; 因為是修改,所以之前的嚴格模式也需要帶上 char與varchar對比 char 缺點:浪費空間 優點:存取都很簡單,直接按照固定的字元儲存資料即可 jason egon mike 存按照字元長度存,取也直接按照字元長度取 varchar 有點:節省空間 缺點:存取較為麻煩 1bytes+jason 1bytes+egon 1bytes+mike 存的時候需要製作報頭,取的時候也需要先讀取抱頭,之後才能讀取真實資料 以前基本上都是用的char,其實現在用varchar的也挺多 後面使用哪個都行,建議使用varchar 補充: 進來公司之後你完全不需要考慮欄位型別和欄位名,因為產品給你發的郵件上已經全部指明瞭'''
時間型別
''' date 年月日2021-8-7 datetime 年月日時分秒2021-8-7 10:10:10 time 時分秒10:10:10 Year 2021 create table student( id int, name varchar(16), born_year year, birth date, study_time time, reg_time datetime ); insert into student values(1,'egon','2020','1880-11-11','11:11:11','2021-11-11 11:11:11'); '''
列舉與集合型別
''' 分類 列舉(enum):多選一 集合(set):多選多(也可以單選) 具體使用 create table user( id int, name char(16), gender enum('male','female','others') ); insert into user values(1,'jason','male'); insert into user values(2,'egon','xxxooo'); 報錯 # 列舉欄位,後期在存資料的時候只能從列舉裡面選擇一個儲存 create table teacher( id int, name char(16), gender enum('male','female','others'), hobby set('read','DBJ','hecha') ); insert into teacher values(1,'jason','male','read,DBJ'); insert into teacher values(2,'egon','male','read'); insert into teacher values(3,'mike','others','生蠔'); 報錯 # 集合可以只寫一個,但是不能寫沒有列舉的 '''while True: print('studying...')