MySQL 核心知識點梳理(1)

目錄

1.什么是數據庫?

關系型數據庫

非關系型數據庫

2.Mysql出現性能差的原因?

3.MySQL的內聯,左外聯,右外連接的區別

?4.為什么要有三大范式

建表需要考慮的問題?

char和varchar的區別

blob和text的區別?

DATETIME和TIMESTAMP的區別

in和exists的區別

null值陷

5.記錄貨幣用什么類型比較好

6.怎么存儲emoji

7.DROP,DELETE,TRUNCATE的區別?

8.UNION和UNIONALL的區別

9.一條sql的執行流程

10.mysql中bin目錄下的執行文件

11.隱式數據類型轉換


1.什么是數據庫?

數據庫是按照數據結構來組織、存儲和管理數據的倉庫,它是計算機系統中用于高效存儲和處理數據的核心組件。分為關系型數據庫和非關系型數據庫.

關系型數據庫

采用關系模型(二維表格結構)來組織數據,強調數據的一致性和完整性,支持 SQL(結構化查詢語言)進行操作。

  • MySQL:開源免費,性能穩定,易于部署和使用,是 Web 應用開發中最常用的數據庫之一。
  • PostgreSQL:功能強大的開源關系型數據庫,支持復雜的數據類型和高級查詢,對事務的支持非常完善,適合對數據一致性要求高的企業級應用
  • Oracle:商業級關系型數據庫,性能卓越,安全性高,支持大規模數據存儲和并發處理,廣泛應用于大型企業的核心業務系統,如銀行的交易系統、電信的客戶管理系統等。
  • SQL Server:微軟推出的關系型數據庫,與 Windows 系統和.NET 平臺兼容性好,適合在微軟技術棧環境下開發的應用,如企業內部的管理系統等。

非關系型數據庫

  • MongoDB:文檔型數據庫,數據以類似 JSON 的文檔形式存儲,結構靈活,適合存儲非結構化或半結構化數據,如博客文章、用戶評論、產品描述等。
  • Redis:內存數據庫,讀寫速度極快,支持多種數據結構(字符串、哈希、列表、集合等),常被用作緩存、會話存儲、實時排行榜等場景。例如,電商網站的商品詳情頁緩存可以用 Redis 來提升訪問速度。
  • Cassandra:分布式列存儲數據庫,具有高可用性、高擴展性和容錯能力,適合處理海量數據,如社交網絡的用戶行為數據、物聯網設備產生的海量日志數據等。
  • Elasticsearch:基于 Lucene 的搜索引擎數據庫,擅長全文檢索和數據分析,常用于日志分析、商品搜索、企業內部文檔檢索等場景。

2.Mysql出現性能差的原因?

可能是 SQL 查詢使用了全表掃描,也可能是查詢語句過于復雜,如多表 JOIN 或嵌套子查詢。

也有可能是單表數據量過大。

鎖和并發問題

通常情況下,添加索引就能解決大部分性能問題。對于一些熱點數據,還可以通過增加 Redis 緩存,來減輕數據庫的訪問壓力。

3.MySQL的內聯,左外聯,右外連接的區別

連接類型保留哪邊的所有行?匹配不到時如何處理?結果集特點
INNER JOIN都不保留直接丟棄只保留兩邊都匹配上的行
LEFT JOIN保留左表所有行右表補 NULL左表全有,右表補空
RIGHT JOIN保留右表所有行左表補 NULL右表全有,左表補空

?4.為什么要有三大范式

第一范式: 列不可再分(原子性)

第二范式::非主屬性必須完全依賴于主鍵

第三范式:非主屬性不能依賴于其他的非主屬性

三大范式主要是防止數據冗余?

建表需要考慮的問題?

首先需要考慮表是否符合數據庫的三大范式,確保字段不可再分,消除非主鍵依賴,確保字段僅依賴于主鍵等。

然后在選擇字段類型時,應該盡量選擇合適的數據類型。

在字符集上,盡量選擇 utf8mb4,這樣不僅可以支持中文和英文,還可以支持表情符號等。

當數據量較大時,比如上千萬行數據,需要考慮分表。比如訂單表,可以采用水平分表的方式來分散單表存儲壓力。

char和varchar的區別

varchar是可變型的字符類型 char是固定長度

blob和text的區別?

blob是二進制的數據 比如圖片,視頻,音頻等,text是用來存儲文本數據

DATETIME和TIMESTAMP的區別

DATETIME 直接存儲日期和時間的完整值,與時區無關。默認是null

TIMESTAMP 存儲的是 Unix 時間戳,1970-01-01 00:00:01 UTC 以來的秒數,受時區影響。默認是當前的時間

in和exists的區別

in是子查詢,將子查詢的結果集用于外部內容,適用于結果集較小的情況?

in會有性能瓶頸,因為會建一個臨時表 存儲到內存中

