首页 > 数据库 >Sql server基础使用(五):视图

Sql server基础使用(五):视图

时间:2023-11-10 14:55:40浏览次数:49  
标签:语句 dbo AID 视图 server Sql GO Table

对所学Sqlserver知识进行一下记录总结,某些用法之间还可以关联使用,欢迎补充和讨论。本人比较懒,结果的截图暂时就先不传了,什么时候想起来再说吧~~

视图其实理解起来很简单,就好像是把复杂的查询语句查询出来的数据封装到一个临时表里面(知识我自己的理解~~)

1.创建视图

我所知的有2-3中方法

其中一种,步骤是:右键视图->新建视图,此时会弹出一个窗体

          

在弹出的窗体中有两种方法创建视图,如图所示,选中创建视图要用到的数据表,然后然后...我很是不喜欢这么做,所以我是用的第二种方法

首先编辑好需求的查询语句,然后点击上图中的关闭,然后将写好的语句粘贴到 “SELECT FROM ” 这里即可

比如查询语句

SELECT ROW_NUMBER()OVER(ORDER BY Table_A.AID) AS ID,Table_B.BBB,Table_A.AAA FROM dbo.Table_B INNER JOIN dbo.Table_A ON Table_A.AID=Table_B.AID

将语句复制粘贴到下图所示,点击保存按钮(Ctrl+S)即可,注:语句后面可以根据需求写 WHERE 条件的,只是我省略了,多表关联后一般原表的主键基本就废掉了,所以我习惯用  ROW_NUMBER()OVER(ORDER BY ) 自定义一个当作主键。

还有一种创建视图的方法就是直接写语句

USE [test]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[V_Table_AB]
AS
SELECT ROW_NUMBER()OVER(ORDER BY Table_A.AID) AS ID,Table_B.BBB,Table_A.AAA FROM dbo.Table_B INNER JOIN dbo.Table_A ON Table_A.AID=Table_B.AID

GO

效果和第一种方法是一样一样的

如果实在记不住语句怎么写,这里有个小提示,您按下面步骤操作即可:选中随便一个已经创建好的视图->右键->编写视图脚本->CREATE到->新建编辑窗口

这时,sql编辑器会新建一个页面,显示的就是新建视图的语句,只不过是和原视图相关的,您只要修改下 视图名称 和 实际您需求的语句,然后运行(F5)即可

 查询视图时,语法和查询普通数据表是一模一样的,SELECT * FROM V_Table_AB WHERE ************

可以单视图查询,可以多视图联查,可以表+视图 联查,但是视图是不存在 增删改 的!!!

 2.修改视图

修改视图我所熟悉的也是两种方法

第一种,右键要求改的视图->设计,此时会弹出与第一种方法新建视图时相同的页面,按需求修改后点击保存即可

第二种,右键要求改的视图->编写视图脚本->ALTER到->新建编辑窗口,和第二种新建视图一样,sql编辑器会新建一个页面,页面内的代码如下,直接修改语句然后执行即可。

USE [test]
GO

/****** Object:  View [dbo].[V_Table_AB]  ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER VIEW [dbo].[V_Table_AB]
AS
SELECT ROW_NUMBER()OVER(ORDER BY Table_A.AID) AS ID,Table_B.BBB,Table_A.AAA FROM dbo.Table_B INNER JOIN dbo.Table_A ON Table_A.AID=Table_B.AID

GO

 

3.删除视图

这里就比较简单了,直接右键视图->删除 即可,删除的只是视图,和源表无关。

 

注:创建视图的语句中,也可以时查询其他的视图+表的关联,也就是说,多表联查可以是 表+表,也可以是 表+视图

标签:语句,dbo,AID,视图,server,Sql,GO,Table
From: https://www.cnblogs.com/hlmxlx/p/17817842.html

相关文章

  • Sql Server根据表生成insert语句
    Createproc[dbo].[P_BackupsCompanyData](@tablenamevarchar(256),@wherevarchar(256))asbeginsetnocountondeclare@sqlstrvarchar(max)declare@sqlstr1varchar(max)declare@sqlstr2varchar(max)select@sqlstr='select''insertinto�......
  • 为MySQL新增一张performance_schema表 | StoneDB 技术分享会 #4
    StoneDB开源地址https://github.com/stoneatom/stonedb设计:小艾审核:丁奇、李浩编辑:宇亭作者:王若添中国科学技术大学-软件工程-在读硕士、StoneDB内核研发实习生performance_schema简介MySQL启动后会自动创建四个databasemysql>showdatabases;+--------------------+|Da......
  • 实现MyBatisPlus自定义sql注入器
    目标:新增mysql下的插入更新的语法INSERTINTO%s%sVALUES%sONDUPLICATEKEYUPDATE%s新增方法类,新增的方法名称为insertOrUpdate和insertOrUpdateBatch方法,但其mapper层的方法名为insertOrUpdate方法importcom.baomidou.mybatisplus.annotation.IdType;importcom.b......
  • MySQL导入导出数据表容量的一个问题场景
    朋友提了一个MySQL数据导出导入的问题。问题描述:从源库(兼容MySQL协议的TDSQL,selectversion()=5.7,test表字符集是utf8,test是个分区表)通过如下指令,导出一份数据,SQL格式的,文件6G,mysqldump-hx.x.x.x-P3306-uroot-proot--databasesdbtest--tablestest--complete-insert--s......
  • POSTGRESQL 如何用系统函数来诊断权限问题
    开发人员很少关注于数据库系统的权限,而POSTGRESQL相对于MYSQL来说,他的权限是复杂的,尤其在一些规范的企业,对于权限的要求很高,而随时掌握账号对于数据库OBJECTS的权限的状态,在很多项目中是乙方需要知道该怎么做的。我们从上到下,一一给大家进行演示,你的用户组需要针对PG中不同的数据......
  • mysql 查询报错Expression #1 of SELECT list is not in GROUP BY clause and contain
    这个错误是由于MySQL的新版本中默认开启了ONLY_FULL_GROUP_BY模式,即在GROUPBY语句中的SELECT列表中,只能包含分组或聚合函数,不能包含其他列。而你的查询语句中出现了一个列senior_two.score.student_id,它既没有被分组也没有被聚合,因此MySQL报出了这个错误。5.7版本以下不......
  • Oracle常用SQL-处理异常锁表
    锁表查询的代码有以下的形式:selectcount(*)fromv$locked_object;select*fromv$locked_object;查看哪个表被锁selectb.owner,b.object_name,a.session_id,a.locked_mode,a.object_idfromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id;查看是哪个ses......
  • 【Qt初入江湖】Qt QSqlTableModel 底层架构、原理详细描述
    鱼弦:内容合伙人、新星导师、全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) QtQSqlTableModel是Qt中用于实现基于数据库表格的模型类,它继承自QAbstractTableModel。QSqlTableModel封装了对......
  • SQL Server 备份加密的先决条件
    --1创建密钥createmasterkeyencryptionbypassword='密钥'--创建证书createCERTIFICATEBackupCertificate_mywithsubject=N'sparksoftcertificate'--3备份证书和密钥文件BACKUPCERTIFICATEBackupCertificate_myTOFILE='E:\BackupCertificate_my.ce......
  • SQL
    SQLSelectSELECTcolumn1,column2,...FROMtable_name;SelectDistinctselectuniqueuintSELECTDISTINCTcolumn1,column2,...FROMtable_name;SELECTDISTINCTCountryFROMCustomers;WhereSELECTcolumn1,column2,...FROMtable_nameWHEREconditio......