MySQL—表設計和聚合函數以及正則表達式

文章目錄

    • 一、第一范式(原子性)
    • 二、第二范式(消除部分依賴)
    • 三、第三范式(消除傳遞依賴)
    • 四、表設計
    • 五、聚合函數
    • 六、正則表達式

MySQL 的三大范式(1NF、2NF、3NF)是關系型數據庫設計的核心原則,用于減少數據冗余、消除插入/刪除/更新異常,確保數據一致性。以下是簡明解釋:

一、第一范式(原子性)

要求:每列的值必須是不可再分的原子值。
例如:出生日期這一列存了某年某月某日,但是把出生日期這列可以拆分為年,月,日,三列,這樣的列就不具有原子性。

二、第二范式(消除部分依賴)

要求:在滿足第一范式的基礎上,非主鍵列必須完全依賴整個主鍵(不能僅依賴主鍵的一部分)。
正例:
學生表:
學號,年齡,姓名。
學生選修成績表:
學號,課程編號,成績。
在學生表中,學號作為主鍵,通過學號,可以知道年齡,通過學號也可以知道姓名。這就是完全依賴。
在學生選修成績表中,學號和課程編號作為復合主鍵,通過這個復合主鍵可以唯一確定學生的成績。
反例:
學生選修課成績表:
學號,姓名,年齡,課程名,學分,成績。
這個表中學號作為主鍵,只有姓名和年齡完全依賴于學號主鍵,學分這個字段依賴于課程名,成績字段依賴于課程名和學號這樣的復合主鍵,所以這個表只能滿足部分依賴。

三、第三范式(消除傳遞依賴)

要求:在滿足第二范式的基礎上,非主鍵列必須直接依賴主鍵,不能通過其他非主鍵列間接依賴(消除傳遞依賴)。
反例:
學生表:學號,姓名,年齡,所在院校,學院電話,學院地址。
這個表中學號作為主鍵,只有姓名和年齡和學號是強相關的。
院校電話和院校地址是和所在院校強相關的。
存在的傳遞關系:
學號->所在院校->學院電話->院校地址。
解決辦法就是將學生表一分為二。
學生表:
學號,年齡,姓名,學院編號
學院表:
學院編號,學員名,學院電話,學院地址
用學院編號作為外鍵將兩張表聯系起來。
總結:

范式核心目標常見問題示例解決方案
1NF列原子性地址字段存復合信息拆分列
2NF消除部分主鍵依賴表的主鍵是組合鍵,非主鍵列依賴部分主鍵拆分表
3NF消除非主鍵間的傳遞依賴非主鍵列依賴其他非主鍵列拆分表,建立外鍵關聯

四、表設計

一對一模型:
在這里插入圖片描述
或者:
在這里插入圖片描述
一對多:
在這里插入圖片描述
在n端加入另一張表的主鍵。
多對多:
在這里插入圖片描述
例如學生運動會的模型如下:
(1)有若干個班級,每個班級包括班級號、班級名、專業、人數。
(2)每個班級有若干個運動員,運動員只能屬于一個班,包括運動員號、姓名、性別、年齡。
(3)有若干個比賽項目,包括項目號、名稱、比賽地點。
(4)每個運動員可參加多個比賽項目,且每個項目可有多人參加。
(5)要求能夠公布每個比賽項目的運動員名次與成績。
(6)要求能夠公布各個班級團體總分的名次和成績。
E-R圖:
在這里插入圖片描述

關系模型:
運動員(運動員號,班級號,姓名,性別,年齡)
班級(班級號,班級名,專業,人數)
比賽項目(項目號,比賽地點,名稱)
比賽(項目號,運動員號,成績,名次)

五、聚合函數

