select查询不但能从一张表中查询数据,还能进行多表查询
语法
select * from <表1><表2>
这种一次性查询二个表的数据,结果也为二维表(即知道行号列号就可以确定一个表中的数据)
首先我们观察表单独查询的数据和多表查询后的变化
SELECT * FROM `t_user`
-- 结果
id loginName loginPwd realName
1 zhangsan 123 张三
2 jack 123 杰克
SELECT * FROM `testmd5`
-- 结果
id NAME pwd
1 zhangsan e10adc3949ba59abbe56e057f20f883e
2 lisi 708574aadf1838a3c6bd6420bb70b4ae
3 wangwu 14e1b600b1fd579f47433b88e8d85291
4 小明 14e1b600b1fd579f47433b88e8d85291
SELECT * FROM `t_user`,`testmd5`
-- 多表结果
id loginName loginPwd realName id name pwd
1 zhangsan 123 张三 1 zhangsan e10adc3949ba59abbe56e057f20f883e
2 jack 123 杰克 1 zhangsan e10adc3949ba59abbe56e057f20f883e
1 zhangsan 123 张三 2 lisi 708574aadf1838a3c6bd6420bb70b4ae
2 jack 123 杰克 2 lisi 708574aadf1838a3c6bd6420bb70b4ae
1 zhangsan 123 张三 3 wangwu 14e1b600b1fd579f47433b88e8d85291
2 jack 123 杰克 3 wangwu 14e1b600b1fd579f47433b88e8d85291
1 zhangsan 123 张三 4 小明 14e1b600b1fd579f47433b88e8d85291
2 jack 123 杰克 4 小明 14e1b600b1fd579f47433b88e8d85291
我们不难发现:
1、多表查询的数据量是t_user
,testmd5
表的乘积
2、t_user
,testmd5
表的每一行都是有二个二个拼在一起返回的
(ps:(猜测)小规律:select * from <先查询>,<后查询是不一样的> 先查询是将表按顺序(原封不动)循环输出,后查询则是每行输出x遍(总行数/自身行数=每行输出的行数) 如上表共8行 t_user循环输出,testmd5每行则输出2遍 8/4=2 )
3、列数也是t_user
,testmd5
表列数之和
4、行数是之积
ps:数据量多的话这么查询得稳着点来
起别名:
1、字段别名
SELECT
`testmd5`.`name`
FROM `testmd5`
2、表别名
SELECT
t.`name`
FROM `testmd5` t
精减—加where
SELECT
t.`name`
FROM `testmd5` t
where xxx