翻譯|使用教程|編輯:吳園園|2020-05-25 09:28:44.530|閱讀 959 次
概述:在今天的文章中,我們將學習MySQL的嚴格SQL模式的后果,以及如何使用Navicat for MySQL 15查看和設置它。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat for MySQL是一套管理和開發 MySQL 或 MariaDB 的理想解決方案。數據傳輸、數據同步和結構同步讓你以低成本輕松快速地遷移數據。提供詳細的指引,在各種數據庫之間傳輸數據。比對和同步數據庫的數據和結構。只需幾秒鐘就能設置和部署比對,并獲得你要運行更改的詳細腳本。
第1部分:嚴格的SQL模式
當您不為非null列提供值時出現錯誤可能是造成挫敗感的巨大根源。有一種方法可以通過為這些列設置默認值來最大程度地減少此類錯誤的發生。似乎很容易解決,但在所有方面,細節都是魔鬼。您必須小心,不要為了簡化INSERT而向表中添加一堆通用且無用的數據。在今天的博客中,我們將學習MySQL的嚴格SQL模式的后果,以及如何使用Navicat for MySQL 15查看和設置它。在第2部分中,我們將介紹何時使用默認值(何時不使用默認值)。
嚴格的SQL模式和調整后的值
在MySQL中,您可以通過啟用嚴格SQL模式來控制MySQL如何處理數據更改語句(例如INSERT或UPDATE)中的無效值或缺失值。當要插入的新行不包含其定義中沒有顯式DEFAULT子句的非NULL列的值時,缺少值。如果嚴格模式無效,MySQL 將為無效或缺失值插入調整后的值,并產生警告。調整值的示例包括一個空字符串,零和一個注冊日期為00:00:00的時間戳記/日期。
很明顯,調整后的值可能會破壞默認值的整個方面。因此,通常最好激活嚴格的SQL模式并在適當的地方提供默認值。在Navicat中,您可以在服務器監視器的“變量”選項卡上檢查SQL模式的當前值。您可以在主菜單中的“工具”>“服務器監視器”下找到它。
如果存在STRICT_ALL_TABLES或STRICT_TRANS_TABLES,則啟用嚴格SQL模式。在決定使用哪種格式時,請注意后者更為寬容,因為如果缺少值,MySQL會為列數據類型插入適當的調整值,并生成警告而不是錯誤。此外,語句的處理繼續進行。同時,無效值被轉換為最接近的有效值。
嚴格的SQL模式運行
讓我們使用Sakila示例數據庫將嚴格SQL模式與默認SQL模式進行比較。actor表不允許任何列中都為空,如“ 非空”標題下的復選框所示:
如果我們使用SET命令為當前會話禁用嚴格SQL模式,并執行僅提供last_name的INSERT,則數據庫會接受它,但為first_name提供空字符串:
如果我們重新激活嚴格模式,則相同的INSERT現在會失敗,并顯示一條錯誤消息:
結論
在今天的文章中,我們了解了MySQL的嚴格SQL模式的后果,以及如何使用Navicat for MySQL 15對其進行查看和設置。在第2部分中,我們將介紹何時以及何時使用默認值沒有意義。有想要購買正版授權的朋友,歡迎
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: