MySQL DAL单表练习一(学生表)

目录

步骤:

1、创建学生表

2、插入数据

1)查询表中所有学生的信息

2)查询表中所有学生的姓名和英语成绩

3) 过滤表中的重复数据

4) 统计每个学生的总分

5) 所有学生总分上加上10

6) 使用别名表示学生分数

7)查询英语成绩大于90分的所有同学

8) 查询总分大于200分的所有同学

9)查询英语成绩在80到90之间的所有同学

10) 查询英语成绩不在80到90之间的所有同学

11)查询数学分数为89,90,91的同学

12)查询数学分数不为89,90,91的同学

13) 查询所有姓李的学生英语成绩

14) 查询数学分80且语文80分的同学

15)查询英语80或者总分200的同学

16)对学生数学成绩进行降序排序后输出

17)对总分从高到低的顺序输出

18)对姓李的学生按总成绩升序排序输出

19) 查询男生和女生分别有多少人,并将人数降序输出

20)查询男生和女生分别有多少人,并将人数降序输出,并查询出大于9的性别人数信息


步骤:

1、创建学生表

命令:

create table student(
    id int,
    name varchar(20),
    gender varchar(20),
    chinese int,
    math int,
    english int
    );    

2、插入数据

命令:

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),    
    (7,'黄蓉','女',75,65,30);

1)查询表中所有学生的信息

命令:

select *from student;

2)查询表中所有学生的姓名和英语成绩

命令:

select name,english from student;

3) 过滤表中的重复数据

命令:

select distinct *from student;

4) 统计每个学生的总分

命令: 

select name, chinese+math+english from student;

5) 所有学生总分上加上10

命令:

select name, chinese+math+english+10 from student;

6) 使用别名表示学生分数

命令: 

select name, (chinese+math+english+10) sum_score from student;

7)查询英语成绩大于90分的所有同学

命令:

select name,english from student where english>90;

8) 查询总分大于200分的所有同学

命令: 

select name,(chinese+math+english) sum_score from student where (chinese+math+english+10)>200;

9)查询英语成绩在80到90之间的所有同学

命令:

select name,english from student where english between 80 and 90;

10) 查询英语成绩不在80到90之间的所有同学

命令:

select name,english from student where english not between 80 and 90;

11)查询数学分数为89,90,91的同学

 命令:

select name,math from student where math between 89 and 91;
或
select name,math from student where math=89 or math=90 or math=91;

12)查询数学分数不为89,90,91的同学

命令:

select name,math from student where math not between 89 and 91;

13) 查询所有姓李的学生英语成绩

命令:

select name,english from student where name like '李%';

14) 查询数学分80且语文80分的同学

命令:

select name from student where math=80 and chinese=80;

15)查询英语80或者总分200的同学

命令: 

select name from student where english=80 or (math+english+chinese)=200;

16)对学生数学成绩进行降序排序后输出

命令:

select name,math from student order by math desc;

17)对总分从高到低的顺序输出

 命令:

select *from student order by (math+english+chinese) desc;

18)对姓李的学生按总成绩升序排序输出

 命令: 

select *from student where name like '李%' order by  (math+english+chinese);

19) 查询男生和女生分别有多少人,并将人数降序输出

命令:

select gender, count(*) from student group by gender order by count(gender) desc;

20)查询男生和女生分别有多少人,并将人数降序输出,并查询出大于9的性别人数信息

命令:

elect gender, count(*) from student group by gender having count(gender)>9 order by count(gender) desc;

​​​​​​​

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你有一个可以引用的数据访问层(DAL),你可以在该层中编写一个方法来插入数据到数据库中。以下是一个示例代码片段,展示了如何在DAL中编写一个插入数据的方法: ```csharp using System.Data; using System.Data.SqlClient; public class MyDataAccessLayer { private string connectionString; public MyDataAccessLayer(string connectionString) { this.connectionString = connectionString; } public void InsertData(Dictionary<int, int> dataDictionary) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); foreach (KeyValuePair<int, int> entry in dataDictionary) { int roleId = entry.Key; int moduleId = entry.Value; string query = "INSERT INTO t_authorities (role_id, module_id) VALUES (@RoleId, @ModuleId)"; SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("@RoleId", roleId); command.Parameters.AddWithValue("@ModuleId", moduleId); command.ExecuteNonQuery(); } } } } ``` 在这个示例中,我们创建了一个名为`MyDataAccessLayer`的数据访问层类,并在构造函数中接收数据库连接字符串。 在`InsertData`方法中,我们使用与之前相同的方式来插入数据到数据库中。这次我们使用了`connectionString`字段作为连接字符串,并在`foreach`循环中遍历`dataDictionary`字典来执行插入操作。 通过将数据插入逻辑放在数据访问层中,可以有效地分离数据访问逻辑和业务逻辑,提高代码的可维护性和可测试性。 你可以在你的业务逻辑层或其他地方实例化该数据访问层,并调用`InsertData`方法来插入数据到数据库中。记得在使用完数据库连接后正确地进行异常处理和资源释放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值