mysql内连接查询怎么 mysql表连接查询的原理( 三 )


十三简单内连接查询
SELECT filedlist FROM table1 [INNER] JOIN table2 ON table1.column1 = table2.column1
其中,filedlist是要显示的字段,INNER表示表之间的连接方式为内连接,table1.column1=table2.column1用于指明两表间的连接条件,如:
SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id
十四复杂内连接查询
复杂的内连接查询是在基本的内连接查询的基础上再附加一些查询条件 , 如:
SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id WHERE b.id=(SELECT id FROMtb_demo065 WHERE tb_demo065.name='$_POST[text]')
总之,实现表与表之间的关联的本质是两表之间存在共同的数据项或者相同的数据项 , 通过WHERE 子句或内连接INNER JOIN … ON 语句将两表连接起来,实现查询
十五使用外连接实现多表联合查询
(1)LEFT OUTER JOIN表示表之间通过左连接方式相互连接,也可简写成LEFT JOIN,它是以左侧的表为基准故称左连接 , 左侧表中所有信息将被全部输出,而右侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULL
e.x:SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A LEFT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id
(2)RIGHT OUTER JOIN表示表之间通过右连接方式相互连接 , 也可简写成RIGHT JOIN,它是以右侧的表为基准故称右连接 , 右侧表中所有信息将被全部输出,而左侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULL
E.X:SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A RIGHT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id
十六利用IN或NOTIN关键字限定范围
e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code BETWEEN '$_POST[text1]' AND '$_POST[text2]')
利用IN可指定在范围内查询,若要求在某范围外查询可以用NOT IN代替它
十七由IN引入的关联子查询
e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code = '$_POST[text]')
十八利用HAVING语句过滤分组数据
HAVING子句用于指定组或聚合的搜索条件,HAVING通常与GROUP BY 语句一起使用,如果SQL语句中不含GROUP BY子句,则HAVING的行为与WHERE子句一样.
e.x:SELECT name,math FROM tb_demo083 GROUP BY id HAVING math'95'
MySQL连接查询Hello,写的语言格式有些丑
练习题目:
3、多表连接(等值连接)
①案例1:查询员工名、部门名
②为表起别名
#③添加筛选条件
#案例:查询工资5000的工种名和员工名、工资
④添加分组和筛选
#01案例:查询每个部门的员工个数和部门名
⑤排序
#01案例:查询每个部门的员工个数和部门名
⑥三表连接
#案例:查询员工名、部门名和所在城市
4、多表连接(等值连接)练习
传统模式的多表连接
1.显示所有员工的姓名,部门号和部门名称 。
2.查询90号部门员工的job_id和90号部门的location_id
3.选择所有有奖金的员工的last_name, department_name , location_id , city
-----------三表连查
4.选择city在Toronto工作的员工的
last_name, job_id , department_id , department_name-----------三表连查
5.查询每个工种、每个部门的部门名、工种名和最低工资-----------三表连查
6.查询每个国家下的部门个数大于2的国家编号
5、非等值查询
2.非等值连接
#案例1:查询员工的工资以及对应的工资级别
#案例2:查询名字中第三个字符为a,第五个字符为e的员工的工资以及对应的工资级别

推荐阅读