Navicat for MySQL 15使用教程:何時使用預設值以及如何選用恰當的預設值
Navicat for MySQL 是管理和開發 MySQL 或 MariaDB 的理想解決方案。它是一套單一的應用程式,能同時連線 MySQL 和 MariaDB 資料庫,並與 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里雲、騰訊雲和華為雲等雲資料庫相容。這套全面的前端工具為資料庫管理、開發和維護提供了一款直觀而強大的圖形介面。
您可能已經知道,在不可為null列上設定預設值有助於擺脫那些討厭的“Field 'xyz' doesn't have a default value”錯誤。希望您也意識到,防止發生錯誤資訊本身並不是提供預設值的有效理由。提供預設列值的原因很多,有些很好,有些則不怎麼好。我們在第1部分探討了MySQL嚴格SQL模式的影響,以及如何使用Navicat for MySQL 15對其進行檢視和設定。在今天的後續文章中,我們將探討何時使用預設值以及如何選用恰當的預設值。
為什麼不只允許Null值?
可以為null列不會像不可為null列那樣面臨有同樣的問題,那麼為什麼不在所有非鍵列中都允許null值呢?在許多情況下,將不可為null約束應用於列的目的是迫使填充該列的應用程式或系統提供值。有時,不可為null列可能包含稽核資訊,例如使用者ID或時間戳。無論哪種情況,您都在尋找有效的資料,而不僅僅是填充的資料。
這是一個重要的考慮因素,因為它帶出了生成有用的預設值以及前端驗證的重要性。我仍然記得我的第一個Web應用程式。它是用於收集了使用者詳細資訊,例如姓名,電子郵件和電話號碼。所有這些欄位都是必需的,因此聰明的使用者找到了各種規避輸入真實資訊的方法,例如輸入電話號碼111-111-1111和“Elmer J. Fudd”之類的名稱。
產生時間戳
現在,我們已經討論了為什麼值得盡您所能嘗試設定自動填充欄位,下面讓我們看一下生成值的常見示例:審計時間戳。
Sakila示例資料庫中的一些表具有last_update列。這些列應用timestamp資料型別;其值設定為MySQL CURRENT_TIMESTAMP函式的輸出。在Navicat Premium中(如下圖所示),您可以通過下拉選單設定預設值:
“預設”值設定記錄建立時的時間戳,而選中“根據當前時間戳更新”框則指示MySQL在每次更新操作時更新時間戳。
前哨值
在RDBMS中,前哨值(Sentinel Value)是具有特殊含義的值。 例如,年齡列中的值999表示它是未知的。 我還看到了使用“1900-01-01”作為未知日期的應用程式。 前哨值在您要分配“未知”值的情況下很有用,而null值表示“無值”。 並非每個人都喜歡哨兵值,因為使用資料庫的人員和應用程式必須知道所有哨兵值才能正確處理它們。
總結
儘管預設值以及引申開來的前哨值在組織良好的資料庫設計和開發中具有他們的地位和價值,但在分配值之前,應考慮每個值的用途。 僅僅依靠預設值來避免使用null可能不是一個足夠好的理由。
相關文章
- mysql datetime增加預設值MySql
- [轉]MySQL的datetime設定當前時間為預設值及 triger 一例MySql
- pydantic 欄位的預設值設定獲取當前時間
- ${VAR:=預設值}和${VAR:-預設值} 區別
- MySQL欄位預設值設定詳解MySql
- Recoil 預設值及資料級聯的使用
- 預設值的作用域
- 生成 URL 的 預設值
- HTML 元素的預設值HTML
- vue中select的使用以及select設定預設選中Vue
- Python中如何給字典設定預設值Python
- MySQL5.7中的sql_mode預設值MySql
- Sqlserver的欄位datetime型別預設值設為getdate()時,設值毫秒為000SQLServer型別
- HTML常用元素的預設值HTML
- MySQL text型別不允許有預設值MySql型別
- ES6小技巧 - 使用解構賦值設定函式引數預設值賦值函式
- HTTP請求預設值HTTP
- Laravel 生成 url,預設值Laravel
- sql設定欄位預設值SQL
- JavaScript 中物件解構時指定預設值JavaScript物件
- mysql 5.7 vs 8.0預設值變化(筆記)MySql筆記
- PowerApps 的表單中人員下拉選單怎麼設預設值APP
- 預設建構函式和帶預設值的建構函式不能同時存在函式
- 關於mysql設定varchar 欄位的預設值''和null的區別,以及varchar和char的區別MySqlNull
- 靜態方法和例項方法的區別以及如何恰當使用
- oracle增加欄位帶預設值Oracle
- 查詢oracle欄位預設值Oracle
- Golang技巧之預設值設定的高階玩法Golang
- [BUG反饋]新建欄位無法使用字元型預設值字元
- es6中的引數預設值
- jpa~為欄位新增insert的預設值
- -XX:PretenureSizeThreshold的預設值和作用淺析
- CSS變數的作用域和預設值CSS變數
- Recoil 中預設值的正確處理
- SharePoint 多行文字欄位設定預設值
- XamarinEssentials教程設定首選項Preferences的值
- Mybatis出現成員賦值都是null或者預設值MyBatis賦值Null
- webapi 設定swagger上請求引數的預設值WebAPISwagger