视图sql
‘壹’ 如何写下面视图的sql
创建表,数据:
createtabletable1
(教师编号int,
星期几int,
是否有课varchar(2));
insertintotable1values(1,1,'是');
insertintotable1values(3,2,'是');
insertintotable1values(1,1,'是');
insertintotable1values(3,3,'是');
insertintotable1values(2,2,'是');
insertintotable1values(2,3,'是');
insertintotable1values(1,1,'是');
insertintotable1values(1,2,'是');
执行:
select教师编号,
sum(casewhen星期几=1then1else0end)as星期一,
sum(casewhen星期几=2then1else0end)as星期二,
sum(casewhen星期几=3then1else0end)as星期三
fromtable1groupby教师编号
结果:
以上sqlserver下执行,其他数据库语法基本差不多。
‘贰’ SQL视图查询
视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表
视图使用方案
视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。从(或向)Microsoft® SQL Server™ 2000 复制数据时也可使用视图来提高性能并分区数据。
着重于特定数据
视图让用户能够着重于他们所感兴趣的特定数据和所负责的特定任务。不必要的数据可以不出现在视图中。这同时增强了数据的安全性,因为用户只能看到视图中所定义的数据,而不是基础表中的数据。有关出于安全考虑使用视图的更多信息,请参见使用视图作为安全机制。
简化数据操作
视图可以简化用户操作数据的方式。可将经常使用的联接、投影、联合查询和选择查询定义为视图,这样,用户每次对特定的数据执行进一步操作时,不必指定所有条件和限定。例如,一个用于报表目的,并执行子查询、外联接及聚合以从一组表中检索数据的复合查询,就可以创建为一个视图。视图简化了对数据的访问,因为每次生成报表时无须写或提交基础查询,而是查询视图。有关数据操作的更多信息,请参见查询基础知识。
还可以创建内嵌的用户定义函数,在逻辑上作为参数化视图运行,或作为在 WHERE 子句搜索条件中含有参数的视图运行。有关更多信息,请参见内嵌用户定义函数。
自定义数据
视图允许用户以不同的方式查看数据,即使他们同时使用相同的数据时也如此。这在具有不同目的和技术水平的用户共享同一个数据库时尤为有利。例如,可定义一个视图以仅检索由客户经理处理的客户数据。视图可以根据使用该视图的客户经理的登录 ID 决定检索哪些数据。
导出和导入数据
可使用视图将数据导出至其它应用程序。例如,可能希望使用 pubs 数据库中的 stores 和 sales 表在 Microsoft® Excel 中分析销售数据。为此,可创建一个基于 stores 和 sales 表的视图。然后使用 bcp 实用工具导出由视图定义的数据。也可使用 bcp 实用工具或 BULK INSERT 语句将数据从数据文件中导入某些视图,条件是可以使用 INSERT 语句在视图中插入行。有关向视图中复制数据的限制的更多信息,请参见 INSERT。有关使用 bcp 实用工具和 BULK INSERT 语句从(或向)视图中复制数据的更多信息,请参见向(或从)视图中复制数据。
组合分区数据
Transact-SQL UNION 集合运算符可在视图内使用,以将来自不同表的两个或多个查询结果组合成单一的结果集。这在用户看来是一个单独的表,称为分区视图。例如,如果一个表含有华盛顿的销售数据,另一个表含有加利福尼亚的销售数据,即可从 UNION 创建这两个表的视图。该视图代表了这两个区域的销售数据。
使用分区视图时,首先创建几个相同的表,指定一个约束以决定可在各个表中添加的数据范围。视图即使用这些基表创建。当查询该视图时,SQL Server 自动决定查询所影响的表,并仅引用这些表。例如,如果一个查询指定只需要华盛顿州的销售数据,则 SQL Server 只读取含有华盛顿销售数据的表,而并不访问其余的表。
分区试图可基于来自多个异类源——如远程服务器——的数据,而不仅仅局限于同一数据库中的表。例如,要将分别存储组织中不同区域数据的几台远程服务器上的数据组合起来,可以创建分布式查询,从每个数据源中检索数据,然后基于这些分布式查询创建视图。所有查询都只从包含查询所请求数据的远程服务器上读取表中的数据,其它在视图中由分布式查询引用的服务器均不被访问。
当在多个表或服务器上分割数据时,因为需扫描的数据较少,所以只访问一部分数据的查询运行得较快。如果表位于不同的服务器或一台多处理器的计算机上,同样可以对查询所涉及的表进行同时扫描,从而改进查询的性能。此外,象索引重建或表备份这样的维护任务可更快地执行。
通过使用分区视图,数据的外观象是一个单一表,且能以单一表的方式进行查询,而无须手动引用真正的基础表。
如果满足下列任一条件,则分区视图可被更新:
在带有逻辑的视图上定义支持 INSERT、UPDATE 和 DELETE 语句的 INSTEAD OF 触发器。
视图和 INSERT、UPDATE 及 DELETE 语句均遵从为可更新分区视图定义的规则。有关更多信息,请参见创建分区视图。
‘叁’ SQL视图查询语句
视图查询语言为select语句,和查询表语句没有任何区别。
sql:select xisn, object_id, session_id, locked_mode from v$locked_object;
解释:以上语句就是查询出数据库中死锁视图下的相应信息语句,结构就是“select 字段 from 视图名称”;
备注:数据库中视图通常用“V$”进行命名(这个是命名规范,不是非得用)。
‘肆’ sql如何创建视图
使用create view语句就可以创建视图了,具体语句如下:
create view viewname as select * from Tab_EdsProd(Tab_EdsProd是表的名字)where (后面可以接一线限制的条件)。
删除视图:drop view viewname。
(4)视图sql扩展阅读:
视图的作用:
1、使用视图,可以定制用户数据,聚焦特定的数据。
2、使用视图,可以简化数据操作。
3、使用视图,基表中的数据就有了一定的安全性。因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要的字段信息,可以不通过视图给用户。
视图是动态的数据的集合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改和删除,可以保证数据的安全性。
4、使用视图可以合并分离的数据,创建分区视图。
参考资料:网络-sql语句大全
‘伍’ 视图sql的功能
使用SQL视图可以实现下列任一或所有功能:
1,将用户限定在表中的特定行上。
例如,只允许雇员看见工作跟踪表内记录其工作的行。
2,将用户限定在特定列上。
例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列、邮件列和部门列,而不能看见任何包含工资信息或个人信息的列。
3,将多个表中的列联接起来,使它们看起来象一个表。
4,聚合信息而非提供详细信息。
例如,显示一个列的和,或列的最大值和最小值。 一个视图可以引用另一个视图。例如,titleview 显示的信息对管理人员很有用,但公司通常只在季度或年度财务报表中才公布本年度截止到现在的财政数字。可以建立一个视图,在其中包含除 au_ord 和 ytd_sales 外的所有 titleview 列。使用这个新视图,客户可以获得已上市的书籍列表而不会看到财务信息:
CREATE VIEW Cust_titleview
AS
SELECT title, au_lname, price, pub_id
FROM titleview
视图可用于在多个数据库或 Microsoft® SQL Server™ 2000 实例间对数据进行分区。分区视图可用于在整个服务器组内分布数据库处理。服务器组具有与服务器聚集相同的性能优点,并可用于支持最大的 Web 站点或公司数据中心的处理需求。原始表被细分为多个成员表,每个成员表包含原始表的行子集。每个成员表可放置在不同服务器的数据库中。每个服务器也可得到分区视图。分区视图使用Transact-SQLUNION 运算符,将在所有成员表上选择的结果合并为单个结果集,该结果集的行为与整个原始表的复本完全一样。例如在三个服务器间进行表分区。在第一个服务器上定义如下的分区视图:
CREATE VIEW PartitionedView AS
SELECT *
FROM MyDatabase.dbo.PartitionTable1
UNION ALL
SELECT *
FROM Server2.MyDatabase.dbo.PartitionTable2
UNION ALL
SELECT *
FROM Server3.MyDatabase.dbo.PartitionTable3
在其它两个服务器上定义类似的分区视图。利用这三个视图,三个服务器上任何引用 PartitionedView 的 Transact-SQL 语句都将看到与原始表中相同的行为。似乎每个服务器上都存在原始表的复本一样,而实际上每个表只有一个成员表和分区视图。有关更多信息,请参见视图使用方案。
只要所做的修改只影响视图所引用的其中一个基表,就可以更新所有 SQL Server 版本内的视图(可以对其执行 UPDATE、DELETE 或 INSERT 语句)。
-- Increase the prices for publisher '0736' by 10%.
UPDATE titleview
SET price = price * 1.10
WHERE pub_id = '0736'
GO
SQL Server 2000 支持可引用视图的更复杂的 INSERT、UPDATE 和 DELETE 语句。可在视图上定义 INSTEAD OF 触发器,指定必须对基表执行的个别更新以支持 INSERT、UPDATE 或 DELETE 语句。另外,分区视图还支持 INSERT、UDPATE 和 DELETE 语句修改视图所引用的多个成员表。
索引视图 是 SQL Server 2000 具有的功能,可显着提高复杂视图类型的性能,这些视图类型通常在数据仓库或其它决策支持系统中出现。
视图的结果集通常不保存在数据库中,因此视图也称为虚拟表。视图的结果集动态包含在语句逻辑中并在运行时动态生成。有关更多信息,请参见视图解析。
复杂的查询(如决策支持系统中的查询)可引用基表中的大量行,并将大量信息聚积在相对较简洁的聚合中,如总和或平均值。SQL Server 2000 支持在执行此类复杂查询的视图上创建聚集索引。当执行 CREATE INDEX 语句时,视图 SELECT 的结果集将永久存储在数据库中。SQL 语句此后若引用该视图,响应时间将会显着缩短。对基本数据的修改将自动反映在视图中。
SQL Server 2000 CREATE VIEW 语句支持 SCHEMABINDING 选项,以防止视图所引用的表在视图未被调整的情况下发生改变。必须为任何创建索引的视图指定 SCHEMABINDING。
‘陆’ SQL视图的定义和简单使用
CREATE VIEW V1 AS
SELECT 课名,COUNT(*) AS 选课人数,AVG(成绩) AS 平均成绩
FROM 课程 JOIN 选课 ON 课程.课号=选课.课号
GROUP BY 课名
GO
SELECT TOP 1 *
FROM V1
ORDER BY 平均成绩 DESC
‘柒’ 请问SQL中视图与查询的区别
SQL中视图与查询的区别为:功能不同、归属不同、数据来源不同。
一、功能不同
1、视图:视图可以更新字段内容并返回原表。
2、查询:查询文件中的记录数据不能修改。
二、归属不同
1、视图:视图不是一个独立的文件,它保存在数据库中。
2、查询:查询是一个独立的文件,不属于数据库。
三、数据来源不同
1、视图:视图的数据来源可以是本地数据源,也可以是远程数据源。
2、查询:查询的数据来源只有本地数据源,不能访问远程数据源。
‘捌’ 求SQL视图语句
两个表没有连接关键字,我加了一个加了一个PERSONID字段与EMPLOYEE字段对应,你可以自已根据实际情况改为实际的逻辑连接ID。
USE HumanResources--打开要建立视图的数据库
CREATE VIEW vEmployeeContact AS
Person.DBO.Contact.Title AS SALUTATION,
Person.DBO.Contact.FirstName+' '
+Person.DBO.Contact.MiddleName
+' '+Person.DBO.Contact.LastName
AS NAME,
Person.DBO.Contact.EmailAddress,
Person.DBO.Contact.Phone,
Employee.EmployeeID,
Employee.Title
FROM Person.DBO.Contact,Employee
WHERE Person.DBO.Contact.Personid=Employee.EmployeeID--加了一个PERSONID字段
GO
‘玖’ oracle 视图sql语句怎么写
方法和详细的操作步骤如下:
1、第一步,通过pl
/ sql登录到oracle数据库,见下图,转到下面的步骤。
‘拾’ sql视图怎么写
视图是一种特殊的表(虚拟表),它其实质就是一条查询语句的别名
语法:CREATE
VIEW
视图名字(字段)
AS
子查询
子查询就是sql查询语句了,比如:CREATE
VIEW
v_emp_dept20
AS
SELECT
empno,ename,sal
FROM
emp
WHERE
deptno=20
;