A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2018-5-25 19:47  /  4462 人查看  /  54 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

王刘锁
2018-5-25-SQL多表查询
一,当多张表之间有某种关系也就是外键约束的时候可以用一条sql语句来同时查询这
多张表~外键约束的作用是保证多表间数据的完整性!避免乱加误删数据等非常理操作.
语法操作 alter table 表1名 add foreign key (属性名1) reference (表2的属性2)
把表1的属性1设为外键指向表2的属性2.这时两张表就通过属性1和属性2相关连.前提
是两个属性是本身就相同的内容比如员工表的部门编号和部门表的部门编号.外键的添
加要看表间的关系,表间有一对多,多对多和一对一三种关系我们把多的设置外键指向
一的主键建立多表的关系.多对多关系的表的创建原则是需要创建一张存放两个外键分
别指向两张表的主键的中间表.操作的也是中间表.
查询两张表是的正确语法是:select * from 表1,表2 where 表1.属性1=表2.属性2 ;
条件就是通过外键查找.
二,多表查询的方式:
1,连接查询
交叉连接(一般用不到):查到的是两个表的记录数的乘积笛卡尔积,cross join  
select * from 表1 cross join 表2 ;或select * from 表1,表2 ;
内连接inner可以省略:
select * from 表1 inner join 表2 on 表1外键=表2主键 ;显式
select * from 表1,表2 where 表1外键=表2主键; 隐式
外连接:;左/右外链接 左为主右为辅/右为主左为辅 主的全显示辅的只显示匹配主的
left/right可以省略:select * from 表1 left/right outer join 表2 on 条件
子查询:查询工资和职位和 smith相同的所有员工信息
select * from emp where sal=(SELECT p.sal from emp p where p.ename='smith')
or job = (SELECT p.job from emp p where p.ename='smith')
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马