数据库操作练习-作业四

创建数据库

create database z4;

使用创建的数据库

use z4;

创建数据表grade:

CREATE TABLE grade( id INT NOT NULL, sex CHAR(1), firstname VARCHAR(20) NOT NULL, lastname VARCHAR(20) NOT NULL, english FLOAT, math FLOAT, chinese FLOAT );

CREATE TABLE grade( 
    id INT NOT NULL, 
    sex CHAR(1), 
    firstname VARCHAR(20) NOT NULL, 
    lastname VARCHAR(20) NOT NULL, 
    english FLOAT,
    math FLOAT, 
    chinese FLOAT 
);

向数据表grade中插入几条数据:

INSERT INTO grade VALUES (1,'m','John','Smith',88.0,85.0,82.0), (2,'f','Adam','Smith',76.0,78.0,90.0), (3,'m','Allen','William',88.0,92.0,95.0), (4,'m','George','William',62.0,58.0,72.0), (5,'f','Alice','Davis',89.0,94.0,98.0), (6,'m','Kevin','Miller',77.0,88.0,99.0), (7,'f','Helen','Davis',79.0,83.0,91.0), (8,'m','Andrew','Johnson',81.0,86.0,88.0);

1、查询所有字段

select * from grade;

2、查询grade表中的id,firstname,lastname字段

select id,firstname,lastname from grade;

3、查询grade表中id大于4的学生姓名

select * from grade where id > 4;

4、查询grade表中女生的记录

select * from grade where sex='f';

5、查询grade表中id值为2,4,6的学生记录

select * from grade where id in (2,4,6);

6、查询grade表中math成绩在85到94之间的记录

select * from grade where math >= 85 and math <= 94;

        方法二:

select * from grade where math between 85 and 94;

7、查询grade表中firstname以A开头的记录

select * from grade where firstname like 'A%';

8、查询grade表中firstname以A开头以e结尾的记录

select * from grade where firstname like 'A%e';

9、查询grade表中firstname包含l的记录

select * from grade where firstname like '%l%';

10、查询grade表中firstname以A开头后面有4个字符的记录

 select * from grade where firstname like 'A____';

11、查询grade表中english在80到90之间的记录

select * from grade where english between 80 and 90;

12、查询grade表中math大于90 或者 chinese大于90的记录

select * from grade where math > 90 or chinese > 90;

13、查询grade表中id不是1、3、5、7的记录

select * from grade where id not in (1,3,5,7);

14、查询grade表中的性别有哪些

select distinct sex from grade;

15、查询grade表中的lastname有哪几种

select distinct lastname from grade;

16、求出表中所有记录的条数

select count(*) from grade;

17、求出表中英语成绩的80的记录的条数

select count(*) from grade where english = 80;

18、计算所有学生的数学成绩的和

 select sum(math) from grade;

19、计算女生的数学成绩的和

select sum(math) from grade where sex = 'f';

20、计算英语成绩平均分

select avg(english) from grade;

21、计算男生的英语成绩平均分

select avg(english) from grade where sex = 'm';

22、求出数学成绩的最高分

 select max(math) from grade;

23、求出男生中的数学最高分

select max(math) from grade where sex = 'm';

24、按照math成绩的升序进行排列

 select * from grade order by math asc;

25、按照sex字段的升序和chinese字段的降序排列

select * from grade order by sex asc ,chinese desc;

26、查询数据表grade中的记录,按照sex字段进行分组

select sex,count(*) from grade group by sex;

27、将grade表按照lastname字段值分组,并计算每个分组中的学生数

select lastname,count(*) from grade group by lastname;

28、对grade表按照lastname字段分组,查出math字段和小于100的组

select lastname, min(math) from grade where math < 100 group by lastname;

29、查询grade表中的第3到第6条记录

 select * from grade limit 4 offset 2;

        方法二:

SELECT * FROM (  
    SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS rn  
    FROM grade  
) AS ranked_grade  
WHERE rn BETWEEN 3 AND 6;

30、查询grade表中男生平均成绩(三科)大于85的记录

select * from grade where sex = 'm' and (english+math+chinese) / 3.0 >8.5;

知识点总结:

distinct 

关键字在 SQL 中的用法非常直接,它用于从查询结果中去除重复的记录,只返回唯一的记录。但是,需要注意的是,DISTINCT 作用于查询结果中的所有选定列的组合上,而不是单独作用于某一列。

基本用法

假设有一个名为 students 的表,包含 idname, 和 grade 列,你想要获取所有不同的学生名字(去除重复的名字):

select distinct firstname from grade;

这条查询将返回 students 表中所有不重复的学生名字。

注意事项

  • DISTINCT 作用于查询结果的所有选定列上,而不是单独作用于某一列。
  • 使用 DISTINCT 可能会影响查询性能,因为数据库需要额外的处理来去除重复的记录。
  • 在某些情况下,如果你只需要从多列中去除重复的行,但只想要返回其中一列的值,你可能会使用 GROUP BY 而不是 DISTINCT,或者使用子查询结合 DISTINCT
  • 如果查询中包含了聚合函数(如 COUNT()SUM()AVG() 等),则 DISTINCT 可以与这些函数一起使用来仅对唯一值进行聚合计算。例如,SELECT COUNT(DISTINCT name) FROM students; 将返回 students 表中不同名字的数量。

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值