SQL Server--视图设计
数据库的建立,步骤如下
1. 新建数据库,建表,如下图,很简单基本上右键新建就行,然后添加字段
2. 接下来要建立视图查询,查询2个表中,指定两个用户之间的消息,先要新建视图,点击新建查询即可,输入代码,视图的命名空间与表相同,所以不能跟表取相同的名称
视图是什么?
视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询,他没有表中任何列和数据,他只是一个SQL查询;
如果大家觉得有时候会需要,请关注微信公众号--老王工控笔记,文章末尾有二维码
视图的好处:
1.可以从不同表中,检索到需要的数据,也保护了另一部分的数据,(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
2. 可以不用知道各表之间的结构及其之间的关系
3. 视图也可以像表一样操作,
4. 视图还可以更新表中的数据,
5. 视图可以理解,表为根基,视图是在他上面的动态显示界面
6. 视图还可以被嵌套,一个视图中可以嵌套另一个视图
视图有个地方需要注意,当用多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会发现性能下降得很厉害,需要测试下,视图必须要有检索条件才可以触发
源代码如下:
CREATE VIEW [dbo].[v_Message2]
AS
SELECT DISTINCT
dbo.tb_Message.ID, dbo.tb_Message.FromUserID, dbo.tb_Message.ToUserID, dbo.tb_Message.Message,
dbo.tb_Message.MessageTypeID, dbo.tb_Message.MessageState, dbo.tb_Message.MessageTime,
dbo.tb_User.NickName
FROM dbo.tb_Message INNER JOIN
dbo.tb_User ON dbo.tb_Message.FromUserID = dbo.tb_User.ID
虽然很简短,但是有好几个知识点,先说句式
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号
这里用大白话来解释下上面的句式:
查询表1和表2的全部字段中,把表1字段跟表2字段一样的数据重新组合成表
(*表示全部字段,也可以指定表1表2中的字段)(字段比较必须是相同类型,但可以不同数值,但不可以是单双精度类型)(任何关系比较运算符:“=”、“<”、“>”、“<=”、“>=”或者“<>”。)
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录. 还有就是inner join 可以结合where语句来使用 如: select * from A innerjoin B on A.aID = B.bID where b.bname='2006032401' 这样的话 就只会放回一条数据了
注:SELECT DISTINCT 这个指令的意思是查找到字段下不重复的数据,语句用于返回唯一不同的值,在表中,一个列可能会包含多个重复值,有时我们希望仅仅列出不同(distinct)的值,比如某个字段下有 1,3,3,5,5,1,那你加了这个指令,结果就会显示1,3,5,1