sqlserver外键关系有什么用?

[复制链接]
查看11 | 回复2 | 2015-5-24 14:51:55 | 显示全部楼层 |阅读模式
主要用於数据约束.部门表:部门ID(主键),部门名称员工表:部门ID(外键),员工工号,员工姓名外键作用是:员工表的部门ID(外键)必须存在於部门表的部门ID(主键),但也可为空.内连接:select * from 员工表 inner join 部门表 on 部门ID(外键)=部门ID(主键)显示数据:1.员工所属的部门必须存在2.部门里必须有员工左外连接select * from 员工表 left join 部门表 on 部门ID(外键)=部门ID(主键)显示数据:1.所有员工都显示,部门不存在显示为空.
回复

使用道具 举报

千问 | 2015-5-24 14:51:55 | 显示全部楼层
外键啊,昨天刚讲过,嘿嘿出来献丑了举个例子吧,a表 里面有IDuser pwdpermission b表里面有 Pidpermission permission是权限的意思 假设pid是外键 那a 表里的permission怎么查呢 ,要靠B表查那这就是外键的作用,我理解吧就是2张表里,b表里有a表里想要得到的东西,他们之间的联系要靠外键来实现 内连接是只显示满足条件的select*from a inner join b ona .permission =b.Pid(就是刚说的实现) 完了外连接select * from a full join b on a.ID = b.Pid (我这个够通俗了吧 呼呼 全大白话看不懂哥不依) 在来修改下,举个例子,你和你媳妇舌吻, 那内连接就是取交集 ,舌头纠缠在一起的地方- -!外连接就是取所有
回复

使用道具 举报

千问 | 2015-5-24 14:51:55 | 显示全部楼层
外键就是避免外键表与主键表上的主键字段数据有差异。举个例子,你现在有一个主表tab_h,主键t_id,外键表tab_d,t_id是tab_h的t_id外键。那么你就不能先insert tab_d 或者delete tab_d,因我t_id在tab_h中没有值。这样就违反了外键约束。当然了,避免这个麻烦,就需要代码写的规范,无论如何,要先对主表做insert ,delete(update 无所谓,但不能修改t_id为tab_h中没有的值)。内连接就是两个表,通过1个字段连接起来,必须两个表里都有的值才能被连接。外连接就是把两个表全部连接,即使没有的值用null会表示出来。比如tab1
tab2 t_id t_namet_id t_name1 a1 a2 b3 e4 d4 dselect * from tab1 a join tab2 b on a.t_id=b.t_id---内连接t_id t_namet_id t_name1 a1 a4 d4 dselect * from tab1 a full join tab2 b on a.t_id=b.t_id---外连接t_id t_namet_id t_name1 a1 a2 b
3 e4 d4 d
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行