去重 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 null | a is null | 如果a为null,结果为真 |
is not null | a is not null | 如果a不为null,结果为真 |
between | a between b and c | 若a在b和c之间,则结果为真 |
like | a like b | sql匹配,如果a匹配b,则结果为真 |
in | a 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