exists會對外部每一行執行一次子查詢,關注點在于子查詢是否返回行 是則為ture,適用于子查詢結果集比較大的情況?

null值陷

IN: 如果子查詢的結果集中包含?NULL?值,可能會導致意外的結果。例如,WHERE column IN (subquery),如果?subquery?返回?NULL,則?column IN (subquery)?永遠不會為真,除非?column?本身也為?NULL

EXISTS: 對?NULL?值的處理更加直接。EXISTS?只是檢查子查詢是否返回行,不關心行的具體值,因此不受?NULL?值的影響。

5.記錄貨幣用什么類型比較好

DECIMAL

6.怎么存儲emoji

一般用UTF-8mb4字符集

7.DROP,DELETE,TRUNCATE的區別?

DROP 是物理刪除,用來刪除整張表,包括表結構,且不能回滾。

DELETE 支持行級刪除,可以帶 WHERE 條件,可以回滾。

TRUNCATE 用于清空表中的所有數據,但會保留表結構,不能回滾。

8.UNION和UNIONALL的區別

UNION會去重?

9.一條sql的執行流程

SQL 文本↓
[連接器] 認證、維持連接↓
[查詢緩存] 8.0 已廢棄↓
[解析器] 拆詞 → 語法樹↓
[預處理器] 語義檢查、權限校驗↓
[優化器] 選索引、生成執行計劃↓
[執行器] 調存儲引擎接口↓
[存儲引擎] 讀磁盤 → 內存 → 返回行↓
客戶端收到結果

10.mysql中bin目錄下的執行文件

  • mysql:用于連接 MySQL 服務器
  • mysqldump:用于數據庫備份,對數據備份、遷移或恢復時非常有用
  • mysqladmin:用來執行一些管理操作,比如說創建數據庫、刪除數據庫、查看 MySQL 服務器的狀態等。
  • mysqlcheck:用于檢查、修復、分析和優化數據庫表,對數據庫的維護和性能優化非常有用。
  • mysqlimport:用于從文本文件中導入數據到數據庫表中,適合批量數據導入。
  • mysqlshow:用于顯示 MySQL 數據庫服務器中的數據庫、表、列等信息。
  • mysqlbinlog:用于查看 MySQL 二進制日志文件的內容,可以用于恢復數據、查看數據變更等

11.隱式數據類型轉換

當一個整數和一個浮點數相加時,整數會被轉換為浮點數。

SELECT 1 + 1.0; -- 結果為 2.0

當一個字符串和一個整數相加時,字符串會被轉換為整數。

SELECT '1' + 1; -- 結果為 2

隱式轉換會導致意想不到的結果,最好通過顯式轉換來規避

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915590.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915590.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915590.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Word快速文本對齊程序開發經驗:從需求分析到實現部署

在日常辦公中,文檔排版是一項常見但耗時的工作,尤其是當需要處理大量文本并保持格式一致時。Microsoft Word作為最流行的文檔處理軟件之一,雖然提供了豐富的排版功能,但在處理復雜的文本對齊需求時,往往需要重復執行多…

力扣面試150(34/150)

7.20 242. 有效的字母異位詞 給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的 字母異位詞 我的思路: 遍歷s到一個sMap,字母次數的方式遍歷t,判斷t中的char是否在sMap當中,如果在的話次數-1,判…

軟件工程:可行性分析的任務及報告

簡介 本博客圍繞軟件工程中的第一關——“可行性分析的任務及報告”展開,詳細解析了可行性分析的基本概念、分析任務、四類可行性(技術、經濟、操作、社會)以及可行性分析報告的結構與撰寫要點。通過豐富的理論基礎與圖示支持,幫…

STM32與樹莓派通信

STM32 與樹莓派(Raspberry Pi)的通信常見方案及實現步驟:1. UART 串口通信(最簡單)適用場景:短距離、低速數據交換(如傳感器數據、調試信息)。 硬件連接:STM32引腳樹莓派…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 數據持久化到Mysql

大家好,我是java1234_小鋒老師,最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程,持續更新中,計劃月底更新完,感謝支持。今天講解數據持久化到Mysql 視頻在線地址&#xff…

【Java EE】多線程-初階-Thread 類及常見方法

多線程-初階2. Thread 類及常??法2.1 Thread 的常?構造?法2.2 Thread 的?個常?屬性2.3 啟動?個線程 - start()2.4 中斷?個線程2.5 等待?個線程 - join()2.6 獲取當前線程引?2.7 休眠當前線程本節?標? 認識多線程? 掌握多線程程序的編寫? 掌握多線程的狀態? 掌握…

LVS技術知識詳解(知識點+相關實驗部署)

