轉帖|行業資訊|編輯:鮑佳佳|2020-12-22 11:33:51.610|閱讀 960 次
概述:在今天的博客中,我們將了解MySQL的嚴格SQL模式的后果,以及如何使用Navicat for MySQL 15來查看和設置它。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat for MySQL 是管理和開發 MySQL 或 MariaDB 的理想解決方案。它是一套單一的應用程序,能同時連接 MySQL 和 MariaDB 數據庫,并與 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、騰訊云和華為云等云數據庫兼容。這套全面的前端工具為數據庫管理、開發和維護提供了一款直觀而強大的圖形界面。
第1部分:嚴格的SQL模式
沒有為不可為null列提供值時出現錯誤可能是造成挫敗感的巨大根源。通過為這些列設置默認值,可以最大限度地減少此類錯誤的發生。似乎很容易解決,但就如所有事情,細節都是魔鬼。您必須注意不要僅為了使INSERT更加簡單就向表中添加一堆通用的和無用的數據。在今天的博客中,我們將了解MySQL的嚴格SQL模式的后果,以及如何使用Navicat for MySQL 15來查看和設置它。在第2部分中,我們將介紹在什么情況下采用默認值(以及何時不采用)。
嚴格的SQL模式和調整后的值
在MySQL中,您可以通過打開嚴格SQL模式來控制MySQL如何處理數據更改語句(例如INSERT或UPDATE)中的無效值或缺失值。當要插入的新行不包含其定義中沒有顯式DEFAULT子句的不可為NULL列的值時,會出現缺少值。如果嚴格模式無效,MySQL會為無效或缺失值插入調整后的值并產生警告。調整值的示例包括一個空字符串,零和00:00:00 0000-00-00的時間戳/日期。
很明顯,調整后的值可能會破壞默認值的整體作用。因此,通常最好激活嚴格的SQL模式并在適當的地方提供默認值。在Navicat中,您可以在服務器監控器的“變量”選項卡上檢查SQL模式的當前值。您可以在主菜單中的“工具”>“服務器監控器”下找到它。
如果存在STRICT_ALL_TABLES或STRICT_TRANS_TABLES,則嚴格SQL模式已啟用。 在決定使用哪種格式時,請注意后者更為寬容,因為如果缺少值,MySQL會為列數據類型插入適當的調整值,并生成警告而不是錯誤。 而且,語句的處理繼續進行。 同時,無效值被轉換為最接近的有效值。
執行嚴格的SQL模式
讓我們使用Sakila示例數據庫將嚴格SQL模式與默認SQL模式進行比較。 actor表不允許任何列中為 null,如“不是 null”標題下的復選框所示:
如果我們使用SET命令為當前會話禁用嚴格SQL模式并執行僅提供last_name的INSERT,則數據庫會接受它,但為first_name提供空字符串:
如果我們重新激活嚴格模式,則相同的INSERT現在會失敗,并顯示一條錯誤消息:
總結
在今天的博客中,我們了解了MySQL嚴格SQL模式的影響,以及如何使用 Navicat for MySQL 15進行查看和設置。在第二部分中,我們將介紹何時使用或不使用默認值。
好消息!慧都17周年慶,隆重推出購正版軟件送蘋果手機、電腦、3C數碼等豪禮!.NET報表控件Navicat For MySql正版授權最高直降40935 元!更多優惠咨詢!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: