0
点赞
收藏
分享

微信扫一扫

mysql中一些常用关键字的使用以及联表查询(用学生考试举例)

伊人幽梦 2022-05-06 阅读 243
mysqlsqllinq

去重 distinct

作用:去除select查询出来的结果中重复的数据,只显示一条。

-- 查询一下有哪些同学参加了考试,成绩
select * from result  -- 查询全部的考试成绩
select `StudentNo` from result  -- 查询有哪些同学参加了考试
-- 发现重复数据
select distinct 'StudentNo' from result  -- 去重

select用法

select VERSION()  -- 查询系统版本
select 100*2-1 as 计算结果 -- 用来计算
select @@auto_increment_increment -- 查询自增的步长
-- 学院考试成绩+1分查看
select `StudentNo`,`StudentResult`+1 as '提分后' from result

where条件子句

作用:检索数据中符合条件的值

-- 查询考试成绩在95~100之间的
select studentNo,`StudentResult` from result
where StudentResult>=95 and StudentResult<=100
​
-- 模糊查询(区间)
select studentNo,`StudentResult` from result
where StudentResult between 95 and 100
​
​

模糊查询

比较运算法

运算符语法描述
is nulla is null如果a为null,结果为真
is not nulla is not null如果a不为null,结果为真
betweena between b and c若a在b和c之间,则结果为真
likea like bsql匹配,如果a匹配b,则结果为真
ina in (a1,a2,a3...)假设a在a1,或者a2...其中的某一个值中,结果为真
-- =============like===================
-- 查询姓刘的同学
-- like结合  %(代表0到任意个字符) _(一个字符)
select studentNo,`StudentName` from `student`
where StudentName like '刘%'
-- 查询姓刘的同学,名字后面只有一个字的  用_
​

联表查询

1、我要查询哪些数据 select...

2、从哪几个表查 from 表 xxx join 链接的表 on 交叉条件

3、假设存在一种多张表查询,慢慢来,先查询两张表然后慢慢加。

-- ============join============
-- 查询参加了考试的同学(学号,姓名,科目编号,分数)
select s.studentNo,studentName,SubjectNo,StudentResult
from student
inner join result
on student.studentNo = result.studentNo
操作描述
inner join如果表中能匹配,就返回行
left join即使右表中没有匹配,也会返回所有的值
right join即使左表中没有匹配,也会返回所有的值

自链接:把一张表看成两个一模一样的表,使用别名区分

分页和排序

-- 分页limit  和排序 order by
​
-- 排序: 升序ASC , 降序DESC
-- order by 字段 ASC
select s.studentNo,studentName,SubjectNo,StudentResult
from student
inner join result
on student.studentNo = result.studentNo
order by StudentResult ASC
-- ==================================
-- 分页:limit 起始值,页面大小
-- pageSize:页面大小,(n-1) * pageSize:起始值  n:当前页   
​
-- ============================
-- 查询 java 课程成绩排名前十的学生,并且分数要大于80的学生信息(学号,学生姓名,课程名称,分数)
select s.studentNo,studentName,SubjectName,StudentResult
from student as s
inner join result as r
on s.studentNo = r.studentNo
inner join subject as sub
on sub.SubjectNo = r.SubjectNo
where SubjectName = 'java' and StudentResult>80
order by StudentResult DESC
limit 0,10
举报

相关推荐

0 条评论