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