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設定當前時間為預設值的方法MySql
- MYSQL中給時間列設定預設值MySql
- ${VAR:=預設值}和${VAR:-預設值} 區別
- mysql datetime增加預設值MySql
- MySQL修改欄位預設值MySql
- pydantic 欄位的預設值設定獲取當前時間
- MySQL欄位預設值設定詳解MySql
- Recoil 預設值及資料級聯的使用
- [轉]MySQL的datetime設定當前時間為預設值及 triger 一例MySql
- HTML 元素的預設值HTML
- 【譯】GOPATH 的預設值Go
- MySQL-修改欄位型別、設定預設值,以及新增註釋MySql型別
- HTML常用元素的預設值HTML
- sqlserver 修改列的預設值SQLServer
- 表列新增預設值的方法
- MySQL5.7中的sql_mode預設值MySql
- Python中如何給字典設定預設值Python
- Laravel 生成 url,預設值Laravel
- HTTP請求預設值HTTP
- MySQL text型別不允許有預設值MySql型別
- 求助:JSF中下拉框中如何控制預設狀態當前值選中?JS
- Sqlserver的欄位datetime型別預設值設為getdate()時,設值毫秒為000SQLServer型別
- ES6小技巧 - 使用解構賦值設定函式引數預設值賦值函式
- JavaScript 中物件解構時指定預設值JavaScript物件
- sql設定欄位預設值SQL
- django 設定預設值到SQLDjangoSQL
- 非空+預設值——一種選擇方案思路
- MYSQL中怎樣設列的預設值為Now()的介紹MySql
- 【C++】引數的預設值C++
- css的border屬性預設值CSS
- C#實現函式預設值和C#4.0實現預設值C#函式
- vue中select的使用以及select設定預設選中Vue
- mysql 5.7 vs 8.0預設值變化(筆記)MySql筆記
- CSS border屬性預設值CSS
- Python中的預設引數值Python
- Oracle中NLS_LANG的預設值Oracle
- SQL SERVER檢視列的預設值SQLServer
- oracle時間欄位預設值,hibernate對映Oracle