函數名作用描述是否忽略 NULL示例代碼(含 GROUP BY)
COUNT()統計行數或列值個數是(COUNT(*)除外)SELECT city, COUNT(*) FROM users GROUP BY city;
SUM()求數值列總和SELECT user_id, SUM(amount) FROM orders GROUP BY user_id;
AVG()求數值列平均值SELECT category, AVG(price) FROM products GROUP BY category;
MAX()返回列最大值SELECT user_id, MAX(order_date) FROM orders GROUP BY user_id;
MIN()返回列最小值`SELECT user_id, MIN(order_date) FROM
COUNT(DISTINCT)統計去重后的行數SELECT COUNT(DISTINCT city) FROM users;
HAVING對聚合結果二次過濾SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id HAVING total>1000;

六、正則表達式

維度符號/語法作用說明(一句話)示例片段
字符集[a-z]任意單個小寫字母[a-z]
[A-Z0-9]任意大寫字母或數字[A-Z0-9]
[^abc]除 a、b、c 外的任意單個字符[^abc]
[[:alnum:]]任意字母或數字(POSIX 類)[[:alnum:]]
元字符.匹配除換行外的任意單個字符a.c → abc, a3c
^匹配字符串開頭^abc
$匹配字符串結尾xyz$
\轉義保留字符,使其按字面匹配\. 匹配真實點
|邏輯“或”cat|dog
量詞*前一項 0 次或多次ab*c → ac, abc
+前一項 1 次或多次ab+c → abc, abbc
?前一項 0 次或 1 次ab?c → ac, abc
{n}前一項恰好 n 次a{3} → aaa
{n,m}前一項 n 到 m 次a{2,4} → aa, aaa
{n,}前一項至少 n 次a{2,} → aa, aaaa

示例1:查找 11 位手機號
SELECT * FROM users
WHERE phone REGEXP ‘^1[3-9][0-9]{9}$’;
示例二: 查找郵箱格式

SELECT * FROM users
WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$';

示例三:查找 18 位身份證號

SELECT * FROM users
WHERE id_card REGEXP '^[0-9]{17}[0-9Xx]$';

示例四:查找包含至少 1 個大寫字母的密碼字段

SELECT * FROM users
WHERE password REGEXP '[A-Z]';

完結。

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

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

相關文章

基于Electron打包jar成Windows應用程序

基于Electron打包jar成Windows應用程序簡介注意編譯及命令:運行效果登錄界面用戶管理界面界面全屏鎖屏界面文檔查看界面簡介 本文介紹了一種將maven jar包打包成Windows下EXE可執行程序的方法。 Maven打包Java Web應用成jar,Electron封裝jar成Windows …

Autosar RTE實現觀測量生成-基于ETAS軟件

文章目錄前言觀測量定義arTypedPerInstanceMemoryPorts Measurable工具鏈配置及使用Port中的配置arTypedPerInstanceMemory觀測量生成文件分析總結前言 之前我們在XCP中,對于標定量和觀測量并沒有嚴格按照Autosar標準中定義,Autosar RTE中對標定量和觀測…

【REACT18.x】creat-react-app在添加eslint時報錯Environment key “jest/globals“ is unknown

今天在創建新項目的時候,給cra創建的項目添加eslint支持,出現如下報錯 添加eslint npx eslint --init頁面報錯 Compiled with problems:ERROR [eslint] package.json eslint-config-react-app/jest#overrides[0]:Environment key "jest/globals&…

Linux的例行性工作 -- (練習)

1、atd和crond兩個任務管理程序的區別 答: atd 專為一次性任務設計,允許用戶在特定未來時間點(絕對或相對時間)執行單次命令后就結束。 crond 則是周期性任務的調度核心,通過配置文件(crontab)實…

《Java語言程序設計》1.6 復習題

1.6.1 什么是Java語言規范?計算機有嚴格的使用規則。如果編寫程序時沒有遵循這些規則,計算機就不能理解程序。Java語言規范和Java API定義了Java的標準。Java語言規范(Java language specification)是對Java程序設計語言的語法和語義的技術定義。應用程序接口(Appl…

【機器學習深度學習】什么是量化?

目錄 前言 一、量化的基本概念 1.1 量化對比示例 1.2 量化是如何實現的? 二、為什么要進行量化? 2.1 解決模型體積過大問題 2.2 降低對算力的依賴 2.3 加速模型訓練和推理 2.4 優化訓練過程 2.5 降低部署成本 小結:量化的應用場…

告別 T+1!解密金融級實時數據平臺的構建與實踐

在數字金融浪潮下,數據處理的“實時性”已不再是加分項,而是逐漸成為決定業務價值的核心競爭力。然而,金融機構在追求實時的道路上,往往陷入一個新的困境:實時分析系統與離線大數據平臺形成了兩套獨立的“煙囪”&#…

[Python] -項目實戰7- 用Python和Tkinter做一個圖形界面小游戲

一、為什么從小游戲入門GUI? 趣味性強:小游戲直觀、有趣,一學就上手。 系統掌握事件驅動:了解按鈕點擊、鍵盤響應、圖形刷新機制。 扎實基礎:為日后構建更復雜應用奠定 GUI 編程基礎。 二、選定游戲:猜數字小游戲 ?? 這個小游戲界面簡單,核心機制是:3 個按鈕分別…

【18】MFC入門到精通——MFC(VS2019)+ OpenCV 顯示圖片的3種方法

MFC (VS2019)+ OpenCV,顯示圖片的3種方法 1 方法介紹 2 方法一:嵌套OpenCV窗口顯示圖片 2.1 建立供工程 添加控件 2.2 引用頭文件 2.3 找到OnInitDialog()函數,在其中添加如下代碼 2.4 在button觸發函數中加入代碼(就是你雙擊button進入的函數) 2.5 注意事項 3 方法二:…

以“融合進化 智領未來”之名,金倉Kingbase FlySync:國產數據庫技術的突破與創新

目錄開篇:國產數據庫的歷史性跨越一、KFS 產品定位及發展歷程回顧1.1 Kingbase FlySync 發展1.2 Kingbase FlySync與Oracle GoldenGate的對比分析1.2.1 Kingbase FlySync 功能優勢1.2.2 技術架構對比1.2.3 性能與擴展性二、數字化時代的新挑戰2.1 決策實時性要求越來…

服務器配置錯誤漏洞

文章目錄一、文件解析漏洞1.Apache HTTPD多后綴解析漏洞二、目錄遍歷漏洞1.Apache目錄遍歷漏洞2.Nginx目錄穿越漏洞服務器配置錯誤漏洞指因服務器(含系統、Web服務、數據庫等)的參數設置、權限分配、組件配置等不當,導致的安全問題&#xff0…

大模型預測輸尿管上段結石技術方案大綱

目錄 1. 術前階段 2. 術中階段 3. 術后階段 4. 并發癥風險預測 5. 根據預測定手術方案 6. 麻醉方案 7. 術后護理 8. 統計分析 9. 技術驗證方法 10. 實驗證據 11. 健康教育與指導 12. 完整術方案流程圖(Mermaid) 1. 術前階段 步驟 關鍵要素 可編輯字段 1.1 影像采集 CT-IVU / …

docker compose 編排容器 mysql Springboot應用

寫一個docker-compose.yml文件 內容如下: services:db:image: "docker.xuanyuan.me/library/mysql:8.3.0"restart: unless-stoppedhostname: dbports:- "3306:3306"container_name: mysqlenvironment:- "MYSQL_ROOT_PASSWORD1234"m…

React 中 props 的最常用用法精選+useContext

? React 最常用 props 用法 10 例? 1. 傳遞字符串 / 數字 / 布爾值function UserCard({ name, age, isVip }) {return (<div>{name} - {age} - {isVip ? VIP : 普通用戶}</div>); }<UserCard name"張三" age{18} isVip{true} />? 2. 傳遞函數&…

離散型制造企業的可視化破局:設備OEE動態看板與工藝路徑模擬實踐

內容摘要離散型制造企業面臨著設備效率低下、生產過程不透明、工藝路徑復雜等諸多挑戰。如何通過可視化手段提升設備效率和生產透明度&#xff0c;成為企業亟待解決的問題。設備整體效率&#xff08;OEE&#xff09;動態看板和工藝路徑模擬是兩個關鍵的可視化工具&#xff0c;能…

在Tailwind Css中如何書寫flex布局

僅供參考 文章目錄一、啟用 flex 布局二、行內 flex 布局三、方向控制四、對齊方式五、子元素控制1、控制子元素的寬度是否可伸縮2、控制子元素順序3、控制子元素間的間隙4、控制子元素是否可換行顯示一、啟用 flex 布局 設置 class“flex” 啟用 flex 布局 <template>…

交通出行大前端與 AI 融合:智能導航與出行預測

交通出行類大前端應用&#xff08;導航APP、打車軟件、公交地鐵小程序等&#xff09;是連接用戶與出行服務的核心載體&#xff0c;其核心價值在于“高效規劃路徑、精準規避擁堵、適配個性化需求”。傳統導航依賴固定規則&#xff08;如“最短路徑優先”&#xff09;和歷史數據&…

csc(x)積分推導

在MATLAB中同時繪制 sin?(x), csc(x) 和 ln?∣tan?(x/2)∣的函數圖像&#xff0c;需要處理函數的奇點&#xff08;如 csc?(x) 在 sin?(x)0 時無定義&#xff0c;ln?∣tan?(x/2)∣ 在 xkπ 時無定義&#xff09;&#xff08;deepseek生成matlab代碼&#xff09;% 定義x范…

rtsp協議之.c++實現,rtsp,rtp協議框架,模擬多路音視頻h264,265,aac,數據幀傳輸,接收(二)

rtsp協議之.c實現&#xff0c;rtsp&#xff0c;rtp協議框架&#xff0c;模擬多路音視頻h264&#xff0c;265&#xff0c;aac&#xff0c;數據幀傳輸&#xff0c;接收&#xff08;二&#xff09; 1、RTSP 服務器核心&#xff1a;處理 RTSP 會話管理、請求解析和響應生成 2、媒體…

網絡性能與應用性能的協同優化研究:基于小波變換與CNN的圖像分類系統

網絡性能與應用性能的協同優化研究&#xff1a;基于小波變換與CNN的圖像分類系統 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站。 摘要 本文研究了網絡性能&#xff08;延遲、帶寬、丟…