目錄 1.1 LVS簡介 1.2 LVS體系結構 1.3 LVS相關術語 1.4 LVS工作模式 1.5 LVS工作原理 1.6 LVS調度算法 2.LVS相關實驗部署 2.1 lvs軟件相關信息 2.1.1 ipsadm常見參數 2.1.2 試例 2.2 LVS部署NAT模式 2.2.1 實驗環境 2.2.2 實驗步驟 2.2.2.1 實驗基礎環境 2.2.…

芋道導入邏輯

一、代碼 PostMapping("/import")Operation(summary "導入用戶")Parameters({Parameter(name "file", description "Excel 文件", required true),Parameter(name "updateSupport", description "是否支持更新&a…

gradle7.6.1+springboot3.2.4創建微服務工程

目錄 一、創建主工程cloud-demo并刪除src目錄 二、創建子工程user-service/order-service 三、更改父工程build.gradle文件 四、子工程使用mybatis框架 五、子工程使用mybatis-plus框架 六、相關數據庫創建 七、最終目錄結構 一、創建主工程cloud-demo并刪除src目錄 二、…

電腦windows系統深度維護指南

🖥? 電腦系統全方位維護指南 預防故障 提升性能 延長壽命 🔍 引言:為什么需要系統維護? 電腦如同汽車,定期保養可避免: ? 突發藍屏死機 ? 系統卡頓崩潰 ? 硬件過早損壞 ? 數據丟失風險 本指南提供…

字節內部流傳的數據分析手冊

之前2領導整理內部分享的,所以很多內部業務的分析,比如工作中怎么落地、怎么推進。(數據都是脫敏的哈) **里面的內容都偏應用,比如產品迭代怎么做數據評估、用戶增長靠什么指標拆解、AB實驗怎么設計、運營活動怎么閉環。**數據分析都是很實際…

Nginx Proxy Manager + LB + Openappsec + Web UI 構建下一代WAF

Nginx Proxy Manager + LB + Openappsec + Web UI部署 一、環境介紹 二、系統參數優化 三、安裝docker 四、創建docker網絡 五、創建測試容器 六、部署NPM和openappsec 1、下載docker-compose文件 2、拉取相關鏡像 3、web UI 獲取token 4、修改compose文件并安裝 七、登陸NPM配…

【React】npm install報錯npm : 無法加載文件 D:\APP\nodejs\npm.ps1,因為在此系統上禁止運行腳本。

使用vsCode打開react項目安裝依賴時報錯,把terminal打開的powershell改成command prompt即可

深入解析C#裝箱轉換:值類型如何“變身”為引用類型?

當你將 int i 賦值給 object oi 時, 看似簡單的操作背后,藏著一場精密的類型轉換革命!🔑 一、核心概念:什么是裝箱? 裝箱(Boxing) 是C#中的一種隱式轉換機制,它將值類型&…

java list 與set 集合的迭代器在進行元素操作時出現數據混亂問題及原因

為什么 List 和 Set 迭代器刪除結果不同?1. List 和 Set 的本質差異List(如 ArrayList):有序集合,元素按插入順序存儲,允許重復元素。迭代器遍歷時,元素按索引順序返回。刪除操作(通…

大語言模型:人像攝影的“達芬奇轉世”?——從算法解析到光影重塑的智能攝影革命

導言在攝影術誕生之初,達芬奇或許無法想象,他對于光影、比例和解剖的嚴謹研究,會在數百年后以另一種形式重生。今天,當攝影師面對復雜的光線環境或苦苦尋找最佳構圖時,一位由代碼構筑的“光影軍師”正悄然降臨——大語…

Java——MyBatis從入門到精通:一站式學習指南

MyBatis從入門到精通:一站式學習指南 作為一款優秀的半自動ORM框架,MyBatis以其靈活的SQL控制和簡潔的配置方式,成為Java后端開發中持久層框架的首選。本文將從基礎概念到高級特性,全面講解MyBatis的使用方法,包含實用…

面試150 添加與搜索單詞--數據結構設計

思路 通過哈希法去實現,這里主要描述search的思路:如果’.‘不在word中,我們只需要去查詢word在不在set中。如果’.‘存在,我們對哈希中的字符串進行遍歷w,如果當前字符串的長度不等于word跳過,對word進行遍歷&#xf…

學習打卡網站(搭子版本)

概述 之前用了網上的一些學習打卡類app,基本都是收費的,而且有些自己想要的功能卻沒有,甚至還有廣告,正好暑假是個需要容易懶惰的時間,所以干脆自己做了一個能和學習搭子一起記錄計劃的小網站。 昨天早上開始寫&#x…

分享如何在Window系統的云服務器上部署網站及域名解析+SSL

最近看到阿里云的服務器有個199的活動,買了個2核4G帶寬5M的服務器,用于小網站的運營也足夠,于是就買一個,并且我還挑了個新加坡的站點,本想著運營獨立站,用新加坡的站點外網訪問會更友好一點。于是問題就來…