mysql 查询数据
select * from xx ;
查询xx全表数据,一般是自用,开发中不能使用
1>没有表的别名查询全表
select 字段名1,字段名2,...字段名n from xx ;
查询全表信息
2>有表的别名,也有字段别名
select
s.id as "编号",
s.name as "名字",
......
from
xx as s ;
询全表信息,其中as可以省略不写
select distinect 字段名 from xx ;
可以使用 distinect 将字段中重复数据去掉
3>查询指定的字段
select s.id "编号" from xx s ;
查询xx表中id这列信息,也可同时查询多列数据
注:查询数据时,可以将字段为整数类型的进行求和
例:select (math + english) "总分" from xx ;
如果某个字段中有null,可以使用ifnull(字段名,期望值)给予特定的值
4>带条件查询
select * from xx where 字段名 =(<,>) yy ;
查询某一字段的值是否为yy 或者小于/大于yy 的数据所有信息
注意:
①where 后面可以跟多个条件,并列 或,可以使用&& || 或者 and or
②如果用"或"连接,也可以使用 where 字段名 in(值1,值2,...);
③如果查询某个字段为null,使用where 字段名 is null ;
不为null,使用where 字段名 is not null ;
5>模糊查询 关键字: like
①select * from xx where 字段名 like "%马%" ;
查询字段中有字符"马"的数据所有信息
②select * from xx where 字段名 like "__" ; 这里是两个"_"
查询字段中是两个字符的数据所有信息
③select * from xx where 字段名 like "%_化%" ;
查询字段中第二个字符是"化"的数据所有信息
6>聚合函数查询 单行单列数据
select 聚合函数(字段名) from xx;
聚合函数:
① count 查询当前表中的记录数,一般使用id查询
② sum 求和,针对某列字段值进行求和
③ avg 求平均值
④ max 求最大值
⑤ min 求最小值
7>带条件查询和聚合函数查询一起使用
select * from xx
where 字段名 = (select max(字段名) from xx) ;
查询字段等于字段中最大数值的数据所有信息
注意:括号中的查询最后没有";"
8>排序查询 关键字 order by
asc : 升序(默认)
desc : 降序
select * from xx order by 字段名 desc ;
查询某字段降序排列的数据所有信息
多字段排列查询:
select * from xx order by math asc,english desc ;
主要排序math,当math中数据数值一样大时,再按照english排序
作业:
创建新库,新表,插入学生数据
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.查询学生表中有多少条记录
源代码:
-- 单表练习题 -- 创建新库,新表,并加入数据 create database ee_2204; use ee_2204; create table student( id int, -- 编号 name varchar(20), -- 姓名 chinese int, -- 语文 english INT, -- 英语 math int -- 数学 ); insert into student (id,name,chinese,english,math) 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 id "编号", name "姓名", chinese "语文", english "英语", math "数学" from student ; -- 查询表中所有学生的姓名和英语成绩 select name "姓名", english "英语" from student ; -- 过滤表中重复数据 (去重的关键字 distinct) select distinct chinese "语文",english "英语",math "数学" from student ; -- 统计每个学生的总分 select id "编号",name "姓名", (chinese + english + math) "总分" from student ; -- 在所有学生总分数上加10分特长分 select id "编号",NAME "姓名", (chinese + english + math + 10) "总分" from student ; -- 使用别名表示学生分数 select id "编号", name "姓名", chinese "语文", english "英语", math "数学" from student ; -- 查询姓名为行哥的学生成绩 select id "编号", NAME "姓名", chinese "语文", english "英语", math "数学" from student where name = "行哥" ; -- 查询英语成绩大于90分的同学 SELECT id "编号", NAME "姓名", english "英语" FROM student where english > 90 ; -- 查询总分大于200分的所有同学 select id "编号", NAME "姓名", chinese "语文", english "英语", math "数学", (chinese + english + math) "总分" FROM student where (chinese + english + math) > 200 ; -- 查询英语分数在 80-90之间的同学 SELECT id "编号", NAME "姓名", english "英语" FROM student where english >= 80 && english <= 90 ; -- 查询数学分数为89,90,91的同学 SELECT id "编号", NAME "姓名", math "数学" FROM student where math in(89,90,91) ; -- 查询所有姓白的学生英语成绩 SELECT id "编号", NAME "姓名", english "英语" FROM student where name like "%白_%" ; -- 查询数学分>80并且语文分>80的同学 SELECT id "编号", NAME "姓名", chinese "语文", math "数学" FROM student where math > 80 and chinese > 80 ; -- 查询英语>80或者总分>200的同学 SELECT id "编号", NAME "姓名", english "英语", (chinese + english + math) "总分" FROM student where english > 80 || (chinese + english + math) > 200; -- 对数学成绩升序排序 SELECT id "编号", NAME "姓名", math "数学" FROM student order by math asc; -- 对总分降序排序,然后再按数学从高到低的顺序输出 SELECT id "编号", NAME "姓名", math "数学", (chinese + english + math) "总分" FROM student order by (chinese + english + math) desc, math desc ; -- 对姓白的学生成绩排序输出(排序规则自己定义) SELECT id "编号", NAME "姓名", chinese "语文", english "英语", math "数学" FROM student where name like "%白_%" order by math desc; -- 查询数学成绩大于等于平均分的所有学生信息 SELECT id "编号", NAME "姓名", chinese "语文", english "英语", math "数学" FROM student where math >= ( select avg(math) from student ) ; -- 查询出英语成绩最高分的学生信息 SELECT id "编号", NAME "姓名", chinese "语文", english "英语", math "数学" FROM student WHERE english = ( SELECT max(english) FROM student ) ; -- 模糊查询出学生姓名中第二个字是金的学生信息 SELECT id "编号", NAME "姓名", chinese "语文", english "英语", math "数学" FROM student where name like "%_金%" -- 查询出英语成绩平均分是多少 select avg(english) "英语成绩平均分" from student -- 查询出数学总分是多少 select sum(math) "数学成绩总分" from student -- 查询学生表中有多少条记录 select count(id) "总共记录" from student