1.1 分页和排序
分页语句:
- 升序 :order by 排序字段 ASC
- 降序:order by 排序字段 DESC
分页语句:
- limit 起始位置 显示的数据条数
实例
-- 创建score表
CREATE TABLE score(
`id` INT(4) NOT NULL COMMENT '学生编号',
`name` VARCHAR(20) NOT NULL COMMENT '姓名',
`stu_score` DECIMAL(10) NOT NULL COMMENT '分数',
PRIMARY KEY (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8
-- 插入数据
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (101,'张三',75)
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (102,'李四',58)
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (103,'王五',46)
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (104,'小红',92)
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (105,'小李',73)
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (106,'小张',66)
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (107,'大华',88)
INSERT INTO score(`id`,`name`,`stu_score`) VALUES (108,'大强',81)
-- 查找学生姓名和成绩,并按成绩升序排序,单页显示4行数据
SELECT `name`,`stu_score` FROM `score`
ORDER BY `stu_score` ASC -- 结果升序排列
LIMIT 0,4 -- 起始位置为0,单页显示4条数据
1.2 子查询和嵌套查询
- 子查询就是在where语句中再嵌套一个子查询语句,嵌套查询就是执行多个子查询。
- 有子查询的语句先执行子查询,再执行外面的语句。
实例:
-- 创建student表
CREATE TABLE `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`pwd` VARCHAR(30) NOT NULL COMMENT '密码',
`gradeid` INT(10) DEFAULT NULL COMMENT '学生年级',
`name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`sex` VARCHAR(2) DEFAULT NULL COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`),
KEY `FK_gradeid` (`gradeid`)
) ENGINE=INNODB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8
-- 创建subject表
CREATE TABLE `subject` (
`sub_id` INT(2) NOT NULL,
`sub_name` VARCHAR(10) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8
--创建result表
CREATE TABLE `result` (
`id` int(10) NOT NULL,
`name` varchar(10) NOT NULL,
`score` decimal(4,0) NOT NULL,
`sub_name` varchar(10) NOT NULL,
`sub_id` int(4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
-- 子查询
-- 查找考数据结构的人(学号,科目编号,成绩)
SELECT id,`name`,sub_id,score
FROM result
WHERE sub_id = (
SELECT sub_id FROM `subject`
WHERE sub_name = '数据结构'
)
-- 嵌套查询
-- 查找考数据结构且分数大于86分的人(学号,科目编号,成绩)
SELECT id,`name`,sub_id,score
FROM result
WHERE score > 86 AND sub_id = (
SELECT sub_id FROM `subject`
WHERE sub_name = '数据结构'
)