MySQL学习笔记—数据检索

数据操作
数据检索
基础查询
select 字段名列表 from 列表名;
select * from 列表名;

限制查询
select 字段名列表 from limit n;返回n条数据,这n条数据是有顺序的,n为大于0 的正整数才会有返回值
select 字段名列表 from limit n,m;从第m个数据开始取,取n个
select 字段名列表 from limit n offset m;分页,降低负荷,n取n条数据,m是从第m条取
select distinct 字段名列表 from 列表名;去重查询

条件查询
select 字段名列表 from 表名 where 条件;
关系运算符:>,>=,<,<=,=.!=,<>,between…and
逻辑运算符:and,or,not
集合运算符:in,not in
判空运算:is null ,is not null
通配符:_, %

排序查询
select 字段名列表 from 表名 order by 字段 顺序;
asc升序(默认),desc降序

集合函数
count()返回列的行数
sum()返回列的和
avg()返回列的均值
max()返回列的最大值
min()返回列的最小值

分组查询
select 字段名列表(包含集合函数) from 表名 group by 字段;
select 字段名列表(包含集合函数) from 表名 group by 字段 having 条件;
select gender,count(*) ‘性别计数’ from 表名 group by gender;

数据修改
update 表名 set 字段1=值1,字段2=值2…where 条件;(不加where修改的是所有的记录)

数据删除
delete命令
delete from 表名 where 条件;
注意:如果不加条件,会删除表中所有数据

truncate 命令
truncate table 表名;
清空表中所有记录,等价于delete from 表名;
学习使我快乐!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一个关于学生表、课程表和选课关系表的存储过程的例子。以下是每个存储过程的详细说明和示例代码: 1. 存储过程 Proc_Sele 完成对全部学生基本信息的查询: ```sql CREATE PROCEDURE Proc_Sele AS BEGIN SELECT * FROM S; END; ``` 这个存储过程没有参数,它将返回 S 表所有学生的基本信息。 2. 存储过程 Proc_Selesno 完成对指定学号的学生查询其基本信息及选课情况: ```sql CREATE PROCEDURE Proc_Selesno @student_id INT AS BEGIN SELECT S.*, C.course_name, SC.score FROM S INNER JOIN SC ON S.student_id = SC.student_id INNER JOIN C ON SC.course_id = C.course_id WHERE S.student_id = @student_id; END; ``` 这个存储过程接受一个参数 @student_id,它将返回指定学号的学生的基本信息和选课成绩。 3. 存储过程 Proc_Sgrade 查询是否有一半学生的成绩在指定分数以上,如果不到指定分数,分别每次给每个学生的选课成绩加10分,使一半学生的成绩达到指定分数: ```sql CREATE PROCEDURE Proc_Sgrade @passing_score INT AS BEGIN -- 计算一半学生的数量 DECLARE @num_students INT; SET @num_students = (SELECT COUNT(*) FROM S) / 2; -- 查询有多少学生的成绩低于指定分数 DECLARE @num_failing_students INT; SET @num_failing_students = ( SELECT COUNT(*) FROM S INNER JOIN SC ON S.student_id = SC.student_id WHERE SC.score < @passing_score ); -- 如果不到一半学生的成绩到达指定的及格分数,提升成绩 WHILE @num_failing_students < @num_students BEGIN UPDATE SC SET score = score + 10 WHERE score < @passing_score; SET @num_failing_students = ( SELECT COUNT(*) FROM S INNER JOIN SC ON S.student_id = SC.student_id WHERE SC.score < @passing_score ); END; END; ``` 这个存储过程接受一个参数 @passing_score,它将检查是否有一半学生的成绩低于指定的及格分数。如果不到一半学生的成绩达到指定的及格分数,它将每次给每个学生的选课成绩加10分,直到达到指定的及格分数。 4. 存储过程 Proc_Agrade 查询学生的平均分是否在指定分数以上,如果不到指定分数,则每个学生每次加5分,直到平均分在指定分数以上: ```sql CREATE PROCEDURE Proc_Agrade @passing_score INT AS BEGIN -- 查询平均分是否达到指定的及格分数 DECLARE @avg_grade FLOAT; SET @avg_grade = ( SELECT AVG(score) FROM SC ); -- 如果平均分不到指定的及格分数,提升成绩 WHILE @avg_grade < @passing_score BEGIN UPDATE SC SET score = score + 5; SET @avg_grade = ( SELECT AVG(score) FROM SC ); END; END; ``` 这个存储过程接受一个参数 @passing_score,它将检查学生的平均分是否达到指定的及格分数。如果平均分不到指定的及格分数,它将每个学生的选课成绩加5分,直到平均分达到指定的及格分数。 以上就是关于学生表、课程表和选课关系表的存储过程的例子,希望能够帮助到你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值