一.简单查询,带条件查询
1.请按照以下要求查询表goods中的数据。
goods表结构如下:
-- 创建表:
use test;
drop table if exists goods;
create table if not exists `goods` (
`id` int(11) not null comment '商品编号',
`name` varchar(20) default null comment '商品名称',
`product_date` date default null comment '生产日期',
`price` float default null comment '商品价格',
primary key (`id`)
) engine=innodb default charset=utf8;
-- 插入数据:
insert into `goods` (`id`, `name`, `product_date`, `price`) values
(1,'洗衣粉','2016-03-01',null),(2,'肥皂','2015-12-22',2),
(3,'毛巾','2015-01-20',9.9),(4,'清洗剂','2016-02-19',8.6),
(5,'卫生纸','2015-11-06',null),(6,'牙刷','2014-11-14',4.5),
(7,'牙膏','2016-07-05',13),(8,'洗面奶','2016-03-29',43.8),
(9,'香水','2015-09-16',null),(10,'口罩','2015-01-30',5);
要求如下:
1) 查询出goods表中所有记录。
2) 查询出goods表中生产日期在5年前的商品(以当前日期为准)。
3) 查询出goods表中商品名称中带“洗”字的商品。
4) 查询出goods表中商品编号为2,4,6,8的商品。
5) 查询出goods表中price字段值为null的商品。
6) 查询出goods表中price字段不为null并且商品编号在4到10范围内的商品。
第一题:代码
1) 查询出goods表中所有记录。
select * from goods;
# 2) 查询出goods表中生产日期在5年前的商品(以当前日期为准)。
select * from goods where product_date + interval 5 year < current_date;
# 3) 查询出goods表中商品名称中带“洗”字的商品。
select * from goods where name like'%洗%';
# 4) 查询出goods表中商品编号为2,4,6,8的商品。
select * from goods where id in(2,4,6,8);
# 5) 查询出goods表中price字段值为null的商品。
select * from goods where price is null;
# 6) 查询出goods表中price字段不为null并且商品编号在4到10范围内的商品。
select * from goods where price is not null and id between 4 and 10
二.聚合函数、分组查询)
2.请按照以下要求查询表student中的数据。
student表结构如下:
-- 创建表:
use test;
drop table if exists student;
create table if not exists `student` (
`id` int(11) not null comment '学生的编号',
`name` varchar(20) default null comment '学生的姓名',
`grade` float default null comment '学生的成绩',
`gender` char(2) default null comment '性别',
primary key (`id`)
) engine=innodb default charset=utf8;
-- 插入数据:
insert into `student` (`id`, `name`, `grade`, `gender`) values
(1,'小明',80,'男'),(2,'小红',51,'女'),(3,'小花',77,'女'),
(4,'小华',78,'男'),(5,'小琴',69,'女'),(6,'小伟',90,'男'),
(7,'小白',88,'男'),(8,'小建',65,'男'),(9,'小梅',72,'女'),
(10,'小超',55,'男'),(11,'小燕',95,'女'),(12,'小康',81,'男'),
(13,'小蒙',72,'女');
要求如下:
1) 查询出student表中所有学生的姓名和成绩,并按照成绩的降序排列。
2) 分别查询出student表中男生、女生的平均分。
3) 查询出student表中的最高分和最低分。
4) 查询出student表中班级成绩前五名学生信息。
5) 查询student表中成绩在第6名到第10名并且成绩大于70分的学生姓名和成绩
#1 查询出student表中所有学生的姓名和成绩,并按照成绩的降序排列。
select name,grade from student order by grade desc;
#2 分别查询出student表中男生、女生的平均分。
select gender,avg(grade)from student group by gender;
#3 查询出student表中的最高分和最低分。
select max(grade) as 最高分,min(grade) as 最低分 from student;
#4 查询出student表中班级成绩前五名学生信息。
select name,grade from student order by grade desc limit 5;
#5 查询student表中成绩在第6名到第10名并且成绩大于70分的学生姓名和成绩
select name,grade from student where grade > 70 order by grade desc limit 5,5;