為什麼資料庫要設定預設值呢?因為我們希望在插入資料時,有意或無意間被忽略的字段能夠交由mysql按我們事先預想的方式處理,例如一些預設正常狀態碼、使用者插入資料時候尚未設定的文字字段,諸如此類。
假設student表裡有乙個欄位score被設定為《非空》《預設值》,插入一條資料記錄時,score字段值為空<''>,那這時score的字段值為<''>還是《預設值》?
設定預設值的作用只有在忽略了字段時才會發揮作用。何為忽略了字段,就是在寫sql插入語句的時候,不寫要忽略的字段的欄位名,例如:有乙個student表,有欄位id,name,age,score。score設定了預設值99,插入一條語句,insert into student (name,age)values('tom',3),這時忽略了score欄位(id欄位設定了主鍵和自動增長),mysql資料庫就會按照事先設定的預設值插入到資料庫中。
所以以上問題的答案是<''>。
因為null跟''是完全不一樣的,null表示未知,沒有型別可言;而''是有型別的,表示乙個空的字串。所以,在插入有預設值的字段時,插入值為''時,依然會插入到資料庫中。
而實際上資料庫中的《空》表示的是null。
例如,當mysl資料庫執行insert into student(name,age,score)values('tom',3,null)時會報錯:#1048 - column 'score' cannot be null。
為什麼資料庫字段需要設定預設值
非嚴格模式下,mysql會容忍許多開發上的疏忽,例如把乙個長度100的字串插入到varcaht中只會截斷多餘的部分而不報錯。嚴格模式對資料的格式 長度 型別等進行校驗,你貼出的建表語句中指定了default,如果此時不指定default,在你認為會啟用預設值的時候會返回 1364錯誤。開發階段最好啟...
修改mysql資料庫字段內容預設值為當前時間
新增createtime 設定預設時間 current timestamp alter tabletable name add columncreatetimedatetime null default current timestamp comment 建立時間 修改createtime 設定預設...
為birt交叉報表空記錄設定預設值
我用的birt版本是2.6.2 在設計交叉報表時,有的時候在sql查詢的結果在交叉報表是空記錄,這裡的空記錄就是比如 年月 vehicle mieage 2011 2 1232 123 2011 2 23 123 2011 3 23 12 上面是你的sql查詢的結果,但交叉報表顯示時,按日期分組時,...