【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法
2015-12-17 11:34
801 查看
第二章 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
一、模糊查询
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
相关文章推荐
- mysql中and和or
- 性能调优之MYSQL高并发优化
- MYSQL性能优化
- 【mysql】新增、修改、删除、查询 语法讲义
- 与Mysql服务器相互作用的通讯协议
- MySQL查询优化:LIMIT 1避免全表扫描【如判断用户是否存在select * from users where username='123' and passwd='123' limit 1】
- MySQL常用SQL查询语句
- mysql中select的count星和count1有区别么
- mysql 数据表解锁
- procedure在Mysql和Sql Server中使用的一些区别
- Windows下mysql忘记root密码的解决方法
- MySQL-Redo Log
- 从mysql中随机读取多条记录
- MySQL-Double Write
- mysql 优化
- 修改MySQL字符集
- Mysql中文乱码问题完美解决方案【需要在my.cnf文件中设置client和mysqld的default-character-set=utf8,建数据库和表的时候也需要制定好编码】
- 详解mysql int类型的长度值问题
- MySQL基础安全注意细节
- MySQL性能分析