数据库MYSQL的查询

数据库MySQL的查询一、单表查询1、条件查询
select *from test where name='libai'
①查询名字为李白且年龄为18:select *from test where name='libai' and age=18
②查询手机号以0结尾的:select *from test where phone like ‘%0’
③查询名字中带小的:select *from test where name like'xiao%';
④查询名字中带o的:select *from test where name like '&o%',%表示通配符
2、取别名
表名过长的话可以去一个暂时的别名
【数据库MYSQL的查询】select lixin.name from lixin;
select t.name from lixin as t:
临时表,取别名
二、多表查询
1、内连接
①无条件连接
SELECT * FROM `department` INNER JOIN(内连接) `students`;
SELECT * FROM `department` , `students`;
SELECT * FROM `department` CROSS JOIN `students`;
SELECT * FROM `department` JOIN `students`;
以上这个四个SQL的结果都一样,都是笛卡尔积,也叫无条件连接/交叉连接等 。
②有条件连接
常用select *from department as t inner join student as d on t.d_id=d.dept_id;
select *from department as t,student as d where t_id=d_id;

数据库MYSQL的查询

文章插图
 
2、外连接
左连接
表示表格以左边为主select *from department as t left join student as d on t.d_id=d.dept_id;
右连接
表示表格以右边为主select *from department as t right join student as d on t.d_id=d.dept_id;
数据库MYSQL的查询

文章插图
 
3、多张表连接
select *from department as t right join student as d on t.d_id=d.dept_id inner join stu_detail on d.s_id=stu_datail.stu_id;
数据库MYSQL的查询

文章插图
 
取其中的一些字段可以这样
数据库MYSQL的查询

文章插图
 
三、字表查询
方法一:先将两张表合为一张表
数据库MYSQL的查询

文章插图
 
再将学院表与临时表连接
数据库MYSQL的查询

文章插图
 
方法二:
我们知道学院的id就可以查人了
数据库MYSQL的查询

文章插图
 
然后执行下列操作
首先查你想知道的学院id
数据库MYSQL的查询

文章插图
 
然后执行下列操作
数据库MYSQL的查询

文章插图
 
四、排序
通常我们创建表排列顺序都是按创建的先后
数据库MYSQL的查询

文章插图
 
排序用order方法
①从小到大
默认的order就是从小到大
数据库MYSQL的查询

文章插图
 
select *from work order by age asc
数据库MYSQL的查询

文章插图
 
②从大到小
数据库MYSQL的查询

文章插图
 
③限制取值
select *from work order by age desc limit2
如取前2个
数据库MYSQL的查询

文章插图
 
④区间取值
如取第二个和第三个
数据库MYSQL的查询

文章插图
 
五、统计
分组是个常见的操作,常用于分组统计,使用GROUP BY后,会按照GROUP BY后面的字段进行分组,且必须是明确的字段,不能是*,因此SELECT后面也不能是*.其次可以使用 HAVING 可以对分组之后的结果进行筛选,注意:HAVING 后的字段必须是SELECT后出现过的
如果想看每个学院有多少人,则用group by方法
数据库MYSQL的查询

文章插图
 
分组后的统计
数据库MYSQL的查询

文章插图
 
六、mysql常用函数
数据库MYSQL的查询

文章插图
 
1.尽量避免整表扫描,如SELECT *
七、
1.尽量避免整表扫描,如SELECT *
2.建立合适的索引
3.使用合适的存储引擎
4.在JOIN中,尽量用小表LEFT JOIN 大表


推荐阅读