MySQL Day04 自連接、排序、分頁

MySQL 自連接、排序、分頁

1 自連接

1.1 測試用數據庫:

CREATE TABLE `school`.`category`( 
	`categoryid` INT(3) NOT NULL COMMENT 'id', 
	`pid` INT(3) NOT NULL COMMENT '父id 沒有父則爲1', 
	`categoryname` VARCHAR(10) NOT NULL COMMENT '種類名字', 
	PRIMARY KEY (`categoryid`) 
) ENGINE=INNODB CHARSET=utf8; 

INSERT INTO `school`.`category` (`categoryid`, `pid`, `categoryname`) VALUES ('2', '1', '信息技術'),
('3', '1', '軟件開發'),
('5', '1', '美術設計'),
('4', '3', '數據庫'),
('8', '2', '辦公信息'),
('6', '3', 'web開發'),
('7', '5', 'ps技術');

在這裏插入圖片描述

1.2 自連接的表格陳述

MySQL自連接的核心是:一張表拆成兩張一樣的表!

現對上表進行拆分:

(1)父類表:

categoryid categoryname
2 信息技術
3 軟件開發
5 美術設計

(2)子類表:

pid categoryid categoryname
3 4 數據庫
2 8 辦公信息
3 6 web開發
5 7

綜合以上兩表可以得到父類對應的子類關係:

父類 子類
信息技術 辦公信息
軟件開發 數據庫
web開發
美術設計 ps技術

1.3 自連接代碼測試

源碼:

-- 把一張表看作兩個一摸一樣的表
SELECT a.`categoryname` AS '父欄目',b.`categoryname` AS '子欄目'
FROM `category` AS a, `category` AS b
WHERE a.`categoryid` = b.`pid`

測試結果:

在這裏插入圖片描述

2 排序(ORDER BY)

測試用數據庫使用的是我另一片博客發表的數據庫,鏈接:https://blog.csdn.net/qq_44958172/article/details/105362696

排序: 升序ASC、 降序DESC

語法:ORDER BY 需要排序的字段 (ASC/DESC)

測試案例:

查詢參加了Customer Relations考試的同學信息:學號、學生姓名、科目名、分數;並對結果按照分數降序排序

代碼:

-- 查詢結果根據成績降序排序
SELECT s.`studentno`, `name`, `subjectname`,`studentresult`
FROM `student` s
INNER JOIN `result` r
ON s.`studentno` = r.`studentno`
INNER JOIN `subject` sub
ON r.`subjectno` = sub.`subjectno`
WHERE `subjectname` = 'Customer Relations'
ORDER BY `studentresult` DESC

結果:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hnko3eRa-1586446245266)(/Users/demut/Library/Application Support/typora-user-images/image-20200409232001098.png)]

3 分頁(LIMIT)

分頁就是我們經常多見的每頁只顯示五條數據,共幾頁等等

爲什麼需要分頁?

  • 緩解數據庫壓力,給人體驗更好
  • 有時也不需要,例如圖片一般使用瀑布流

語法: limit 當前頁,頁面大小

-- 以每頁顯示5條數據來說明
第一頁 limit 0,5 		   --(1-1)\*5
第二頁 limit 5,5			--(2-1)\*5
第三頁 limit 10,5		  --(3-1)\*5
...
第n頁 limit (n-1)\*5,5	--(n-1)\*pagesize, pagesize

測試案例:

查詢並輸出學生學號、姓名、年級名稱,且每頁輸出10條數據!

代碼:

SELECT `studentno`, `name`,`gradename`
FROM student s
INNER JOIN `grade` g
ON s.`gradeid` = g.`gradeid`
LIMIT 10,10 -- 此處展示第二頁

結果:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZZyn8Esg-1586446245267)(/Users/demut/Library/Application Support/typora-user-images/image-20200409232759972.png)]

寫在最後

Do nothing out of selfish ambition or vain conceit. Rather, in humility value others above yourselves, not looking to your own interests but each of you to the interests of the others.

(Philippians 2: 3-4)

To Demut and Dottie!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章