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

扫描二维码关注公众号,回复: 10845940 查看本文章

语法: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!

发布了42 篇原创文章 · 获赞 56 · 访问量 5226

猜你喜欢

转载自blog.csdn.net/qq_44958172/article/details/105423347
今日推荐