1. 程式人生 > 資訊 >寧德時代董事長曾毓群超越馬化騰成中國第二大富豪,身家達到 477 億美元

寧德時代董事長曾毓群超越馬化騰成中國第二大富豪,身家達到 477 億美元

整型

'''
    分類
        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...')