一、MYSQL什么時候返回空,什么時候返回NULL
在 MySQL 中,空值(Empty Value)和 NULL 值(Null Value)是兩個不同的概念。空值是表示某個字段沒有被賦值的情況,可以理解為“無值”,它是字符串、數字或日期/時間類型的一種特殊取值。例如,如果您在一個字符串類型的字段中插入空字符串或使用空值函數,則該字段將被視為“無值”,而不是NULL值。而 NULL 值則表示某個字段的值未知或不存在,可以理解為“缺失值”。例如,在向表中插入一條記錄時,如果某個字段沒有提供數據,則該字段將被視為 NULL 值。簡而言之,當你在查詢 MySQL 數據庫時,如果某個字段包含空值,則該字段的內容將顯示為空字符串(即返回空)。而如果該字段包含 NULL 值,則該字段的內容將顯示為 NULL 值。
二、MySQL概述
1、什么是MySQL
關系型數據庫,存儲的格式可以直觀地反映實體間的關系。關系型數據庫和常見的表格比較相似,關系型數據庫中表與表之間是有很多復雜的關聯關系的。常見關系型數據庫有Oracle,SQLServer,DB2,Mysql等。在輕量或者小型的應用中,使用不同的關系型數據庫對系統的性能影響不大,但是在構建大型應用時,則需要根據應用的業務需求和性能需求,選擇合適的關系型數據庫。
許多網站、應用程序和商業產品都使用MySQL 作為主要的關系數據存儲。MySQL 有 20 多年的社區開發和支持歷史,是一種安全可靠、穩定的基于 SQL 的數據庫管理系統。MySQL 數據庫適用于任務關鍵型應用程序、動態網站以及用于軟件、硬件和設備的嵌入式數據庫等用途 。
MySQL Server 的名列前茅版由瑞典公司 MySQL AB 在 1995 年發布,該公司的創始人為 David Axmark、Allan Larsson 和 Michael Widenius。MySQL 的名字源自 Widenius 的女兒 My。MySQL 項目采用 GNU 通用公共許可 (GPL)在 2000 年作為開源發布。到 2001 年,MySQL 有超過 200 萬次的有效安裝;到 2004 年,該軟件每天的下載超過 3 萬次。MySQL 于 2008 年被 Sun Microsystems 以10億美元收購。當 Oracle 于 2009 年收購 Sun Microsystems 時,它也獲得了 MySQL 的所有權。如今,MySQL 是使用較廣泛的開源關系數據庫系統。
2、選擇MySQL的五大理由
每個數據庫管理系統都有其忠實的粉絲社區,但是MySQL無疑是名列前茅。MySQL確實為用戶提供了客觀優勢。
簡單明了:MySQL屬于用戶友好型。SQL及其語句的基本知識將允許與MySQL Server進行高效交互。您可以查詢和更新數據以及管理數據庫。開源的:根據GPL(GNU公共許可證),MySQL是免費使用和修改的。該許可證確定免費用戶的權利。商業許可證也可用–它允許在商業應用程序中使用MySQL軟件,并且您不受GPL法規的約束。可擴展且快速:MySQL體系結構允許該系統支持較早大的應用程序。它提供適當的速度,并具有非常低的內存泄漏問題。而且,它可以管理表中幾乎任何數量的數據(50+百萬行)。初始文件大小限制為4 GB,但可以增加到最大8TB數據。兼容多個平臺 :MySQL Server與Microsoft Windows,Apple Macintosh OS X,Ubuntu和多個Unix選項兼容,例如AIX,BSDI,FreeBSD,HP-UX,OpenBSD,Net BSD,SGI Iris和Sun Solaris。高度安全:世界各地的專家都將MySQL視為最安全,最可靠的DBMS。其數據安全性選項可確保對任何入侵者進行適當的數據保護。3、MySQL最顯著的功能
MySQL非常知名和有用的功能包括以下幾點:
客戶端/服務器架構:客戶端/服務器系統涉及主數據庫MySQL Server和多個客戶端–應用程序。MySQL Server創建數據庫并定義每個表的關系??投伺c服務器通信,以使用特定的SQL語句請求和處理數據。這些任務可能包括查詢數據,添加和保存更改等。服務器應用程序在客戶端提供請求的信息。服務器和客戶端可以都在同一臺計算機或不同的計算機上:在后一種情況下,它們通過網絡(本地或Internet)進行通信??蛻舳?服務器體系結構對于所有大型數據庫系統都是典型的。ODBC支持:借助ODBC接口Connector / ODBC,您可以使用Delphi,Visual Basic和Windows下運行的其他標準語言之類的編程語言來尋址MySQL。SQL查詢和命令:為了有效地使用MySQL關系數據庫,可以使用視圖,觸發器和存儲過程。所有這些項目都是主要的SQL元素,有助于顯著管理大型數據庫。從5.0版開始,MySQL就一直支持這些元素。復寫:可以將MySQL數據庫的內容復制到其他計算機上。這樣,您可以保護數據免受系統故障的影響–可以在需要時用其副本替換數據庫。此外,此選項還可以提高數據庫查詢速度。事務:事務代表將多個操作作為一個塊執行。一個關鍵功能是要么在事務中正確執行所有操作,要么不能執行任何操作。因此,事務使程序員可以中斷/撤銷已執行的命令-這只是一個例子。通常,此功能可簡化所有過程。MySQL也支持事務,盡管不支持MyISAM表格式。但是,您可以在MySQL中應用其他格式并確保此有用的功能。外鍵約束:在MySQL數據庫中,InnoDB表完全支持外鍵約束。您可以確保表中的所有交叉引用都是有效和準確的。數據字典:MySQL包含無數的對象和有關這些對象的大量信息。這就是為什么它引入了專用數據字典來存儲有關那些MySQL數據庫對象的所有信息的原因。與以前的基于文件的元數據存儲相比,它是一種崩潰安全,集中式且更優化的格式。此外,訪問和工作也更加方便。4、應用環境
與其他的大型數據庫例如 Oracle、DB2、SQL Server等相比,MySQL [1] 自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有余,而且由于 MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。
Linux作為操作系統,Apache 或Nginx作為 Web 服務器,MySQL 作為數據庫,PHP/Perl/Python作為服務器端腳本解釋器。由于這四個軟件都是免費或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個穩定、免費的網站系統,被業界稱為“LAMP“或“LNMP”組合。
延伸閱讀1:字段為NULL時使用的運算符
當提供的查詢條件字段為 NULL 時,該命令可能就無法正常工作。為了處理這種情況,MySQL提供了三大運算符:
IS NULL: 當列的值是 NULL,此運算符返回 true。IS NOT NULL: 當列的值不為 NULL, 運算符返回 true。<=>: 比較操作符(不同于 = 運算符),當比較的的兩個值相等或者都為 NULL 時返回 true。