精华内容
下载资源
问答
  • 2018-08-05 23:15:00

    一、视图方法

    点击数据库--右键--点击删除

    二、sql语句删除方法

    (1)  USE master    --向这个数据库

    DROP DATABASE E_Market     --删除E_Market数据库

    GO

    (2)判断数据是否有 E_Market 这个数据库、如果有就进行删除

    --判断数据是否有 E_Market 这个数据库、如果有就进行删除
    IF EXISTS(select * from sysdatabases WHERE name='E_Market')      注意:括号里面是单引号
    DROP DATABASE E_Market
    GO

    转载于:https://www.cnblogs.com/tangtangsimida/p/9427846.html

    更多相关内容
  • 数据库视图

    千次阅读 2022-04-14 17:16:02
    数据库中的视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据,行和列数据来自定义视图查询所引用的表,并且在引用视图时动态生成。视图是从一个或者多个表中导出的,视图的行为与表非常相似,...

    目录

    一、什么是视图

    二、如何创建视图

    1.创建视图

    2.语法解析

    三、如何使用视图

    1.视图查询操作

    2.视图新增操作

    3.视图删除操作

    4.视图修改操作 

    四、如何修改视图

    五、如何删除视图

    六、如何查看视图


    一、什么是视图

    百度百科的解释是:

    视图是一个虚拟表,视图并不在数据库中存储数据值,数据库中只在数据字典中存储对视图的定义。

    这显然是不能让我们满意的。

    数据库中的视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据,行和列数据来自定义视图查询所引用的表,并且在引用视图时动态生成。视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。视图可以使用户操作方便,而且可以保障数据库系统的安全。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化。同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

    视图是一个”虚表”,用大白话说,就是从已经存在的表的全部字段或数据中,挑选出来一部分字段或数据,组成另一张”并不存在的表”,这张虚表被称之”视图”。视图中的字段与对应的数据均来自已经存在的表。对于视图来说,这些已经存在的表就被称为”基表”。基表可以是一张表,也可以是多张表。视图的本质可以理解为一条查询语句,视图中显示的结果,就是这条查询语句查询出的结果。

    上面这一段话来自另外的一个博主的文章,在下面给出了引用链接。他的最后一句话说是一条查询语句,其实是不妥当的,应该是增删改查的语句。

    这篇文章中有一段话说得很好:

    不使用视图的理由:

    mysql对于视图的优化并不完善,这样说并不准确,准确的说,应该是mysql对于子查询的优化不是很好,而使用视图本身往往就意味着使用子查询,所以,如果我们必须使用视图时,最好将视图中的sql语句尽量优化,或者说,数据量大的时候尽量避免使用视图。

    事实确实如此。在写本文之前,我这么多年工作中从未使用过视图,以至于都忘记视图是怎么创建使用的了。在银行的开发中,我所涉及的项目从未有使用过视图,因为在一般情况下,基本的SQL就可以满足了,为什么要使用视图呢?你说呢?我所了解的,在上海的这些银行中,比如,交行卡中心、交总行、交银金科、建行、建信金科、建信人寿,我是没有见到过视图的,而且也从未听说过哪一位同事使用了视图。除此之外,其他如中行、上海银行、浦发银行,我的了解也没有听在里面的同事朋友使用过。 

    好了,我们总结一下吧!

    1、视图是一个虚拟表(逻辑表);

    2、视图中的行和列的数据来自一到多张物理表,也可以来源自其他视图;

    3、可以通过视图进行增删改查;

    4、如果通过视图进行增删改,那么物理表的数据也会随之做出同样的增删改;反之亦然。

    5、视图的使用比较少,起码相对于一般SQL来说,不在一个数量级上;

    6、视图是一种”虚表”,所以不能与已经存在的表重名。

    二、如何创建视图

    在创建视图之前,请先确定当前登录的数据库用户是否拥有创建视图的权限。

    select create_view_priv,select_priv from mysql.user where user='root' and host='localhost';

    查询结果中,create_view_priv的值为Y,表示当前用户拥有创建视图的权利。

    如果我们查询另外的用户: 

    select create_view_priv,select_priv from mysql.user where user='dake' and host='localhost';

     

    说明 dake 这个用户是不具备创建视图的权限的。

    下面我们说说如何创建视图。 

    1.创建视图

    CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
    
    AS
    
    SELECT查询
    
    [WITH READ ONLY CONSTRAINT]

    2.语法解析

    1. OR REPLACE:如果视图已经存在,则替换旧视图。

    2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。

    3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。

    4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

    接着,我们创建一个视图。

    首先,给出我的基表—STUDENT表的数据:

     然后,我们创建一个视图:

     CREATE VIEW VU_STUDENT AS SELECT * FROM STUDENT WHERE ID > 2;

     然后查看视图的情况,使用命令我们后续再讲。

    查看视图的数据:

    对比 STUDENT 这个基表,我们发现少了2行数据,这少的两行数据就是我们创建视图的时候的SQL中做了限制。

    下面我们再看看视图的原生语句。

     

    我把SQL贴出来:

    CREATE
    OR REPLACE
    VIEW `VU_STUDENT` AS select
        `STUDENT`.`ID` AS `ID`,
        `STUDENT`.`NAME` AS `NAME`,
        `STUDENT`.`GENDER` AS `GENDER`,
        `STUDENT`.`AGE` AS `AGE`,
        `STUDENT`.`CLASS_ID` AS `CLASS_ID`,
        `STUDENT`.`ADDRESS` AS `ADDRESS`
    from
        `STUDENT`
    where
        `STUDENT`.`ID` > 2

     我们看到,它自动增加了 OR REPLACE ,说明 Maria 创建视图时的默认设置。然后把 select * 自动变更为了需要查询的字段,这个是一般SQL的基本操作。

    这里说一下视图的命名。视图的命名最好也是比较规范的写法是加上一定的前缀,当然后缀也可以,这个按照项目要求或者项目统一规范即可。

    比如,我这里就是 VU_ 加上了表名,即 VU_STUDENT 。如果是两张表的话,可以是:

    VU_表1的名字_表2的名字

     这种方式,当然如果表名比较长,或者是多张表,你也可以使用这几张表的简写,或者根据你这个视图的业务逻辑来命名。

    示例视图命令解读

    上面我们创建的视图命令,可以分两部分来解读:

    1、CREATE VIEW VU_STUDENT AS

    2、SELECT * FROM STUDENT WHERE ID > 2;

    其中第一部分表示我们要创建一个视图,视图名为 VU_STUDENT,第二部分表示该视图的业务逻辑。两部分结合起来就是一个完整的视图了。

    上面我们创建的这个视图,得到的列名是和 STUDENT表是一样的,当然我们也可以自行定义列名。不过这个一般很少有人这么做,如果这么做是真的有点扯淡,闲得蛋疼了。不过事无绝对,如果你的视图要和另外的视图或表联合使用,而几张表中表示相同意义的字段名不一样,你使用的时候就有点麻烦。假设有表A和表B,两个表的某一个字段是一个意义,但是名字不一样。此时把你创建的这个视图(假设数据来源自表A)的这一列的列名,修改为和另一张表(表B)的这个列名相同,然后你的业务代码或SQL中对这个视图和表B的操作就方便很多了。

    这个给视图字段起别名的做法就像我们建表时类似。

    CREATE VIEW VU_STD (S_ID, S_NAME, S_GENDER, S_AGE, S_CLASS_ID, S_ADDRESS) AS SELECT * FROM STUDENT WHERE ID > 2;

    此时如果我们查看数据以及列名的话会发现:

     一目了然了吧!

    我们创建这个视图非常简单,其实是因为我们的SQL业务逻辑简单,也就是 示例视图命令解读

    2 中的SQL语句简单了。我们最开始说了,可以增删改查的,那么当然可以使用子查询、连接、分组等等SQL的操作,这个就看你自己的业务逻辑了骚年。

    三、如何使用视图

    1.视图查询操作

    在 二 中我们说了,视图就是一张虚标,你把他当做表即可。

    SELECT * FROM VU_STUDENT;

    我们上面说了,视图可以增删改查,那么增删改怎么使用呢?

    2.视图新增操作

    我们使用视图增加一条记录到 STUDENT 表中:

    CREATE VIEW VU_STD_DLT AS INSERT INTO STUDENT VALUES (14, '范冰冰', '01', 39, 5	, '上海浦东陆家嘴1124号');

     结果呢?

    报错了。是我们SQL有问题吗?

    我们执行SQL插入的逻辑:

    INSERT INTO STUDENT VALUES (14, '范冰冰', '01', 39, 5	, '上海浦东陆家嘴1124号');

    结果呢?

     insert 语句没问题啊!这是什么情况呢?是不是因为我们这个用户的原因呢?我们把登陆用户修改为root试试。

    再新增一条语句:

    CREATE VIEW VU_STD_DLT AS INSERT INTO STUDENT VALUES (15, '范蠡', '00', 50, 0	, '上海浦东陆家嘴1125号');

    结果:

     哈哈!错误是一样的。

    3.视图删除操作

    既然新增不行,那么我修改删除呢?我们先增加一条记录,然后执行删除:

    INSERT INTO STUDENT VALUES (15, '范蠡', '00', 50, 0	, '上海浦东陆家嘴1125号');

    视图删除:

    CREATE VIEW VU_STD_DLT AS DELETE FROM STUDENT WHERE ID = 15;

    删除报错:

    4.视图修改操作 

    那么修改呢?估计也一样。

    CREATE VIEW VU_STD_UPD AS UPDATE STUDENT SET ID = 16 WHERE ID = 15;

    结果:

     通过这几个操作我们得出了结论:

    1、视图的查询操作,可以直接在客户端使用,但是增删改却是不行的;

    2、视图和真实的物理表还是有一些区别的。

    四、如何修改视图

    ALTER VIEW VU_STUDENT AS SELECT * FROM STUDENT WHERE ID > 10; 

    然后查询视图的数据

    SELECT * FROM VU_STUDENT;

     其中第五行是我后面加上的。

    可以看到修改视图很简单。

    五、如何删除视图

    DROP VIEW VU_STUDENT;

     

     如果删除一个不存在的视图呢?

     报错了,那么我们可以使用下面的命令避免这种情况:

    DROP VIEW IF EXISTS VU_STUDENT;

     这样就不会报错了。

    六、如何查看视图

    查看视图的结构:

    DESC VU_STUDENT;

     查看某数据库中所有的视图:

    select * from information_schema.views where table_schema= 'study';

    本文参考:

    MariaDB 视图与触发器

    mysql/mariadb知识点总结 之 视图管理语句

    Oracle 视图详解(view)

    展开全文
  • 数据库视图

    2021-10-24 17:05:07
    数据库视图定义视图建立视图删除视图视图的使用视图的查询 定义视图 建立视图 SQL语言用CREATE VIEW命令建立视图,其中的格式如下 CREATE VIEW <视图名> [(<列名>[,<列名>]] AS <子查询>...

    定义视图

    建立视图

    SQL语言用CREATE VIEW命令建立视图,其中的格式如下

    CREATE VIEW <视图名> [(<列名>[,<列名>]]
    AS <子查询>
    [WITH CHECK OPTION]

    1,其中子查询是任意的select语句,可以包含GROUP BY等语句,不过这得看实际情况。
    2,WITH CHECK OPTION 表示在执行更新,删除,插入得操作时,被执行的行,首先要满足子查询中的谓语条件(即条件表达式)
    3,指定视图的列名只能全部省略或者是全部指定,但是有几种情况是一定要指定视图中的列名。

    1,创建视图时,在select语句中出现不是基本表中的列名,而是表达式或者是聚集函数,比如AVG(score),2019-year
    2,如果使用多张表创建视图,但是其中两张表中有相同的列名。

    4,视图的建立不同于基本表的建立,在建立视图后,系统只是将视图的定义的语句放入到数据字典中,当我们要查询的时候,就从数据字典中取出来并执行。执行更新等操作的时候,也是一个原理,只不过在视图定义的基础上加了更新的语句,详见请看后面。
    5,视图的建立可以基于多张表,也可以基于视图进行建立。如果一个视图是基于一个基本表创建的并且包含了主键,只是去除了某些行和列,在这里我们称为行列子集视图
    6,视图是是基于基本表所创建的,视图的列名和基本表中的列名具有一定的映射关系,因此当我们对基本表的结构进行该表的时候,可能会破坏这种映射的关系。因此当我们在涉及对表的结构进行修改的时候,我们应该删除原来的视图,创建新的视图。

    CREATE VIEW S(NAME,SEX,SCORE)
    AS 
    SELECT Name,Sex,Score 
    FROM   STUDENT
    //比如我们删除Sex这个列,那么它们之间的映射关系就会被破坏,系统就不能正常的工作
    

    删除视图

    删除视图的格式如下

    DROP VIEW <视图名> [CASCADE]

    DROP 命令将视图的定义从数据字典中删除,如果在这个视图上导出了其他的视图,我们应该使用级联删除语句CASCADE 将在这基础上的视图一起删除。

    DROP  VIEW S2  //视图s1是在s2基础上导出的视图,因此执行不成功
    DROP VIEW S1    //执行成功
    
    

    视图的使用

    视图的查询

    1,在用户使用视图进行相应的查询的时候,我们应该先检测有效性,即检测相关的表和视图是否存在。然后再从数据字典中取出视图的定义,并将视图定义中的子查询和用户定义的查询结合。转化为等价的查询语句,然后执行这种方式称为“视图消解”。

    CREATE VIEW S 
    AS 
    SELECT ID,NAME,SEX 
    FROM  STUDENT
    WHERE  SCORE>80
    //这是这个视图的定义
    当我们查询一个ID=20198990“时
    //等价转化的语句
    SELECT ID,NAME,SEX
    FEOM  STUDENT
    WHERE  SCORE>80 AND ID="20198990"
    
    

    2,视图的查询在行列子集视图都能进行正确的等价的转化,但是涉及到有表达式,或者是聚集函数的表达式时,我们应该基于基本表进行修改。

    CREATE VIEW S_C (SNO,GAVG)
    AS 
    SELECT SNO,AVG(GRADE)
    FROM  SC
    GROUP BY SNO
    //当我添加查询平均分大于90分时
    SELECT SNO,GAVG 
    FROM S_C  
    WHERE GAVG>90
    //等价转化为
    SELECT SNO,AVG(GRADE)
    FROM SC
    WHERE AVG(GRADE)>90
    GROUP BY SNO
    //聚集函数出现在where语句,这显示是错误的。我们应该转化为这种形式
    SELECT SNO,AVG(GRADE)
    FROM SC
    GROUP BY SNO
    HAVING AVG(GRADE)>90
    

    3,派生表和视图的区别,派生表出现在语句当中,当所有的语句执行完毕的时候就立即被删除。视图一经定义就被存放在数据字典之中,当我们要使用该视图的时候,就从数据字典中取出并执行。


    视图的更新

    1,更新视图是指插入,修改,删除数据,视图的更新操作和视图的查询一样,通过视图消解,将用户给的条件表达式同视图中子查询的条件表达式转化为等价的select语句。

    CREATE VIEW STUDENT
    AS 
    SELECT SNO,SNAME 
    FROM  S
    WHERE SDEPT='CS'
    WITH CHECK OPTION
    //我们修改计算机学院,学号为2019780的学生的信息
    UPDATE STUDENT 
    SET SNAME='张三'
    WHERE SNO='2019780'
    //等价转化为等价的语句
    UPDATE S 
    SET SNAME='张三'
    WHERE SNO='2019780' AND SDEPT='CS'
    

    2,加入 WITH CHECK OPTION 语句可以防止视图对视图之外的数据进行更改

    根据上列的视图
    INSERT INTO S VALUES('2019860','李四') 
    //此时我们可以观察到其他的值并没有给定,因此对了除条件表达式出现的列名,其他的列值是为空的
    

    3,并不是所有的视图是可以更新的,但是行列子集视图是可更新的,当时包含聚集函数和其他表达式的是不可更新的,因为它们映射到基本表的基本属性,是没法对应的。

    UPDATE S_G
    SET GAVG=90
    WHERE SNO='2019780'
    //这个语句是没办法转化为,对基本表的操作,因为聚集函数的更新,没办法修改各科的成绩
    

    展开全文
  • 主流数据库视图

    多人点赞 热门讨论 2022-04-11 23:15:49
    查询information schema.views表,可以查看到数据库中所有视图的详细信息 修改视图 CREATE OR REPLACE VIEW语句修改视图 使用ALTER语句修改视图 视图操作 使用SQL语句更新视图 基本表数据新增后视图自动更新 ...

    文章目录

    目录

    文章目录

    前言

    视图

    视图概述

    创建视图

    格式

    注意问题:

    示例

    查看视图的方法

    DESCRIBE语句查看视图基本信息

    SHOW TABLES语句查看视图基本信息

    查询information schema.views表,可以查看到数据库中所有视图的详细信息

    修改视图

    CREATE OR REPLACE VIEW语句修改视图

    使用ALTER语句修改视图

    视图操作

    使用SQL语句更新视图

    基本表数据新增后视图自动更新

    删除视图中的数据

    删除视图


    前言

    大家好,我是ice三分颜色。

    个人主页:ice三分颜色的博客

    本文讲了视图的相关知识,创建查看修改删除等。

    走过路过的小伙伴们点个赞和关注再走吧,欢迎评论区交流,努力什么时候开始都不算晚,那不如就从这篇文章开始!

    大家一起成长呀!笔芯


    视图

    视图概述

    1.视图(View)是一个存储指定查询语句的虚拟表,视图中数据来源于由定义视图所引用的表,并且能够实现动态引用,即表中数据发生变化,视图中的数据随之变化。(其本质是来说,是查询语句,起了名称的查询语句,一般我们在查询中写得普通的查询语句,查询完后关掉就没有了。但可以作为视图存下来)

    2.视图是一种数据库对象,是从一个或者多个数据表或视图(视图也可以从视图里进行查询哦)中导出的虚拟表,在数据库中只有视图的定义,而并没有存放视图中的数据,因为视图并没有真实存在的数据,真实的数据还在表中。

    3.浏览视图时所对应数据的行和列数据来自定义视图查询所引用的表,并且在引用视图时动态生成。通过视图可以实现对基表数据的查询修改。(不能直接进行插入操作哦)

    4.视图让数据库用户使用的更方便了,主要包括:

    简化数据查询和处理。视图可以为用户集中多个表中的数据,简化用户对数据的查询和处理。

    屏蔽数据库的复杂性。数据库表的更改不影响用户对数据库的使用,用户也不必了解复杂的数据库中的表结构。(对于定义了若干张表连接的视图,则将表与表之间的连接操作对用户隐蔽起来。)

    安全性。如果要使用户只能查询或修改用户有权限访问的数据,可以只授予用户访问视图的权限,而不授予访问表的权限,这样来提高数据库的安全性。

    创建视图

    格式

    视图可以建立在一张表上,也可以建立在多张表或既有视图上。格式如下:

    CREATE [OR REPLACE] VIEW 视图名[(column_list)]AS select查询语句

    [ WITH [ CASCADED|LOCAL] CHECK OPTION] ;其中:

    REPLACE表示替换已经创建的视图; WITH[CASCADED|LOCAL]CHECK OPTION表示视图在更新时保证在视图的权限范围之内CHECK OPTION 也叫做强制视图,不建议。CASCADED为默认值,表示更新视图时要满足所有相关视图和表的条件;LOCAL表示更新视图时满足该视图本身定义的条件即可,但一般不被允许。

    视图属于数据库,默认情况下将在当前数据库创建视图,若想在给定数据库常见视图,创建时应将名称指定为 库的名字.视图名字。

    创建视图要求用户具有针对视图的CREATE VIEW权限,同时具有查询设计的列的SELECT权限。

    例:通过SELECT语句查询user表获取权限信息(其中Select priv表示用户是否具有SELECT权限,Create_view表示用户是否具有CREATE VIEW权限)

    SELECT Select_priv,Create_view_priv

    FROM mysql.user WHERE user='root';

    注意问题:

    使用CREATE VIEW语句创建视图时需要注意:

    1.在视图的from子句中不能使用子查询。

    2.在视图的select语句中不能引用系统或用户变量。

    3.在视图的select语句中不能引用预处理语句参数。

    4.在视图定义中允许使用order by,但是,如果从特定视图进行了选择,而该视图使用了具有自己order by的语句,它将被忽略。

    5.在定义中引用的表或视图必须存在。可使用check table语句检查视图定义是否存在。

    6.在定义中不能引用temporary表,不能创建temporary视图。

    7.不能将触发程序与视图关联在一起。

    示例

    创建一个包含员工编号、姓名、职位和部门编号,并按员工编号升序排序的员工基本信息视图

    CREATE VIEW v_emp_base

    AS SELECT empno,ename,job,deptno FROM employee ORDER BY empno;

    创建一个包含多表连接,以及分组查询的视图(视图的SELECT查询可以包含函数、数据组或经过运算得到的数据,也可以是从多个表中获取数据。)

    CREATE OR REPLACE VIEW v_dept_sal(name,minsal,maxsal,avgsal)

    AS

    SELECT d.dname,MIN(e.sal),MAX(e.sal),AVG(e.sal)

    FROM department d,employee e

    WHERE d.deptno = e.deptno GROUP BY d.dname;

    查询这个视图

    SELECT *from v_dept_sal;

    【示例】创建一个工资大于2000的员工年薪信息的视图(如果视图中的SELECT子句包含限定条件,创建视图时可以使用WITHCHECK OPTION选项。)

    -- 表示在更新该视图时,记录数据要满足工资大于2000的条件

    CREATE VIEW v_emp_salary

    AS

    SELECT empno,ename,sal*12 salary

    FROM employee

    WHERE sal>2000 WITH CHECK OPTION;

    查看视图的方法

    describe、show tables、show table status、show create view语句、查询information_schema数据库下的views表等。

    DESCRIBE语句查看视图基本信息

    DESCRIBE | DESC 视图名;

    演示如下:

    DESCRIBE v_emp_salary;

    SHOW TABLES语句查看视图基本信息

    从MySQL5.1开始,执行SHOW TABLES语句时不仅会显示表的名字,同时也会显示视图的名字。

    SHOW TABLES;

    演示如下:

    show tables;

    查询information schema.views表,可以查看到数据库中所有视图的详细信息

    MySQL数据库中,所有视图的定义都存在information_schema数据库下的views表中。

    SELECT * FROM information_schema.views WHERE 表名='视图名';

    例:查询v_emp_salary视图定义

    SELECT * FROM information_schema.views WHERE table_name='v_emp_salary';

    修改视图

    修改数据库中存在的视图,当基本表的某些字段发生改变时,可以通过修改视图来保持视图和基本表的一致。

    MySQL中通过CREATE OR REPLACE语句和ALTER语句来修改视图

    CREATE OR REPLACE VIEW语句修改视图

    CREATE OR REPLACE VIEW 视图名 [[(字段列表)]As select查询语句

    [ WITH [ CASCADED|LOCAL] CHECK OPTION] ;

    Create or replace view vw_dept

    AS

    Select *from dept;

    查看视图

    当视图已经存在时,修改语句对视图进行修改;当视图不存在时,创建视图。

    使用ALTER语句修改视图

    ALTER VIEW 视图名字 [(字段列表)]As select查询语句

    [ WITH [ CASCADED|LOCAL] CHECK OPTION];

    修改v_emp_base视图将deptno列改为sal列显示

    ALTER VIEW v_emp_base

    AS SELECT empno,ename,job,sal FROM employee ORDER BY empno;

    视图操作

    在视图上也可以进行修改数据的DML操作(INSERT、UPDATE和DELETE)。因为视图是“虚表”,因此对视图的操作最终会转换为对基本表的操作。

    视图上的DML操作会有如下限制:

    1.若一个视图依赖于多张基表,则一次只能修改一个基表的数据,不能同时修改多个基本表的数据;

    2.如果修改违反了基表的约束条件或视图的with check option条件,则无法更新视图;

    3.如果视图包含连接操作符、DISTINCT关键字、集合操作符(UNION) .聚合函数(COUNT、SUM、MAX等)、GROUP BY、ORDER BY、HAVING子句,则将无法更新视图;

    4.如果视图包含SELECT列的子查询、WHERE子句中的子查询、FROM子句中的子查询,则无法更新视图。

    使用SQL语句更新视图

    通过对视图的更新操作来更新基本表数据

    --根据emloyee表创建empview表

    CREATE TABLE empview AS SELECT * FROM employee;

    --创建视图v_emp_update

    CREATE OR REPLACE VIEW v_emp_update

    AS SELECT empno,ename,sal,deptno FROM empview WHERE deptno=20 WITH CHECK OPTION;

    --操作视图v_emp_update更新数据

    UPDATE v_emp_update SET sal=1000 WHERE ename='SMITH';

    --查看基本表empview中数据的变化

    SELECT empno,ename,sal,deptn o FROM empview WHERE ename='SMITH';

    最后结果如下:

    基本表数据新增后视图自动更新

    向基本表中插入数据,视图数据相应更新--向基本表empview中插入一条记录

    INSERT INTO empview VALUES(7777,'TEST','CLERK',7902,2020-12-17,800,NULL,20);

    --查询视图v_emp_update的数据变化

    SELECT * FROMv_emp_update;

    删除视图中的数据

    使用DELETE操作视图来更新基本表数据--删除视图中的数据

    DELETE FROM v_emp_update WHERE empno=7777;

    --查询基本表中数据的变化

    SELECT* FROM empview;

    删除视图

    删除视图时,只能删除视图的定义,不会删除数据。

    MySQL数据库中,用户必须拥有drop权限才能使用drop view语句来删除视图。

    drop view命令可以删除多个视图,各视图名之间用逗号分隔。

    DROP VIEW [if exists] 视图名 [,视图名]

    删除视图v_emp_update

    DROP VIEW IF EXISTS v_emp_update;

    视图就没有啦

    展开全文
  • :一、使用命令创建视图并对视图进行查询、修改、删除等操作;二、用命令的方法创建索引,以及进行重命名和删除操作;三、建立完整性约束,并对其进行相应操作;四、创建存储过程,并对其进行查看,
  • 数据库 视图创建

    2022-04-24 15:54:41
    删除视图 drop view 视图名; 查看视图字段信息 desc 视图名; 查看视图创建语句 show create view 视图名\G; 修改视图 alter view视图名 as 查询语句; 创建或修改视图 create or ...
  • SQL Server 数据库视图

    千次阅读 2022-03-17 17:07:08
    MySQL 数据库视图 视图的增删查改操作介绍
  • SQL Server 数据库视图(二)

    千次阅读 2022-04-04 21:29:36
    视图(二)1. 查询视图信息1.1 查询和视图设计工具 1. 查询视图信息 1.1 查询和视图设计工具 打开视图的定义、显示查询视图的结果
  • 数据库——视图

    2022-04-20 23:02:27
    视图 事务 数据库优化 存储引擎 索引
  • MySQL——删除视图

    万次阅读 2018-05-17 00:01:54
    删除视图是指删除数据库中已存在的视图删除视图时,只能删除视图的定义,不会删除数据。 语法格式: DROP VIEW [ IF EXISTS ] view_name [, view_name] … [ RESTRICT | CASCADE ] a. IF EXISTS ...
  • 查询序列 select * from user_sequences; 创建序列 CREATE SEQUENCE (序列名) --序列名 INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 ...
  • 修改、查询、删除视图命令跟建表时的一样。视图是从一个或多个表(或视图)导出的表。视图数据库的用户使用数据库的观点。可以根据他们的不同需求,在物理的数据库上定义他们对数据库所要求的数据结构,这种根据...
  • 数据库的常用命令

    千次阅读 2022-03-12 19:05:14
    MySQL测试 1.文件的导入: 数据库sql文件的导入输入 source XXX/test.sql 这样我们可以用脚本文件不用敲这么...但是字符串常量区分大小写,建议命令大写,表名库名小写; SQL语句可单行可多行书写,以分号结尾;...
  • 达梦数据库物化视图的简单使用

    千次阅读 2020-03-13 18:46:15
    物化视图存储基表的数据,与视图不同的是,物化视图可以通过刷新来同步基表的数据。 二、创建、修改物化视图 1.例子 create materialized view mv_test build immediate refresh force on demand with rowid ...
  • 数据库视图 sql

    千次阅读 2021-01-28 08:08:21
    数据库必知词汇:数据库视图视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,...
  • 视图中也包含了一系列带有名称的列和行数据,但是数据库中只是存放视图的定义,也就是动态检索数据的查询语句,而并不存放视图中的数据,这些数据依旧存放于构建视图的基础表中,只有当用户使用视图时才去数据库请求...
  • 金仓数据库KingbaseES视图的管理
  • 在SQL中delete命令和truncate命令都可用于删除数据(记录) delete、truncate、drop命令之间的区别 delete truncate drop 命令类型 数据操作语言(DML)命令删除的数据将存储在系统回滚段中,...
  • MySql 数据库查看视图的创建sql语句

    千次阅读 2022-04-07 08:05:45
    在网上能找到大量的视图创建、修改、删除的语句,但是查看创建语句的语句不好找。 show create view VIEW_NAME
  • 再有就是后面的,视图并不在数据库中以存储的数据值集形式存在,而这句话正好证实了我前面一句,增删改还得去具体表,视图里面是不存着数据的。 视图的作用和好坏处 大概知道这么多,我们再来说一下这个东西有啥...
  • 数据库视图、权限授予

    千次阅读 2020-06-19 18:22:06
    数据库视图 view 视图,可以以不同角度来看数据,从而简化查询,随着数据改变而改变 定义:create view(列) as select… with check option(限制更新) create view SdeptAge(Sdept,Age)as select Sdept,...
  • 数据库视图的作用

    千次阅读 2017-06-07 20:52:15
    背景:现在要做一个用户管理的系统,需要我们提供服务来实现和原始数据库的兼容,但是现在我们的数据库和网站数据库中存储的内容或者说是字段有些不同,但是我们还是希望可以的话,将改动降低到最小,当然,这只是我...
  • 数据库视图和触发器

    2019-10-07 13:48:56
    4.视图: 是一个虚拟的表 有行有列有数据 视图中存的 查询语句 视图中的数据依赖于原数据 当查询的复杂度较大时,多字段,多关系,会导致查询混乱,不利于sql的编写和可读性 会影响sql的拼接,视图就是对查询结果...
  • 视图(View)并不在数据库中实际存在,而是一种虚拟表,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。即视图就是执行查询语句后所返回的结果集,所以在创建视图的时候,主要就是创建这条...
  • MySQL数据库视图的增删改查操作

    千次阅读 2020-07-26 20:17:36
    MySQL数据库视图的增删改查操作视图是什么视图的作用1) 简单2) 安全视图的语法创建视图语法:查询视图注意:删除视图修改视图使用视图代码案例:视图的修改 视图是什么 视图View是一种虚拟的表,本身不保存数据,...
  • 《oracle数据库视图

    千次阅读 2019-03-14 20:18:53
    视图 从表中抽出的逻辑上相关的数据集合。 视图是一种虚表。 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句。...
  • 1. 登录数据库 命令 说明 mysql –uroot –p -u:用户名 -p:密码 mysql –h121.234.324.324 –P3306 –uroot –p -h:host(主机),-P(大写P):端口 如果想在这台服务器访问别的服务器上的数据库...
  • SQL数据库视图

    千次阅读 2017-11-01 15:07:45
    视图只能建立在当前正在使用的数据库中。 优点:1.可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。 2.使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化...
  • 目录 一、视图 (1)、创建视图 使用SQL Server Mannagement Studio创建视图 ...使用SQL Server Management Studio 窗口直接删除视图 使用SQL语句删除视图 二、索引文件的创建与删除 (1)、创建索...
  • 表和视图的创建与操作创建表的语法查看表结构修改表结构添加列修改列类型修改列名删除列名表名的修改删除已创建的表视图的创建重命名视图删除视图补充 表和视图的创建与操作 创建表的语法 表的基本创建语法如下: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,485
精华内容 46,994
关键字:

数据库删除视图命令