第二章 mysql
一、模糊查询
like
1. 字段 like '河北省%' %代表任何N个字符
2 字段 like '河北省____' _代表任意1个字符
二、IN
语法:SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…)
三、排序
语法:select 字段1, 字段2, ... from 表名 where 条件 order by 字段 [asc|desc]
asc :升序
desc :降序
默认是升序asc
SELECT * FROM student ORDER BY age ASC, studentid ASC;
四、联合查询
内链接:只查询左右2张表中相同的记录 inner join
语法:select 列1, 列2, 列3, ...
from 表1
inner join 表2 on 表1.列x = 表2.列y
示例:select studentname, age, phone, classname
from student
inner join classinfo on student.classid = classinfo.classid
左外链接:查询左右2张表中相同的记录 + 左表未匹配的记录(右表字段为NULL) left outer join
语法:select 列1, 列2, 列3, ...
from 表1
left join 表2 on 表1.列x = 表2.列y
右外链接:查询左右2张表中相同的记录 + 右表未匹配的记录(左表字段为NULL) right outer join
语法:select 列1, 列2, 列3, ...
from 表1
right join 表2 on 表1.列x = 表2.列y
完全链接:对左右2张表中的记录做笛卡尔积 cross join
语法:select 列1, 列2, 列3, ...
from 表1
cross join 表2
五、LIMIT
语法:LIMIT [m,]n 或 LIMIT n OFFSET m
限制SELECT返回结果的行数
m 制定第一个返回记录行的偏移量
n 制定返回记录行的最大数目
数据分页:
pageIndex : 1 2 3 4 5 ...要显示的页码 3
pageSize : 每页的记录数 3
limit (pageSize * (pageIndex - 1)), (pageSize)
六、子查询
定义:在查询语句中,又嵌套了另外一个查询语句。
七、聚合函数
1.count() : 获取记录的行数
2.sum() : 对指定字段进行求和
3.avg() : 对指定字段进行求平均值
4.max() : 对指定字段求最大值
5.min() : 对指定字段求最小值
八、分组
group by 字段
注意:使用group by分组后,select后只能跟group by后的字段;或者跟聚合函数
SELECT age, COUNT(*)
FROM student
GROUP BY age
SELECT classid, COUNT(*), AVG(age), MAX(age), MIN(age)
FROM student
GROUP BY classid
SELECT classid, COUNT(*), AVG(age), MAX(age), MIN(age)
FROM student
GROUP BY classid
HAVING COUNT(*) > 1
SELECT classid, COUNT(*), AVG(age), MAX(age), MIN(age)
FROM student
GROUP BY classid
HAVING COUNT(*) > 1 AND age > 20