Mysql 复习(模糊查询,连表查询,分页和排序)
1.模糊查询
运算符 | 语法 | 描述 |
---|---|---|
ISNULL | a is null | 如果操作符为null,结果为真 |
IS NOT NULL | a is not null | 如果操作符不为null,结果为真 |
BETTWEEN | 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 username,usercode from smbms_user where username like "%孙%"
这串代码的意思:查询username和usercode这个俩个字段,在smbms_user这个表中查询,判断只查找username这个字段中名字中带有孙字的人的名字。
in(具体的一个或者多个值)
案例:
select studentno,studentname from student where address in("北京");
这串代码的意思是:查询地址在北京的studentno跟studentname;
模糊查询记忆方法:我们只要记住 模糊查询都是加在where 判断后的语句 例如 where like 、where in like可以记成像,in可以记成在
各自的单词意思。
2.连表查询
语法 :join
使用连表的查询的思路:
- 分析需求,分析查询的字段来自哪些表。(连接查询)
- 确定使用哪种连接查询?7种
- 确定交叉点(这个俩个表中哪个数据是相同的)
- 判断条件 是俩个相同的表等于 where ”“= ”“
- on是先筛选后关联,where是先关联后筛选(二者一样用哪个都行)
因为是复习只简单概括
案例(连接三表查询) :
select s.studentno,studentname,subjectname,studentresult from student AS s
right join result AS r
on r.studentno=s.studentno
inner join subject AS sub
on r.subjectno=sub.subjectno
这串代码的意思:查询studentno,studentname,subjectname,studentresult这个四个字段 。student表右连接result表各自给好对象 然后使r.studentno=s.studentno 使他们相等的字段等于避免出现磨棱两可的报错,然后 result并集连接subject表 使它们俩个表中相同的字段相同 。
记住步骤
- 我们查询哪些数据select…
- 从哪几个表中查from表 xxxjoin 连接的表 on交叉条件
- 假设存在一个或者多张表查询,慢慢来先查询俩张表然后再慢慢增加
操作 | 描述 |
---|---|
inner join | 如果表中至少有一个匹配,就返回内容 |
left join | 会从左表中返回所有的值,即使右表中没有 |
right join | 会从右表中返回所有的值,即使左边表中没有 |
3.分页查询
排序
升序asc,降序desc
order by通过哪个字段排序,怎么排
查询的结果根据 成绩降序排序
语法:order by 字段名 怎么排
limit分页排序
语法:limit 初始值 ,展示多少条数据;
案例:
第一页 limit 0,5 (1-1)*5
第二页 limit 5,5 (2-1)*5
第三页 limit 10,5 (3-1)*5
第n页 limit n,5 (n-1)* pagesize,pagesize
【pagesize:页面大小】
【(n-1)*pagesize:起始值】
【n:当前页】
【数据总数/页面大小=总数页】