欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL表設(shè)計和聚合函數(shù)以及正則表達式示例詳解

 更新時間:2025年07月24日 08:31:51   作者:緣來如此?  
聚合函數(shù)在數(shù)據(jù)庫管理和分析中有著廣泛的應(yīng)用場景,下面這篇文章主要給大家介紹了關(guān)于MySQL表設(shè)計和聚合函數(shù)以及正則表達式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、第一范式(原子性)

要求:每列的值必須是不可再分的原子值。

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

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

要求:在滿足第一范式的基礎(chǔ)上,非主鍵列必須完全依賴整個主鍵(不能僅依賴主鍵的一部分)。

正例:
學(xué)生表:
學(xué)號,年齡,姓名。
學(xué)生選修成績表:
學(xué)號,課程編號,成績。
在學(xué)生表中,學(xué)號作為主鍵,通過學(xué)號,可以知道年齡,通過學(xué)號也可以知道姓名。這就是完全依賴。
在學(xué)生選修成績表中,學(xué)號和課程編號作為復(fù)合主鍵,通過這個復(fù)合主鍵可以唯一確定學(xué)生的成績。
反例:
學(xué)生選修課成績表:
學(xué)號,姓名,年齡,課程名,學(xué)分,成績。
這個表中學(xué)號作為主鍵,只有姓名和年齡完全依賴于學(xué)號主鍵,學(xué)分這個字段依賴于課程名,成績字段依賴于課程名和學(xué)號這樣的復(fù)合主鍵,所以這個表只能滿足部分依賴。

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

要求:在滿足第二范式的基礎(chǔ)上,非主鍵列必須直接依賴主鍵,不能通過其他非主鍵列間接依賴(消除傳遞依賴)。

反例:
學(xué)生表:學(xué)號,姓名,年齡,所在院校,學(xué)院電話,學(xué)院地址。
這個表中學(xué)號作為主鍵,只有姓名和年齡和學(xué)號是強相關(guān)的。
院校電話和院校地址是和所在院校強相關(guān)的。
存在的傳遞關(guān)系:
學(xué)號->所在院校->學(xué)院電話->院校地址。
解決辦法就是將學(xué)生表一分為二。
學(xué)生表:
學(xué)號,年齡,姓名,學(xué)院編號
學(xué)院表:
學(xué)院編號,學(xué)員名,學(xué)院電話,學(xué)院地址
用學(xué)院編號作為外鍵將兩張表聯(lián)系起來。
總結(jié):

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

四、表設(shè)計

一對一模型:

或者:

一對多:

在n端加入另一張表的主鍵。

多對多:

例如學(xué)生運動會的模型如下:

(1)有若干個班級,每個班級包括班級號、班級名、專業(yè)、人數(shù)。
(2)每個班級有若干個運動員,運動員只能屬于一個班,包括運動員號、姓名、性別、年齡。
(3)有若干個比賽項目,包括項目號、名稱、比賽地點。
(4)每個運動員可參加多個比賽項目,且每個項目可有多人參加。
(5)要求能夠公布每個比賽項目的運動員名次與成績。
(6)要求能夠公布各個班級團體總分的名次和成績。

E-R圖:

關(guān)系模型:

運動員(運動員號,班級號,姓名,性別,年齡)
班級(班級號,班級名,專業(yè),人數(shù))
比賽項目(項目號,比賽地點,名稱)
比賽(項目號,運動員號,成績,名次)

五、聚合函數(shù)

函數(shù)名作用描述是否忽略 NULL示例代碼(含 GROUP BY)
COUNT()統(tǒng)計行數(shù)或列值個數(shù)是(COUNT(*)除外)SELECT city, COUNT(*) FROM users GROUP BY city;
SUM()求數(shù)值列總和SELECT user_id, SUM(amount) FROM orders GROUP BY user_id;
AVG()求數(shù)值列平均值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)統(tǒng)計去重后的行數(shù)SELECT COUNT(DISTINCT city) FROM users;
HAVING對聚合結(jié)果二次過濾SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id HAVING total>1000;

