-
2021-02-06 23:32:39
不废话直接上代码:
开启视图权限:
root登录服务器,运行命令,注意username和data修改
grant create view on username.* to data@'%';grant show view on username.* to data@'%';
GRANT ALL PRIVILEGES ON 用户名.* TO 数据库名@'%' IDENTIFIED BY '数据库密码';
用下面语句测试创建视图,test是创建视图的名称,admin是存在的表名CREATE VIEW test AS SELECT * from admin;
语法:
创建视图:
create view 视图名 as select 语句;
create algorithm = MERGE view aaa as select * from user;//
修改视图:
alter view 视图名 as select 语句;
查看视图:
DESCRIBE 命令
删除视图:
drop
不可更新的视图:
· 聚合函数(SUM(), MIN(), MAX(), COUNT()等)。
· DISTINCT
· GROUP BY
· HAVING
· UNION或UNION ALL
· 位于选择列表中的子查询
· Join
· FROM子句中的不可更新视图
· WHERE子句中的子查询,引用FROM子句中的表。
· 仅引用文字值(在该情况下,没有要更新的基本表)。
· ALGORITHM = TEMPTABLE(使用临时表总会使视图成为不可更新的)
视图的类型:
MySQL的视图有三种类型:MERGE、TEMPTABLE、UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响mysql处理视图的方式。
1,MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
2,TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
3,UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
更多文章,请关注: http://blog..net/qq_37022150
更多相关内容 -
MySql创建视图
2021-08-23 15:28:00(1).第一类:create view v as select * from table;...如果涉及到数据量过大,业务逻辑需要跨表查询等等也可建立一个跨表的视图,有三种情况: 一、基于同一数据库 这种情况较为简单,只需简单的一行sql命令,如下:(1).第一类:create view v as select * from table;
(2).第二类:create view v as select id,name,age from table;
(3).第三类:create view v[vid,vname,vage] as select id,name,age from table;
如果涉及到数据量过大,业务逻辑需要跨表查询等等也可建立一个跨表的视图,有三种情况:
一、基于同一数据库
这种情况较为简单,只需简单的一行sql命令,如下:
create view v as (select * from table1) union all (select * from table2);
二、基于不同数据库
这种情况只比上面的sql语句多一个数据库的名字,如下:
create view 数据库1.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);
或
create view 数据库2.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);
如果执行第一个sql将在数据库1下建立视图,反之亦然;
三、基于不同服务器
这种情况稍微麻烦一点,需要先建立一个远程表来访问远程服务器的数据表,然后再对这个刚建立的远程表和本地表进行视图,步骤如下:
1、查看MySql是否支持federated引擎
(1).登录Mysql;
(2).mysql>show engines;
(3).如果显示为no,在配置文件中添加:federated (在my.ini),重新启动mysql服务。
2、创建远程表
mysql>CREATE TABLE federated_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL DEFAULT '',
other INT(20) NOT NULL DEFAULT '0',
PRIMARY KEY (id)
)
ENGINE=FEDERATEDDEFAULT
CHARSET=utf8
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';
CONNECTION可以按如下方式进行配置:
(1).CONNECTION='mysql://username:password@hostname:port/database/tablename'
(2).CONNECTION='mysql://username@hostname/database/tablename'
(3).CONNECTION='mysql://username:password@hostname/database/tablename'
3、建立视图
create view 本地数据库.v as (select * from 本地数据库.table1) union all (select * from 远程数据库.test_table);
落霞与孤鹜齐飞,秋水共长天一色。
-
创建视图
2010-08-16 11:17:00SQL SERVER 提供了使用SQL SERVER Enterprise Manager 和Transac-SQL 命令两种方法来创建视图。在创建或使用视图,时应该注意到以下情况: • 只能在当前数据库中创建视图,在视图中最多只能引用1024 列; • 如果...SQL SERVER 提供了使用SQL SERVER Enterprise Manager 和Transac-SQL 命令两种方法来创建视图。在创建或使用视图,时应该注意到以下情况:
• 只能在当前数据库中创建视图,在视图中最多只能引用1024 列;
• 如果视图引用的表被删除,则当使用该视图时将返回一条错误信息,如果创建具有相同的表的结构新表来替代已删除的表视图则可以使用,否则必须重新创建视图;
• 如果视图中某一列是函数、数学表达式、常量或来自多个表的列名相同,则必须为列定义名字;
• 不能在视图上创建索引;不能在规则、缺省、触发器的定义中引用视图;
• 当通过视图查询数据时,SQL SERVER 不仅要检查视图引用的表是否存在,是否有效,而且还要验证对数据的修改是否违反了数据的完整性约束。如果失败将返回错误信息,若正确,则把对视图的查询转换成对引用表的查询。
1、使用SQL SERVER Enterprise Manager 来创建视图
在SQL SERVER 中使用SQL SERVER Enterprise Manager 来创建视图的步骤为:
(1) 启动SQL SERVER Enterprise Manager,登录到指定的服务器;
(2) 打开要创建视图的数据库文件夹,选中view 图标,此时在右面的窗格中显示当前数据库的所有视图,右击图标,在弹出菜单中选择New View 选项,打开New View 对话框。如图13-1。 在New View 对话框中共有四个区:表区、列区SQL script 区、数据结果区(此时对话框中的四个区都是空白的);
(3) 在创建视图时,首先点击按钮,打开添加表对话框,如图13-2 所示;
(4) 在列区中选择将包括在视图的数据列,此时相应的SQL SERVER 脚本便显示在SQL script 区;
(5) 单点按钮,在数据结果区将显示包含在视图中的数据行;
(6) 单击按钮,在弹出对话框中输入视图名,单击"保存"完成视图的创建。
2、Transact-SQL 命令创建视图
使用Transact-SQL 命令CREATE VIEW 创建视图的语法格式为:
各参数的含义说明如下:
• view_name
表示视图名称。
• select_statement
构成视图文本的主体,利用SELECT 命令从表中或视图中选择列构成新视图的列。
提示:但是在SELECT语句中,不能使用ORDER BY、COMPUTE、COMPUTE BY语句,不能使用INTO关键字,不能使用临时表。
• WITH CHECK OPTION
保证在对视图执行数据修改后,通过视图能够仍看到这些数据。比如创建视图时定义了条件语句,很明显视图结果集中只包括满足条件的数据行。如果对某一行数据进行修改,导致该行记录不满足这一条件,但由于在创建视图时使用了WITH CHECH OPTION 选项,所以查询视图时,结果集中仍包括该条记录,同时修改无效。
• ENCRYPTION
表示对视图文本进行加密,这样当查看syscomments 表时,所见的txt 字段值只是一些乱码。
• SCHEMABINDING
表示在select_statement 语句中如果包含表、视图或引用用户自定义函数,则表名、视图名或函数名前必须有所有者前缀。
• VIEW_METADATA
表示如果某一查询中引用该视图且要求返回浏览模式的元数据时,那么SQL Server将向DBLIB 和OLE DB APIS 返回视图的元数据信息
例13-13: 使用WITH ENCRYPTION WITH CHECK OPTION 选项,并且包含函数列。
由于使用了WITH CHECK OPTION, 所以当对视图进行修改时,将返回错误信息。比如执行以下语句:
返回错误信息为:
13.10.2 管理视图
1、查看、修改视图
在SQL SERVER 中,通过SQL SERVER Enterprise Manager 查看和修改视图主要执行以下步骤:
(1) 启动SQL SERVER Enterprise Manager,登录到指定的服务器;
(2) 打开要创建视图的数据库文件夹,选中view 图标,此时在右面的窗格中显示当前数据库的所有视图;
(3) 右击要查看的视图,在弹出菜单中选择Properties 选项,打开View Properties 对话框,如图13-3 所示;
(4) 在该对话框内可浏览到该视图的正文,也可以对该视图进行修改,然后单击Check Syntax 按钮来对语句合法性进行检查,若要对视图的访问权限进行设置,请单击Permissions 按钮。
2 使用存储过程检查视图
系统过程sp_help 用来返回有关数据库对象的详细信息,如果不针对某一特定对象,则返回数据库中所有对象信息其语法如下:
sp_help 数据库对象名称
系统过程sp_helptext 检索出视图、触发器、存储过程的文本。其语法为:
sp_helptext 视图(触发器、存储过程)
3 删除视图
删除视图与删除表一样都使用DROP 命令。其语法为:
DROP VIEW 视图名称 -
数据库 实验四 创建视图,使用视图,修改视图
2021-06-10 16:45:491、创建视图 --***① 将Student Course 和sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G *** CREATE VIEW V_S_C_G AS SELECT Student.sno,sname,course.cno,cname,grade FROM Student,SC,course...1、创建视图
--***① 将Student Course 和sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G *** CREATE VIEW V_S_C_G AS SELECT Student.sno,sname,course.cno,cname,grade FROM Student,SC,course WHERE SC.sno = Student.sno AND SC.cno = course.cno GO --***② 将各系学生人数,平均年龄定义为视图V_NUM_AVG *** CREATE VIEW V_NUM_AVG AS SELECT sdept,COUNT(*) num,AVG(YEAR(GETDATE()) - YEAR(birthday)) avg_age FROM Student GROUP BY sdept GO --***③ 将student中信管系学生的个人信息定义为视图 V_IS *** CREATE VIEW V_IS AS SELECT * FROM Student WHERE sdept = '信管' GO --***④ 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G *** CREATE VIEW V_AVG_C_G AS SELECT cno,COUNT(*) num,AVG(grade) avg_grade FROM SC GROUP BY cno GO --***⑤ 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G *** CREATE VIEW V_AVG_S_G AS SELECT sno,COUNT(*) num,AVG(grade) avg_grade FROM SC GROUP BY sno GO
2、修改视图
重命名用代码我不知道怎么写,如果有知道的可以在评论区说一下,谢谢--****2. 修改视图 **** --***在查询分析器中使用更改视图的命令将上面建立的视图“V_IS”更名为“V_MIS” ***
3、使用视图
--****3.使用视图 **** --***(1)查询平均成绩为90分以上的学生学号、姓名和成绩 *** SELECT DISTINCT V_AVG_S_G.sno,sname,grade FROM V_S_C_G,V_AVG_S_G WHERE V_S_C_G.sno = V_AVG_S_G.sno AND avg_grade > 90 --***(2)查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩*** SELECT DISTINCT V_S_C_G.sno,sname,V_S_C_G.cno,grade FROM V_S_C_G,V_AVG_C_G WHERE sno IN(SELECT V_S_C_G.sno FROM V_S_C_G,V_AVG_C_G WHERE grade > avg_grade AND V_S_C_G.cno = V_AVG_C_G.cno ) --***(3)按系统计各系平均成绩在80分以上的人数,结果按降序排列*** SELECT Student.sdept,COUNT(*) FROM Student,V_AVG_S_G WHERE Student.sno = V_AVG_S_G.sno AND avg_grade > 80 GROUP BY sdept ORDER BY COUNT(*) DESC
4、修改视图
--*** (1)通过视图V_MIS,分别将学号为“1002”和“1004”的学生姓名更改为“1002_MMM”,”1004_MMM” 并查询结果 *** UPDATE V_MIS SET sno = '1006_MMM' WHERE sno = '1006' UPDATE V_MIS SET sno = '1017_MMM' WHERE sno = '1017' --***(2)通过视图V_MIS,新增加一个学生记录 ('S12','YAN XI',’2001.10.10’,'IS'),并查询结果 *** INSERT INTO V_MIS(sno,sname,birthday,sdept) VALUES('S12','YAN XI','2001.10.10','IS') --***(3)通过视图V_MIS,删除学号为“S12”和“001”的学生信息,并查询结果 *** DELETE FROM V_MIS WHERE sno IN('S12','1001') --***(4)要通过视图V_MIS,将学号为“1002”的姓名改为“1002_MMM”,是否可以实现?并说明原因 *** 可以,因为原表格中存在学号为 1002 的学生数据 --***(5)要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因 *** 不可以,因为原表格中没有平均成绩这一列
-
MySQL创建视图的详细步骤
2021-02-03 06:35:08MySQL创建视图的详细步骤发布时间:2020-05-22 17:40:50来源:51CTO阅读:143作者:三月下面讲讲关于MySQL创建视图的详细步骤,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL... -
MySQL创建视图(CREATE VIEW)
2021-11-22 15:22:57可以使用 CREATE VIEW 语句来创建视图。 语法格式如下: CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下。 <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图... -
SQL语法——创建视图、可更新视图
2022-04-16 22:32:34使用MERGE算法,MySQL首先将输入查询与SELECT定义视图的语句组合成单个查询。然后MySQL执行组合查询以返回结果集。 如果SELECT语句包含聚合函数,例如 MIN,MAX,SUM,COUNT,AVG 或DISTINCT,G -
SQL篇-创建视图
2021-05-16 17:19:57可以使用 CREATE VIEW 语句来创建视图,语法格式如下: CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下: <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或... -
MySQL视图——创建视图、修改视图、删除视图、查看视图和更新视图
2020-08-11 23:26:19一、创建视图 语法: create view 视图名 as 查询语句; ... -
MySQL数据库视图:视图定义、创建视图、修改视图
2017-03-20 11:54:15视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。视图不直接存储数据,不知真正的表。...对于复杂的查询事件,每次查询需要输入SQL命令,重复且低效,视图可以大大降低查询的重复性。 -
mysql如何创建视图
2021-01-12 11:53:41在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。...mysql视图可以使用SQL CREATE VIEW命令创建。 SQL CREATE VIEW 语法: CREATE VIEW view_name AS SELECT column_name(s) FROM table_name -
mysql视图之创建视图(CREATE VIEW)和使用限制
2018-07-12 15:26:10mysql以两种方式处理对视图的查询:第一种方式,MySQL会根据视图定义语句创建一个临时表,并在此临时表上执行传入查询。第二种方式,MySQL将传入查询与查询定义为一个查询并执行组合查询。mysql支持版本系统的视图... -
2、创建视图(CREATE VIEW)
2020-10-12 10:28:59可以使用 CREATE VIEW 语句来创建视图。 语法格式如下: CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下。 <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图... -
查询视图的sql语句(mysql创建视图sql语句)
2021-01-18 19:08:35查询视图的sql语句(mysql创建视图sql语句)2020-07-24 12:07:14共10个回答两种方式,一种是直接在sqlserver的列表中找到,另一种用写语句的方式查询.方法一:1、登陆sqlservermanagerstudio.2、在左边的树找到自己要查询... -
sqlserver之创建视图
2021-04-27 08:50:16sqlserver之创建视图 视图是一个虚拟的表,同真实的表一样,包含字段和记录。字段和记录的数据来源与其他表(可以是多表)或其他视图,对外呈现的是一张表,对内则是select语句。 视图的特点 通过视图看到的数据是... -
MySQL如何创建视图和用户
2021-11-30 09:11:551.2 使用 1.3 视图的规则和限制 二.用户管理 2.1 用户 2.1.1 用户信息 2.1.2 创建用户 2.1.3 删除用户 2.1.4 修改密码 2.2 数据库权限 2.2.1 给用户授权 2.2.2 回收权限 一.视图 1.1 概念 .... -
PostgreSQL创建视图
2020-06-28 18:24:03在PostgreSQL中,视图(VIEW)是一个伪表。 它不是物理表,而是作为普通表选择查询。视图也可以表示连接的...可以使用CREATE VIEW语句来在PostgreSQL中创建视图。 您可以从单个表,多个表以及另一个视图创建它。 语法 CR -
SQLServer--使用T-SQL语句创建视图、删除视图、查看视图
2017-08-31 01:31:36使用T-SQL语句操作视图提示:只能查看,删除,创建视图,不能对数据进行增,删,改操作。use StuManageDB go --判断视图是否存在 if exists(Select * from sysobjects where Name='View_ScoreQuery') drop view View... -
创建视图权限
2017-12-27 16:21:24如果只是查找同一方案中的表去创建视图,则只需要该用户有createview的权限便可创建。但是如果创建的视图涉及到要查询别的方案中的表,这时我们就需要select any table的权限了。 授权命令: CMD: sqlplus ... -
数据库实验四 创建和使用视图
2021-06-05 13:34:55掌握使用Management studio和SQL命令进行视图的创建、修改和删除。 掌握使用SQL命令对视图访问数据。 2.实验内容 创建一个简单的视图,查询课程号101的不及格的学生信息。 修改简单视图,查询课程号107成绩... -
MySql视图view的使用:创建、修改、删除
2018-09-18 10:59:00一、MySql创建视图 CREATE VIEW 视图名 AS SELECT 查询语句; 注:将SELECT 查询语句 替换成所写的sql语句 eg: CREATE VIEW v_article AS SELECT A.title, A.content, A.author, C.name AS categoryName FROM ... -
实验五、视图的创建与使用
2021-11-18 10:36:24一、实验目的 (1)理解视图的概念。 (2)掌握创建视图、测试、加密视图的方法。...并在创建视图时使用with check option。 create view stuview1 as select * from Student where Sex='男' with check option -
Oracle数据库scott用户创建view视图权限的操作方法
2021-05-03 03:28:351、首先打开SQL Plus窗口,然后窗口会提示你请输入用户名,如图所示2、...4、另外还有一种就是在给scott赋予view权限的同时创建表格(table),命令如下:?5、完成了以上4步操作的时候,我相信有很多初学者在开始的时... -
Oracle创建视图
2018-09-28 20:40:05//创建一个视图(相当于创建一张虚拟的表) create or replace view view_aa as select title,author from t_forum a,t_forumtype b where a.forumid=b.forumtypeid; select * from view_aa; 视图的优点: 1.安全... -
【数据库实验】实验四、 创建和使用视图
2021-06-16 15:45:17实验四、 创建和使用视图一、实验目的二、实验内容三、实验步骤、数据记录及处理1)创建一个简单的视图,查询课程号101的不及格的学生信息。2) 修改简单视图,查询课程号107成绩介于70-100的学生信息。3) 使用视图... -
MySQL查看所有视图的命令
2021-12-28 16:28:19有时为了查看特定数据库中所建立的所有视图,可以使用这个命令: 因为,视图其实就是一张虚拟的表,所以也可以认为是一张表,所以是 show table, 而它由于普通的表有所不同,所以有 status where comment=‘view’;... -
Mysql视图命令
2021-07-03 11:49:38创建视图 create or replace view view01 as //查询语句 with check option; view01 : 视图名称,自己取,跟表名类似; create or replace : 如果存在view01视图则重置,不存在则新建; with check option : 校验之后对... -
【数据库】MySQL索引和视图的创建
2022-05-08 22:03:02写在前面: 如果大家需要深入了解视图和索引,这里推荐...1、使用CREATE INDEX和ALTERTABLE命令为Student表创建一个名为S_dept的普通索引,以系别排序。 起初我们往表格里存储数据的时候,数据的物理存储顺序就是按.