SQLserver中的视图与主外键的创建

一.背景

原来学过数据库的相关内容,只是形式上的,从来也没有实践过,徐徐飘过而已,如今在做机房时,很多知识需要用到视图,才开始去慢慢的实践。

视图:我理解的就是一张表,它把我们所需要的某个表或某几个表中的部分信息提取出来,形成了一张临时的表。

它主要有两个优点:1.简单,它呈现给我们的数据就是我们想要的数据,没有多余的。

2.安全,提供给用户它们权限范围内的数据

我为什么会用到视图?举一个简单的例子,在查询用户信息时,我们可能会用到两张表中的内容。那么这个时候我就需要将两张表中我需要的数据提取出来形成一张虚拟的表,当我使用的时候,我就可以直接从这张虚拟的表中看到我想要看的数据。这张虚拟的表就是视图。

二、实战

但是这次做的时候遇到一些小问题,如果在一张表中每个数据记录只有一条,而另一张表中相应的数据却对应者多条,此时如果直接建视图,得到的结果会出现很多重复。

如何解决呢?

当然是利用主键和外键来进行约束。这样在视图中会自动归纳相应的数据记录。在外键表中存在的记录会自动与主键表中的匹配

三、外键的创建

右击数据库关系图:

在添加的表上右击关系:


 点击表和列规范,设定主键表和外键表的列名

这里必须要设置好,上面表中标出的“Insert和Update规范”中的几种规范。
刚开始我选的是不执行任何操作,但是当我删除主键表中的记录时,就会报错,因为外键表中依赖的记录消失了,那么就不存在这个外键值了,所以外键表中的记录
也必须删除,所以当涉及到删除操作时,我们应该选择“级联”,也就是外键表中的数据随着主键表的更新而更新。

具体设置如下:选择自己想要设置的列名即可

这样两张表的主键外键关系就大致建好了

四、视图的创建

视图的创建应该是比较容易的,只要在视图下选择新建,选择自己想要的列名即可。

在机房中使用视图时,我们应该注意的几点,我们会将视图看做一张表,所以在编写代码时,会新建一个实体类,来存放我们所需要的列数据。在D层查询表时,直接查询我们所创建的视图名称即可,一般以V_开头。

以上是关于视图和主外键使用的一些相关操作,通过重构巩固了以前学过的知识,对SQL server中的知识又多了几分了解。

SQLserver中的视图与主外键的创建,布布扣,bubuko.com

时间: 2024-08-06 21:29:22

SQLserver中的视图与主外键的创建的相关文章

SQL SERVER中获取表间主外键关系

sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OBJECT_NAME(con.constid) '关系名' ,OBJECT_NAME(sf.fkeyid) '主键表' ,fcol.name '主键' ,OBJECT_NAME(sf.rkeyid) '外键表' ,rcol.name '外键',st.name'数据类型'FROM sysforeignk

Mysql数据库,表,字符集,主外键等创建的sql模板

##如果存在同名的数据库,删除此同名的数据库. DROP DATABASE IF EXISTS cfms; ##如果不存在字符集为utf8的cfms这个数据库,那么就创建 CREATE DATABASE IF NOT EXISTS cfms CHARACTER SET utf8; ##第一次时表示使用此数据库 USE cfms; ##如果存在users这个表了,就删除重新创建 DROP TABLE IF EXISTS cfms.users;               ##如果存在要创建的数据库

通过SQL脚本来查询SQLServer 中主外键关系

在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主外键关系: SELECT f.name AS '关系名称', OBJECT_NAME(f.parent_object_id) AS '表名称', COL_NAME(fc.parent_object_id,fc.parent_column_id) AS '字段名称', OBJECT_NAME (f.r

批量删除MSSQL 中主外键约束

转自: http://www.maomao365.com/?p=813 在制作 MSSQL同步工具的时候,发现由于主外键的约束,导致数据同步异常,所有我们需要把 读数据库里面的主外键约束,进行批量删除操作. 1 如何批量查询数据库的主外键? 在MSSQL2005以上版本中,系统提供一个系统视图 sys.foreign_keys 可以查询出系统所有的外键约束2 如何批量删除数据库的主外间键? -----------------------------------------------------

清除oracl中有主外键关联的表中的部分数据。

1.禁用主外键BEGINfor c in (select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R') loop EXECUTE IMMEDIATE c.v_sql;end loop;end;2.清空数据源.清空所有数据.一般情况是对表进行条件删除.begin for ec in (

mysql|中主外键关系(转)

http://my.oschina.net/liting/blog/356150 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就

mysql中主外键关系

一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外键Dep

父表、子表 主外键关系

ORACLE官方文档介绍: Concurrency Control, Indexes, and Foreign Keys You almost always index foreign keys. The only exception is when the matching unique or primary key is never updated or deleted.(你总是需要对 外键添加索引! 唯一的例外就是:匹配的主键列 或是 唯一列 从不进行更新操作或者 删除操作) Oracle

关于表的主外键关系练习 师生 分数表

--创建三个表 --表一:学生表 student--学号:code int (主键)从1开始--姓名:name varchar(50)--性别:sex char(10)--班级:banji char(10)--语文教师编号:yujiao int --数学教师编号:yujiao int --英语教师编号:yujiao int --表二:教师表 teacher--教师名字:name --教师编号:code int (主键) 从1001开始--负责课程:lesson char(10)(语文.数学.英语