由于只会CRUD操作,打算这个暑假恶补下mysql的知识。
1. mysql的注释方法
-- 和 /**/
2.字段
我的理解是字段名是表的属性 eg: name、age之类的
数据库查询
1. 起别名查询数据库 (AS)
不起别名查询结果
这里可以看到数据库中的表头 是name 和 pwd 不太美观,直接,所以给他们两个起别名的办法
------------------------起别名后------------------------------
eg:
--语句为: 在`name`和`pwd`后面分别+ AS +别名 可以给 字段 或 表 起别名
select `name` AS 姓名,`pwd` AS 密码 from student;
2. 函数 ----Concat(a,b)
sql语句是
select concat('姓名:',name, ' ','密码:',pwd) AS 新姓名 from student;
输出eg:
这样就可以按照自定义的形式输出,更暴力直接!
3. like 语句 配合 %(0~多个字符) _(查询一个字符)
eg:查询student表中 “姓张” 且后面 “只有一个字” 的的学生
select `studentname` from student where `studentname` like '张_';
4.*联表查询 Join on (*重点*)
联表查询:
1.分析需求,分析查询的字段来自哪些表
2.确定使用哪种连接查询 “inner ” “left ” “ right”
3.确定交叉点(两个表中哪个数据是相同的)
1.案例:
假设我数据库现在有 < student >和< result >两个表 ,
*student表用于存储学生信息,result表用于存储学生的考试成绩信息,且两个表中都有相同的字段studentno !!
联表查询就是说:我在student表中用sql语句一起查询到result表的成绩信息
-- 这里因为两个表都有studentno字段,所以需要起别名去区分这是谁的studentno
select student.studentno,studentname,studentresult
from student AS student
inner join result AS result
on student.studentno=result.studentno;
运行结果:
这样就把student表中可以一起查询到result表的字段了!
2.inner join、 left join与 right join
狂神的截图
select 字段 from 表名1 left join 表名2 on 相同条件=相同条件
在上面例子中 Left join : 返回左表(student)的全部值,右表(result)即使没有匹配
同理right join: 返回右表(result)的全部值 ,即使左表(student)没有匹配
3.字段排序 :一般用于数字字段 从高往低排/从低高排
-- 排序 :ORDER BY 通过哪个字段排 ,怎么排 (升序 asc , 降序desc)
order by 字段 asc/desc;
4.分页 limit : limit 起始值,页面显示多少条数据
eg:
···
limit 0,5; (表示页面从第0条数据开始显示,页面只显示5条数据)
limit 3; (表示从0开始到3结束 [0,3])
5.分组 group by
group by 条件
having 条件;
eg:
group by 科目名称 -- 表示以科目名称为 分组
having 成绩>80 --用于过滤分组 表示查询以科目名称为 分组 且 成绩要大于80分的