之前简单的对mysql使用做了简单的总结:对单个表的增删改查;
接下来对mysql深层次的使用做个总结:
当需要用到单个数据库中多个数据表时,便需要熟悉多表操作语句
可以分为以下几种操作:
1 cross join(交叉连接):获取多个表中的交叉关系。
2 inner join(内连接):获取2个表中字段匹配关系的记录。
3 外连接 :
left join(左连接):获取左表所有记录,即使右表没有对应的匹配记录。
right join(右连接):用于获取右表所有记录,即使左表没有对应匹配的记录。
首先我们先建立二张表:A和B;他们的列都是包含ID,NAME,AGE;
1: 交叉连接
语法: select * from CUSTOMER c,ORDERS o;
代码: select * form A,B where A.AGE=B.AGE;
select * from A,B where A.AGE=B.AGE and A.AGE=22;
解释: 找到A,B二章表中A表成员年纪等于B表成员年纪的组合,并显示这些组合,列以A先,B后;
找到A,B二章表中A表成员年纪等于B表成员年纪并且A表成员的的年纪等于22组合,并显示这些组合,列以A先,B后;
如 ID|NAME|AGE|ID|NAME|AGE
X| XXX | XX | X| XXX | XX
2:内连接
语法:隐式内连接:select * from CUSTOMER c,ORDERS o where c.id = o.customer_id;
显式内连接:select * from CUSTOMER c inner join ORDERS o on c.id = o.customer_id;
代码:select * from A inner join B on A.ID=B.ID;
解释: 找到A,B二章表中A表成员ID等于B表成员ID的组合,并显示这些组合,列以A先,B后;
3:外连接
语法:左连接 select * from CUSTOMER c left join ORDERS o on c.id = o.customer_id;
右连接 select * from CUSTOMER c right join ORDERS o on c.id = o.customer_id; ;
代码:select *from A left join B on A.AGE=B.AGE;
解释: 找到A,B二章表中A表成员ID等于B表成员ID的组合,并显示这些组合,列以A先,B后;