六、正則表達式

維度符號/語法作用說明(一句話)示例片段
字符集[a-z]任意單個小寫字母[a-z]
[A-Z0-9]任意大寫字母或數(shù)字[A-Z0-9]
[^abc]除 a、b、c 外的任意單個字符[^abc]
[[:alnum:]]任意字母或數(shù)字(POSIX 類)[[:alnum:]]
元字符.匹配除換行外的任意單個字符a.c → abc, a3c
^匹配字符串開頭^abc
$匹配字符串結(jié)尾xyz$
\轉(zhuǎn)義保留字符,使其按字面匹配\. 匹配真實點
|邏輯“或”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]';

完結(jié)。

總結(jié)

到此這篇關(guān)于MySQL表設(shè)計和聚合函數(shù)以及正則表達式示例詳解的文章就介紹到這了,更多相關(guān)MySQL表設(shè)計和聚合函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解SQL注入--安全(二)

    詳解SQL注入--安全(二)

    這篇文章主要介紹了SQL注入安全,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Mysql數(shù)據(jù)庫增量備份的思路和方法

    Mysql數(shù)據(jù)庫增量備份的思路和方法

    MySQL數(shù)據(jù)庫增量備份,在這之前修改我們的數(shù)據(jù)庫配置文件/etc/my.cnf開啟bin-log日志功能即可,下面小編給大家分享Mysql數(shù)據(jù)庫增量備份的思路詳解,一起看看吧
    2017-09-09
  • windows 安裝解壓版 mysql5.7.28 winx64的詳細(xì)教程

    windows 安裝解壓版 mysql5.7.28 winx64的詳細(xì)教程

    這篇文章主要介紹了windows 安裝解壓版 mysql5.7.28 winx64的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 淺談開啟magic_quote_gpc后的sql注入攻擊與防范

    淺談開啟magic_quote_gpc后的sql注入攻擊與防范

    通過啟用php.ini配置文件中的相關(guān)選項,就可以將大部分想利用SQL注入漏洞的駭客拒絕于門外
    2012-01-01
  • MYSQL導(dǎo)入導(dǎo)出命令詳解

    MYSQL導(dǎo)入導(dǎo)出命令詳解

    網(wǎng)上看了一些總結(jié)出來的資料,不知道對大家有沒有用的,有用的話也就不枉費我一按按鈕的一片苦心了
    2007-09-09
  • MySQL存儲路徑遷移的詳細(xì)步驟

    MySQL存儲路徑遷移的詳細(xì)步驟

    在構(gòu)建Web應(yīng)用程序時,MySQL是存儲數(shù)據(jù)的核心工具,在云服務(wù)器上,正確設(shè)置MySQL的存儲路徑對應(yīng)用性能至關(guān)重要,通過遷移,我們不僅解決了空間不足的問題,還能讓數(shù)據(jù)庫運行得更快,所以本文將給大家介紹MySQL存儲路徑遷移的詳細(xì)步驟,需要的朋友可以參考下
    2024-06-06
  • MySQL索引不會被用到的情況匯總

    MySQL索引不會被用到的情況匯總

    這篇文章主要給大家介紹了關(guān)于MySQL索引不會被用到的一些情況,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • linux下源碼安裝mysql5.6.20教程

    linux下源碼安裝mysql5.6.20教程

    這篇文章主要為大家詳細(xì)介紹了linux下源碼安裝mysql5.6.20教程的相關(guān)資料,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL批量SQL插入性能優(yōu)化詳解

    MySQL批量SQL插入性能優(yōu)化詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL批量SQL插入性能優(yōu)化,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • MySQL 8.0.0開發(fā)里程碑版發(fā)布!

    MySQL 8.0.0開發(fā)里程碑版發(fā)布!

    MySQL 8.0.0開發(fā)里程碑版發(fā)布,感興趣的小伙伴們可以閱讀一下
    2016-09-09

最新評論