JavaEE 之 數據庫技術 MySQL 實戰

資料 ? 青牛 ? 于 2019-06-28 16:51:03 ? 902 閱讀

MySql實戰 --- 2018年北京市高考成績管理與分析系統數據

2.1 數據庫結構介紹與準備

2.1.1 數據庫結構介紹

1) 數據庫名稱 : examdb

2) 數據庫字符集 : utf8 排序方式 : utf8_general_ci

3) 表結構說明 :

a.地區表 : 存儲北京是的所有區縣
file

b.學校表 : 保存各區域的學校
file

c.學生表 存儲學生
file

d.考試科目表 考試科目 一共有四個 1: 語文 2: 數學 3: 英語 4 : 綜合
file

e.考試成績表 : 保存考試成績
file

4) 表關系說明 :

a. 一個地區有多個學校,所以地區表和學校表是一對多關系
b. 一個學校有多個學生,所以學校表和學生表是一對多關系
c. 一個學生有多個考試結果,所以學生表和考試成績表是一對多關系
d. 一個考試科目下有多個考試成績,所以考試科目表和考試成績表示一對多關系

2.2 導入SQL腳本

1) 創建examdb數據庫

2) 導入腳本即可

2.3 SQL語句實戰練習

2.3.1 基礎SQL,難度 ★

2.3.1.1 : 查詢各表數據的基本情況

  1. 查詢地區表數據
    file

  2. 查詢學校表數據
    file

  3. 查詢學生表數據
    file

  4. 查詢學科表數據
    file

  5. 查詢考試成績表數據

select * from result;

2.3.1.2 : 查詢各表數據的數據總量

  1. 查詢地區表數據
    file

  2. 查詢學校表數據
    file

  3. 查詢學生表數據
    file

  4. 查詢學科表數據
    file

  5. 查詢考試成績表數據
    file

2.3.2 新知識:分頁查詢數據,難度 ★★

在上面的案例中我們不難發現,有的表的數據量很小,但是有的表數據量很大,所以這樣在查看 表數據的時候就非常不好查看,比如學生表,

那么這個時候有沒有什么技術能夠幫助我們更好的查詢數據呢?

回想現實生活中,比如一本書的內容非常多,但是我們看書卻不覺得書很難看,是為什么呢?那 是因為書把自己的內容進行了分頁,然后把

每頁的數據展示量限制在你可以接受的范圍,所以你看書才不會被書的海量內容所困擾.

那么這種限制數據展示量并且分多頁展示數據的方式我們叫做分頁展示;

圖書可以分頁,數據庫的表數據能不能分頁展示呢? 當然可以

MySQL查詢語句中使用LIMIT子句限制結果集
file

位置偏移量:指從結果集中第幾條數據開始顯示(第1條記錄的位置偏移量是0,第2條記錄 的位置偏移量是1……)

具體用法 :

比如展示1-5條的學生數據

  1. 查詢前五條學生數據
    file

  2. 查詢5-10條學生數據
    file

  3. 查詢11-15條學生數據
    file

  4. 查詢15-20條學生數據
    file

總結規律 :

根據上面的查詢規律,我們可以假設 如果我一共有 20 條數據的話 每頁展示5條 那么上面的 這個查詢就是每頁展示的數據量;

也就是說我們無意之間完成了一個分4頁展示的案例; 所以總結規律我們可以得出一個算法: 如果想完成一個分頁,我們必須知道以下幾個參數

1) 總數據量 總條數 totalCount

2) 每頁展示的數據量 頁容量 pageSize

3) 一共有多少頁 總頁數 totalPage

4) 當前頁數 頁碼 pageIndex

根據以上參數我們能得出以下公式:

1) totalPage = totalCount%pageSize==0? totalCount/pageSize: totalCount/pageSize+1;

2) limit的第一個參數 = (pageIndex-1)*pageSize;

3) limit的第二個參數 = pageSize;

以后大家學習大數據課程的時候也會有很多這樣根據數據總結規律得出公式的過程,大家需 要注意對數據的總結與分析;

2.3.3 連接基礎,難度 ★★★

  1. 查詢每個地區的學校

file

  1. 分頁查詢所有學生的基本以及所屬院校和所屬地區 分頁展示 每頁10條 展示第1頁
    file

2.3.4 連接進階,難度 ★★★★

  1. 查詢語文考試的前十名成績
    file

  2. 查詢總分前十名的成績
    file

  3. 顯示上面SQL的考生姓名
    file

  4. 顯示上面SQL的考生所在學校和所屬地區
    file

2.3.5 項目實戰基礎,難度 ★★★★★

  1. 統計一共有多少人參加高考,過一本線(大于等于550分),二本線(大于等于450分),??凭€(大 于等級250分的)分別有多少人;

青銅寫法
file

王者寫法
file

上面的寫法中除了我們認識的一些SQL語法外還出現了case wen 這種SQL結構;
file

上面的SQL我們再分步驟看下實現思路

第一步 : 查詢所有考生的考試成績
file

查詢出來之后 將查詢結果先封裝成臨時表 a 然后在表 a 的基礎上進行查詢

第二步 : 查詢總數

count(sid) t,

第三步 : 查詢各分數線錄取情況

一本 :

sum(CASE WHEN totalScore >= 550 then 1 else 0 end) f

case when 負責篩選數據,比如5條數據

567

553

421

359

668

使用case when 篩選結果 大于等于 550 標記 1 小于 550 標記 0

567 1

553 1

421 0

359 0

668 1

統計標記求和 sum(1,1,0,0,1) = 3

從而算出 一本線 有3個人

此處大家要領悟這種簡寫SQL的技巧;

2.3.6 項目實戰高級,難度 ★★★★★★

  1. 每個區參數考試人數
    file

此處需要注意
file

這個地方的細節運用,此處的SQL語句用意是統計每個區域參考人員的,如果這個學生沒 有高考成績是不會被統計的

  1. 每個區的錄取情況

查詢所有區域
file

每個區域加以統計
file

版權聲明:原創作品,允許轉載,轉載時務必以超鏈接的形式表明出處和作者信息。否則將追究法律責任。來自海牛部落-青牛,http://hainiubl.com/topics/36805
點贊
成為第一個點贊的人吧 :bowtie:
回復數量: 0
    暫無評論~~
    • 請注意單詞拼寫,以及中英文排版,參考此頁
    • 支持 Markdown 格式, **粗體**、~~刪除線~~、`單行代碼`, 更多語法請見這里 Markdown 語法
    • 支持表情,可用Emoji的自動補全, 在輸入的時候只需要 ":" 就可以自動提示了 :metal: :point_right: 表情列表 :star: :sparkles:
    • 上傳圖片, 支持拖拽和剪切板黏貼上傳, 格式限制 - jpg, png, gif,教程
    • 發布框支持本地存儲功能,會在內容變更時保存,「提交」按鈕點擊時清空
    Ctrl+Enter
    所罗门王的宝矿在线客服 超级大乐透开奖规则 天天选4开奖结果查询 吉林快3推荐同2号码 澳洲幸运5官方网站 股票是什么 幸运28在线预测尽享网 全民福州麻将手机版下载 安徽11选5投注技巧 广东南粤36选7历 20选5规则及奖 欧美a片下载地址 日本sM|梱绑电影 快乐双彩开奖结果今天 云南山水麻将昆明版 云南快乐十分走势一 5分3D开奖