1.单表练习题
create table student(
id int, -- id编号
name varchar(20), -- 姓名
chinese int, -- 语文
english int, -- 英语
math int -- 数学
);
insert into student(id,name,chinese,english,math) values(1,'行哥',89,78,90);
insert into student(id,name,chinese,english,math) values(2,'潘金莲',67,53,95);
insert into student(id,name,chinese,english,math) values(3,'凤姐',87,78,77);
insert into student(id,name,chinese,english,math) values(4,'旺财',88,98,92);
insert into student(id,name,chinese,english,math) values(5,'白小黑',82,84,67);
insert into student(id,name,chinese,english,math) values(6,'白小黄',55,85,45);
insert into student(id,name,chinese,english,math) values(7,'范蹦蹦',75,65,30);
1.查询表中所有学生的信息。
2 查询表中所有学生的姓名和英语成绩。
3 过滤表中重复数据。(去重的关键字 distinct)
4.统计每个学生的总分
5.在所有学生总分数上加10分特长分。
6.使用别名表示学生分数。
7.查询姓名为行哥的学生成绩
8.查询英语成绩大于90分的同学
9.查询总分大于200分的所有同学
10.查询英语分数在 80-90之间的同学。
11.查询数学分数为89,90,91的同学。
12.查询所有姓白的学生英语成绩。
13.查询数学分>80并且语文分>80的同学
14.查询英语>80或者总分>200的同学
15.对数学成绩升序排序
16.对总分降序排序,然后再按数学从高到低的顺序输出
17.对姓白的学生成绩排序输出(排序规则自己定义)
18.查询数学成绩大于等于平均分的所有学生信息
19.查询出英语成绩最高分的学生信息
20.模糊查询出学生姓名中第二个字是金的学生信息
21.查询出英语成绩平均分是多少
22.查询出数学总分是多少
23.查询学生表中有多少条记录
第一步:创建数据库
dos命令下
mysql> create database homework_0428;
Query OK, 1 row affected (0.00 sec)
第二部:创建表
USE homework_0428;
-- 使用 homework_0428数据库
create table student(
id int, -- id编号
name varchar(20), -- 姓名
chinese int, -- 语文
english int, -- 英语
math int -- 数学
);
-- 创建学生表
第三步:表中加入数据
INSERT INTO student
VALUES
(1,'行哥',89,78,90),
(2,'潘金莲',67,53,95),
(3,'凤姐',87,78,77),
(4,'旺财',88,98,92),
(5,'白小黑',82,84,67),
(6,'白小黄',55,85,45),
(7,'范蹦蹦',75,65,30);
-- 表中加入数据
SELECT * FROM student;
-- 查看表
第四步:查询信息
1.需求:查询表中所有学生的信息。
SELECT
s.`id` '编号',
s.`name` '姓名',
s.`chinese` '语文',
s.`english` '英语',
s.`math` '数学'
FROM
student s;
2.需求:查询表中所有学生的姓名和英语成绩。
SELECT
s.`name` '姓名',
s.`english` '英语'
FROM
student s;
3.需求:过滤表中重复数据。(去重的关键字 distinct)
SELECT
DISTINCT english
FROM student;
4. 需求:统计每个学生的总分
SELECT
s.`id` '编号',
s.`name` '姓名',
s.`chinese` '语文',
s.`english` '英语',
s.`math` '数学',
(chinese+english+math) '总分'
FROM
student s;
5.需求:在所有学生总分数上加10分特长分。
SELECT
(chinese+english+math+10) '总分'
FROM
student s;
6.需求:使用别名表示学生分数。
SELECT
s.`id` '编号',-- 名字可更改
s.`name` '姓名',
s.`chinese` '语文成绩',
s.`english` '英语成绩',
s.`math` '数学成绩'
FROM
student s;
7.需求:查询姓名为行哥的学生成绩
SELECT
*
FROM
student
WHERE
NAME
LIKE '%哥%' ;
8. 需求:查询英语成绩大于90分的同学
SELECT
*
FROM
student
WHERE
english>90
9.需求:查询总分大于200分的所有同学
SELECT
*
FROM
student
WHERE
(chinese+english+math)>200
10.需求:查询英语分数在 80-90之间的同学。
SELECT
id '编号',
NAME '姓名',
english '英语成绩高于80,小于90'
FROM
student
WHERE
english
BETWEEN 80 AND 90;
11. 需求:查询数学分数为89,90,91的同学
SELECT
id '编号',
NAME '姓名',
math '数学成绩'
FROM
student
WHERE math IN (89, 90, 91)
12. 查询所有姓白的学生英语成绩。
SELECT
*
FROM
student
WHERE
NAME LIKE '白__' ;
13. 需求:查询数学分>80并且语文分>80的同学
SELECT
*
FROM
student
WHERE
math > 80
AND
chinese > 80
14.需求: 查询英语>80或者总分>200的同学
SELECT
*
FROM
student
WHERE
english > 80 AND (english+math+chinese) > 200
15. 需求:对数学成绩升序排序
SELECT
*
FROM
student
ORDER BY
math ASC;
16.需求:对总分降序排序,然后再按数学从高到低的顺序输出
SELECT
id '编号',
NAME '姓名',
chinese '语文成绩',
english '英语成绩',
math '数学成绩',
(math+english+chinese) '总分'
FROM
student
ORDER BY
(english+math+chinese) DESC ,math DESC ;
17. 需求:对姓白的学生成绩排序输出(排序规则自己定义)
SELECT
*
FROM
student
WHERE
NAME LIKE '白__'
ORDER BY
english DESC;
-- 英语倒序排列
18. 需求:查询数学成绩大于等于平均分的所有学生信息
SELECT
*
FROM
student
WHERE
math>(SELECT AVG(math) FROM student)
19.需求 :查询出英语成绩最高分的学生信息
SELECT
*
FROM
student
WHERE
english = (SELECT MAX(english) FROM student) ;
20.需求:模糊查询出学生姓名中第二个字是金的学生信息
SELECT
*
FROM
student
WHERE
NAME LIKE '%_金%';
21.需求: 查询出英语成绩平均分是多少
SELECT
AVG(english) '英语平均分'
FROM
student
22.需求: 查询出数学总分是多少
SELECT
SUM(math) '数学成绩总和'
FROM student ;
23.需求: 查询学生表中有多少条记录
SELECT COUNT(id) '总记录数'
FROM student ;