一、mysql實(shí)際行數(shù)和顯示的行數(shù)不一致的原因
1、存在空行或重復(fù)行
當(dāng)數(shù)據(jù)庫(kù)表中存在空行或者重復(fù)行時(shí),這些行并不會(huì)被直接顯示出來。通過使用SELECT語句時(shí),可以添加去重、排序等操作,從而導(dǎo)致顯示行數(shù)與實(shí)際行數(shù)不同。解決方法是使用去重等操作來清除空行或重復(fù)行,使得查詢結(jié)果更加準(zhǔn)確。
2、存在觸發(fā)器、存儲(chǔ)過程
數(shù)據(jù)庫(kù)表中可能設(shè)置了觸發(fā)器、存儲(chǔ)過程等,它們可能會(huì)對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行添加、修改、刪除等操作,在這種情況下使用 SELECT 顯示的結(jié)果與實(shí)際的行數(shù)也可能不同。解決方法是在編寫SQL時(shí)將觸發(fā)器、存儲(chǔ)過程等考慮在內(nèi),并結(jié)合具體情況進(jìn)行優(yōu)化。
3、數(shù)據(jù)過于龐大
數(shù)據(jù)庫(kù)表中的數(shù)據(jù)可能過于龐大,無法一次性全部顯示出來,需要使用 LIMIT 等語句對(duì)數(shù)據(jù)進(jìn)行限制和切分。解決方法是使用LIMIT、OFFSET等語句來對(duì)數(shù)據(jù)進(jìn)行分頁(yè)操作,并結(jié)合索引等方式來優(yōu)化查詢速度。
二、mysql概述
1、簡(jiǎn)介
MySQL Server 的名列前茅版由瑞典公司 MySQL AB 在 1995 年發(fā)布,該公司的創(chuàng)始人為 David Axmark、Allan Larsson 和 Michael Widenius。MySQL 的名字源自 Widenius 的女兒 My。MySQL 項(xiàng)目采用 GNU 通用公共許可 (GPL)在 2000 年作為開源發(fā)布。到 2001 年,MySQL 有超過 200 萬次的有效安裝;到 2004 年,該軟件每天的下載超過 3 萬次。MySQL 于 2008 年被 Sun Microsystems 以10億美元收購(gòu)。當(dāng) Oracle 于 2009 年收購(gòu) Sun Microsystems 時(shí),它也獲得了 MySQL 的所有權(quán)。如今,MySQL 是使用較廣泛的開源關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。
2、特點(diǎn)
使用C和C++編寫,并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性支持多種操作系統(tǒng),如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等為多種編程語言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等支持多線程,充分利用CPU資源優(yōu)化的SQL查詢算法,有效地提高查詢速度提供多語言支持,常見的編碼如GB2312、BIG5、UTF8提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具大型的數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f條記錄的大型數(shù)據(jù)庫(kù)支持多種存儲(chǔ)引擎MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語言形式Mysql是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的Mysql系統(tǒng)在線DDL更改功能復(fù)制全局事務(wù)標(biāo)識(shí)復(fù)制無崩潰從機(jī)復(fù)制多線程從機(jī)3、常用術(shù)語
冗余:用來表示存儲(chǔ)兩倍的數(shù)據(jù), 但會(huì)使數(shù)據(jù)訪問更快,相當(dāng)于redis。主鍵:用來執(zhí)行每個(gè)表的關(guān)鍵性數(shù)據(jù),并且,每個(gè)表中只有一個(gè)主鍵。外鍵:這應(yīng)該是mysql的關(guān)鍵,使用外鍵來關(guān)聯(lián)不同表。復(fù)合鍵:將多個(gè)鍵組合一起來作為索引值, 一般用于復(fù)合索引。索引:借用一組值,來對(duì)表進(jìn)行排序,可以比作書的目錄。參照完整性:參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。4、系統(tǒng)組成
MySQL客戶端:與服務(wù)器進(jìn)行通信,向服務(wù)器發(fā)送執(zhí)行SQL語句的請(qǐng)求;MySQL服務(wù)器:接收客戶端的請(qǐng)求并處理,然后返回執(zhí)行結(jié)果;存儲(chǔ)引擎(Storage Engine):將數(shù)據(jù)存儲(chǔ)在磁盤或內(nèi)存中,并支持各種操作;物理層:MySQL面向用戶提供了各種應(yīng)用程序和工具,如管理員工具、備份工具等等。5、服務(wù)器的語言
SQL是結(jié)構(gòu)化查詢語言(Structured Query Language),是關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語言,它具體包含以下5個(gè)部分:
數(shù)據(jù)查詢語言(DQL):就是用來搜索數(shù)據(jù)庫(kù)里面的數(shù)據(jù),也稱為“數(shù)據(jù)檢索語句”,以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣5在應(yīng)用程序出。保留字 SELECT 是 DQL(也是所有 SQL)用得非常多的動(dòng)詞,其他 DQL 常用的保留字有 WHERE,ORDER BY,GROUP BY 和 HAVING。數(shù)據(jù)操作語言(DML):對(duì)數(shù)據(jù)表里的數(shù)據(jù)進(jìn)行添加,修改,刪除。其語句包括動(dòng)詞 INSERT,UPDATE 和 DELETE。它們分別用于添加,修改和刪除表中的 行。也稱為動(dòng)作查詢語言。數(shù)據(jù)定義語言(DDL):創(chuàng)建刪除修改數(shù)據(jù)庫(kù)(表,列,索引等…)其語句包括動(dòng)詞 CREATE 和 DROP。在數(shù)據(jù)庫(kù)中創(chuàng)建新表或刪除表(CREATE TABLE 或 DROP TABLE);為表加入索引等。事務(wù)控制語言(TCL):它的語句能確保被 DML 語句影響的表的所有行及時(shí)得以更新。TCL 語句包括 BEGIN TRANSACTION,COMMIT 和 ROLLBACK。數(shù)據(jù)控制語言(DCL):它的語句通過 GRANT(授予權(quán)限)或 REVOKE(撤銷權(quán)限)獲得許可,確定單個(gè)用戶和 用戶組對(duì)數(shù)據(jù)庫(kù)對(duì)象的操作權(quán)限。6、選擇MySQL的五大理由
每個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)都有其忠實(shí)的粉絲社區(qū),但是MySQL無疑是名列前茅。MySQL確實(shí)為用戶提供了客觀優(yōu)勢(shì)。
簡(jiǎn)單明了:MySQL屬于用戶友好型。SQL及其語句的基本知識(shí)將允許與MySQL Server進(jìn)行高效交互。您可以查詢和更新數(shù)據(jù)以及管理數(shù)據(jù)庫(kù)。開源:根據(jù)GPL(GNU公共許可證),MySQL是免費(fèi)使用和修改的。該許可證確定免費(fèi)用戶的權(quán)利。商業(yè)許可證也可用–它允許在商業(yè)應(yīng)用程序中使用MySQL軟件,并且您不受GPL法規(guī)的約束。可擴(kuò)展且快速:MySQL體系結(jié)構(gòu)允許該系統(tǒng)支持較早大的應(yīng)用程序。它提供適當(dāng)?shù)乃俣?,并具有非常低的?nèi)存泄漏問題。而且,它可以管理表中幾乎任何數(shù)量的數(shù)據(jù)(50+百萬行)。初始文件大小限制為4GB,但可以增加到最大8TB數(shù)據(jù)。兼容多個(gè)平臺(tái) :MySQL Server與Microsoft Windows,Apple Macintosh OS X,Ubuntu和多個(gè)Unix選項(xiàng)兼容,例如AIX,BSDI,F(xiàn)reeBSD,HP-UX,OpenBSD,Net BSD,SGI Iris和Sun Solaris。高度安全:世界各地的專家都將MySQL視為最安全,最可靠的DBMS。其數(shù)據(jù)安全性選項(xiàng)可確保對(duì)任何入侵者進(jìn)行適當(dāng)?shù)臄?shù)據(jù)保護(hù)。延伸閱讀1:MySQL的優(yōu)勢(shì)
成本低:開放源代碼,社區(qū)版本可以免費(fèi)使用。性能良:執(zhí)行速度快,功能強(qiáng)大。操作簡(jiǎn)單:安裝方便快捷,有多個(gè)圖形客戶端管理工具(MySQL Workbench/Navicat、MySQLFront, SQLyog等客戶端)和一些集成開發(fā)環(huán)境。