一 MySQL多表查询
select 字段1,字段2... from 表1,表2... [where 条件]
如果不加where条件查询的结果称为笛卡尔乘积。
笛卡尔乘积公式 : A表中数据条数 * B表中数据条数 = 笛卡尔乘积。
举例:
#查询人员和部门所有信息
select * from person,dept where person.did = dept.did;
注意: 多表查询时,一定要找到两个表中相互关联的字段,并且作为条件使用
2.多表连接查询
SELECT 字段列表
FROM 表1 INNER|LEFT|RIGHT JOIN 表2
ON 表1.字段 = 表2.字段;
1)内连接查询
select * from person inner join dept on person.did =dept.did;
2)外连接查询
左外连接查询
select * from person left join dept on person.did =dept.did;
效果:人员表中的数据全部都显示,而 部门表中的数据符合条件的才会显示,不符合条件的会以 null 进行填充.
右外连接查询
select * from person right join dept on person.did =dept.did;
效果:右表的数据优先展示
4)全连接查询(显示左右表中全部数据)
全连接查询是在内连接的基础上增加 左右两边没有显示的数据;mysql并不支持全连接 full JOIN 关键字;但是mysql 提供了 UNION 关键字.使用 UNION 可以间接实现 full JOIN 功能。
SELECT * FROM person LEFT JOIN dept ON person.did = dept.did
UNION
SELECT * FROM person RIGHT JOIN dept ON person.did = dept.did;
3.子语句查询
子查询(嵌套查询): 查多次, 多个select
注意: 第一次的查询结果可以作为第二次的查询的 条件 或者 表名 使用.
子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字. 还可以包含比较运算符:= 、 !=、> 、<等.
具体方法在做习题的时候展开记录。
二 Mysql常用函数
1.order by 列名 排序
默认正序,如果想倒序 写法:order by 列名 desc
2.limit 限制结果的起始行 和行数
select * from 表名 limit 4,3 表示起始行为第五行,一共显示三行。
可用于分页。
3.聚合函数
count:select count(列名)from(表名)表示记录有效行数
相同用法还有:max查找列中最大值;min查找列中最小值;sum求列的总和;avg求一列的平均值
4.字符函数
5.数学函数
6.时间函数
7.流程控制函数