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、取别名
表名过长的话可以去一个暂时的别名
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;
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;
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;
取其中的一些字段可以这样
三、字表查询
方法一:先将两张表合为一张表
再将学院表与临时表连接
方法二:
我们知道学院的id就可以查人了
然后执行下列操作
首先查你想知道的学院id
然后执行下列操作
四、排序
通常我们创建表排列顺序都是按创建的先后
排序用order方法
①从小到大
默认的order就是从小到大
select *from work order by age asc
②从大到小
③限制取值
select *from work order by age desc limit2
如取前2个
④区间取值
如取第二个和第三个
五、统计
分组是个常见的操作,常用于分组统计,使用GROUP BY后,会按照GROUP BY后面的字段进行分组,且必须是明确的字段,不能是*,因此SELECT后面也不能是*.其次可以使用 HAVING 可以对分组之后的结果进行筛选,注意:HAVING 后的字段必须是SELECT后出现过的
如果想看每个学院有多少人,则用group by方法
分组后的统计
六、mysql常用函数
1.尽量避免整表扫描,如SELECT *
七、
1.尽量避免整表扫描,如SELECT *
2.建立合适的索引
3.使用合适的存储引擎
4.在JOIN中,尽量用小表LEFT JOIN 大表
5.除非十分必要,尽量不要使用ORDER BY,GROUP BY 和 DISTINCT(去重),尽量用索引来代替
ISTINCT(去重),尽量用索引来代替
尽量用小表LEFT JOIN 大表
5.除非十分必要,尽量不要使用ORDER BY,GROUP BY 和 DISTINCT(去重),尽量用索引来代替
ISTINCT(去重),尽量用索引来代替