精华内容
下载资源
问答
  • 我有以下几张表:-------image表--------org表-----------user表---------album表----我要将以上四张表关联,可以用sql的join连接语句,但是会很麻烦,现在在mysql创建一个视图会很方便解决这四个表连接...

    视图可以说是一种虚拟表,建立在基本表的基础上,通过关联一个表或者多个表来获取多个表中需要的字段,视图只是用来查询数据并不能用来存储数据信息。

    我有以下几张表:

    591527c02db987e22e88466d16c71f34.png

    a710ca539ee8cdb0bcec84feb545ed74.png

    -------image表----

    8ede3a083cfad6e20520f8e87570b0b0.png

    ----org表------

    a8a8cecaa629f8fad45a2240699f46f6.png

    -----user表-----

    1378a14de2926780458f97c5fbb240f2.png

    ----album表----

    我要将以上四张表关联,可以用sql的join连接语句,但是会很麻烦,现在在mysql中创建一个视图会很方便的解决这四个表连接的问题。sql语句如下:

    CREATE

    VIEW v_image_org_user_album AS--创建视图并命名v_image_org_user_album

    SELECT --先开from中表的命名

    a.id AS imgid,--将a表中的id命名为新的表(视图)中的imgid字段,剩下的都一样,就是将之前的字段重新命名到新视图表中的字段

    a.comment AS comment,

    a.createtime AS createtime,

    a.path AS path,

    b.name AS authorname,

    b.orgcode AS userorgcode,

    c.name AS orgname,

    e.name AS album

    FROM

    t_image a,--image表命名为a

    t_user b,--user表命名为b

    t_organization c,--organzation表命名为c

    t_album_image d,--album_image表命名为d

    t_album e--album表命名为e

    WHERE

    a.useracc = b.account

    AND b.orgcode = c.orgcode

    AND a.id = d.imageid

    AND d.albumid = e.id

    在数据库中的的编译器中执行该段sql语句,生成以v_image_org_user_album命名的视图表,并且会自动匹配到数据库中存储的数据

    然后在项目中创建相应的域类(grails项目),字段就是视图表中新命名的字段,就可以直接按照新字段进行sql语句的增删改查操作,但是,项目移植时视图要重新生成。这样就将多个表进行关联了,可以直接使用视图表中的字段。

    展开全文
  • 查询视图的sql语句(mysql创建视图sql语句)2020-07-24 12:07:14共10个回答两种方式,一种是直接在sqlserver的列表中找到,另一种用写语句的方式查询.方法一:1、登陆sqlservermanagerstudio.2、在左边的树找到自己要查询...

    查询视图的sql语句(mysql创建视图sql语句)

    2020-07-24 12:07:14

    共10个回答

    两种方式,一种是直接在sqlserver的列表中找到,另一种用写语句的方式查询.方法一:1、登陆sqlservermanagerstudio.2、在左边的树找到自己要查询的数据库.如图:3、点击“表”,就能看到这个库中的所有表了.方法二:1、登陆sqlservermanagerstudio.2、点击左上角的“新建查询”.3、在窗口中编写sql语句如下,然后运行1selectnamefromsysobjectswherextype='u'orderbyname结果截图:

    33fe8bfaec8c9b1db1e6cbacd31e2a4e.png

    如果你是使用者那是看不到代码的如果你是开发者在recordset和connection附近很容易就能找到对应的sql语句

    137aa1570818c7c28d76772138768d23.png

    SELECTnameAS视图名,textAS视图定义FROMsys.objectsJOINsys.syscommentsONsys.objects.object_id=sys.syscomments.idWHEREtype='V'ORDERBYname

    91f4a0260e8d8b33f255dc067937938d.png

    select*fromsysobjectswhere[xtype]='V'select[name]fromsysobjectswhere[xtype]='V'查询分析器里using你要查找的数据库名字select[name]fromsysobjectswhere[xtype]='V'就可以得到结果了

    25776f62de592e93be5392310139197a.png

    createviewDep_MSalaryasselect部门名称,salary.月份,max(sum(salary.工资))最高工资,min(sum(salary.工资))最低工资fromEmployee,Departments,Salarywhere

    de292524810b3d95b38923b505828571.png

    什么意思啊?视图是基于基本表建立的,不实际存储数据.查询是一种操作,sql是一种语言(结构化查询语言),查询的实现就要用到sql语句,视图的建立也需要用sql语句,另外可以基于视图就行查询(检索数据).

    24a7bd6aa8e7f35e3e8a0bd00bd4ebf2.png

    可以通过sp_helptext来读取视图对应的sql语句如:sp_helptext视图名

    2882c89e639363000f15bc20406364c4.png

    视图是一种虚拟的表,是一个为了简化复杂查询语句的书写,另外也提高了数据库一定的安全性.查询是利用sql语句并按照自己的需求进行的检索过程,最终得到自己想要的结果.对数据库中的数据并不进行更新修改等.SQL语言是一种结构化的查询语言,利用sql语言可以对数据库中数据进行各种查询、更新等操作

    51a205c2b1f8c659857e136bace428b8.png

    要建立视图首先你要有权限,登录sys把视图权限给你操作的数据库grantcreateviewto你使用的数据库名然后在创建视图比如createorreplaceviewv_menu_pop(视图

    4cbc7335cf89dfe95f706bfb2ff33868.png

    从三个方面来区分的话:1、存储:视图存储为数据库设计的一部分,而查询不是.视图可以禁止所有用户访问数据库中的基表,而要求用户只能通过视图操作数据.这种方法可以保护用户和应用程序不受某些数据库修改的影响,同样也可以保护数据表的安全性.2、排序:可以排序任何查询结果,但是只有当视图包括TOP子句时才能排序视图.3、加密:可以加密视图,但不能加密查询.

    展开全文
  • MySQL 获取创建视图的SQL语句
         视图本质上只是一条SQL语句而已、但令人蛋疼的是MySQL并没有把该SQL语句存储下来
         而是像对待表一样、把视图的定义用文件的形式保存、以 .frm 存在
         那么用show create view 显示的SQL将非常不友好
         

         下面介绍一种方法来突破这种限制


    创建视图:
    
    mysql> create view v_t as select id from t where id=2;
    Query OK, 0 rows affected (0.03 sec)
    
    到相应目录查找视图定义文件:
    
    [mysql@obe11g test]$ pwd
    /home/mysql/mysql/data/test
    [mysql@obe11g test]$ ls -alh
    total 128K
    drwxr-xr-x  2 mysql dba 4.0K Jul 27 19:45 .
    drwxr-xr-x  5 mysql dba 4.0K Jul 27 19:13 ..
    -rw-r--r--  1 mysql dba   65 Jun 19 10:20 db.opt
    -rw-rw----  1 mysql dba 8.4K Jul 24 19:58 t.frm
    -rw-rw----  1 mysql dba  96K Jul 27 19:44 t.ibd
    -rwxrwxrwx  1 mysql dba  451 Jul 27 19:45 v_t.frm
    
    
    先用 show create view查询:
    
    mysql> show create view v_t;
    +------+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
    | View | Create View      | character_set_client | collation_connection |
    +------+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
    | v_t  | CREATE ALGORITHM=UNDEFINED DEFINER=`waterbin`@`localhost` SQL SECURITY DEFINER VIEW `v_t` AS select `t`.`id` AS `id` from `t` where (`t`.`id` = 2) | utf8                 | utf8_general_ci      |
    +------+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
    1 row in set (0.00 sec)
    
    会发现包含大量转义符、引号、没有代码格式化、没有注释、没有缩进等等、可读性很差、无法快速拷贝进行重建视图
    
    查询创建视图的SQL语句:
    
    SELECT
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    SUBSTRING_INDEX(LOAD_FILE('/home/mysql/mysql/data/test/v_t.frm'),
    '\nsource=',-1),
    '\\_','\_'), '\\%','\%'), '\\\\','\\'), '\\Z','\Z'), '\\t','\t'),
    '\\r','\r'), '\\n','\n'), '\\b','\b'), '\\\"','\"'), '\\\'','\''),
    '\\0','\0')
    AS source;
    
    输出结果、第一行便是该SQL:
    
    +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | source                  |
    +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | select id from t where id=2
    client_cs_name=utf8
    connection_cl_name=utf8_general_ci
    view_body_utf8=select `test`.`t`.`id` AS `id` from `test`.`t` where (`test`.`t`.`id` = 2)
     |
    +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    


         创建视图的SQL包含了一个load_file()函数、为了使用该函数、必须满足下面所有条件:
         
         ① the file must be located on the server host
         ② you must specify the full path name to the file
         ③ you must have the FILE privilege
            验证:select user,file_priv from mysql.user;
         ④ The file must be readable by all
            提醒:这里的all、不仅是OWNER、GROUP;还特指OTHERE!! 
         ⑤ its size less than max_allowed_packet bytes
         ⑥ If the secure_file_priv system variable is set to a nonempty directory name
            the file to be loaded must be located in that directory



    By DBA_WaterBin

    2013-07-28

    GOOD Luck

    展开全文
  • 视图相当于我们提前编写好查询,在需要使用时候才执行,这样就简化了SQL语句,对于一些复杂且又需要重复语句起到了简化作用,也提高了SQL重用性。其次视图只是一个虚拟表,对原始数据起到了保护作用,...

    b1f0e3e37a0c925d4f343c0a6b01ce13.png

    视图在数据库中是一个虚拟表,数据来自于数据表,且执行时才会生成。视图相当于我们提前编写好的查询,在需要使用的时候才执行,这样就简化了SQL语句,对于一些复杂且又需要重复的语句起到了简化的作用,也提高了SQL的重用性。其次视图只是一个虚拟表,对原始的数据起到了保护的作用,提高了安全性。

    一、视图创建

    create view 视图名
    as
    查询语句;

    二、视图的修改

    ①、create or replace view 视图名
    as
    查询语句;

    ②、alter view 视图名
    as
    查询语句;

    三、删除视图

    drop view 视图名,视图名,....

    四、查看视图

    ①、desc 视图名;

    ②、show create view 视图名;

    五、使用视图

    ①、查询:select * from 视图名 .....
    ②、修改:update 视图名 add/modify .....
    ③、删除:delete from 视图名 where.....
    ④、插入:insert into 视图名 ....

    注意:视图一般用于查询,而不是用于更新,且具备以下特点的视图都不允许更新:

    ①、包含分组函数:group by 、distinct、having、union
    ②、join 连接
    ③、常量视图
    ④、where后的子查询使用到了from中的表
    ⑤、视图中使用了其他不可更新的视图

    六、视图与表的区别

    ①、视图对应view,表对应table
    ②、视图占用较小,只保存sql逻辑,而表保存实际的数据
    ③、视图一般用于查询

    展开全文
  • MySql 数据库查看视图的创建sql语句

    万次阅读 2019-02-22 22:16:06
    在网上能找到大量的视图创建、修改、删除的语句,但是查看创建语句的语句不好找。 show create view VIEW_NAME  
  • 视图:对于一个sql查询,如果发生了修改,就需要修改sql语句。我们可以通过定义视图来解决问题。改变需求之后就改变视图视图是对查询封装定义视图: create view 视图名称 as select语句;例如:定义视图 查询所有...
  • 概念一条或者多条sql语句的集合!事务:就是一堆操作集合,他们同生共死。要么都执行成功,要么都执行失败2.事务特性 ACIDA:原子性 完整,不可分割原子性 (Atomicity):在事务中操作,要么都执行,要么都...
  • SQL 中,一个视图是基于某个 SELECT 语句的结果集可视化表。视图包含行和列,就像一个真实表。视图域就是来自一个或多个数据库中真实表中域。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句...
  • 一、视图视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。使用视图我们可以把查询过程中临时表摘...
  • 查询、修改、删除视图的sql语句和表是一样的。注:在这里使用的mysql客户端为“Navicat for MySQL”。1、选中表中字段。视图中不能有重复的字段。 2、切换到“定义”选项卡,可以看到创建视图的实际sql语句。`info` ...
  • 一、视图本质上相当于一张“虚拟表”,可当作...使得外部调用不用每次都编写复杂的SQL语句,直接当作一张“虚拟表”来调用即可等等,听说你们都很喜欢我~那给个小心心00~,为了表扬你们,戳这里有你们想要的完整zlCu...
  • 在不同的使用场景下,比如商品展示的,商品列表,商品详情,可能会用到相同的业务逻辑,而且这个逻辑写出的sql语句特别的麻烦,没有必要重复书写多次,可以使用视图,一次创建,下一次使用相同的逻辑的时候,使用...
  • 什么是视图视图是数据库中一个对象,它是数据库管理系统提供给用户以多种角度观察数据库...重用SQL语句4.保护数据安全5.共享所需数据6.更改数据格式CREATE TABLE customers(cust_id int NOT NULL AUTO_INCREMEN...
  • 2018-06-01 回答一、 简单查询简单transact-sql查询只包括选择列表、from子句和where子句。它们分别说明所查询列、查询表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为"张三"nickname字段...
  • 一、注意点1、索引视图所引用的基表...4、在创建索引视图的select语句时,不能使用*,必须指定具体的列名;5、只能为索引视图创建唯一聚集索引;6、索引视图中的select包含一个或多个 UNION、INTERSECT 或 EXCEPT...
  • 主键索引是一种特殊唯一索引,不允许有空值创建、删除语句:alter table [table_name] add primary key (column_name)create table [table_name](id int not null,primary key (id))alter table drop primary key2...
  • SQL CREATE VIEW 语句SQL 中,视图是基于 SQL 语句的结果集可视化表。视图包含行和列,就像一个真实表。视图字段就是来自一个或多个数据库中真实表中字段。您可以向视图添加 SQL 函数、WHERE ...
  • mysql sql语句生成日历表 (主要用于按月,按天group by分组统计时,有些日期没有记录,需要补0)从自定义开始时间,生成1万条记录CREATE TABLE if not exists num (i int);-- 创建一个表用来储存0-9数字INSERT ...
  • 分享给大家供大家参考,具体如下:mysql5.x 版本之后支持数据库视图,在mysql中,视图的几乎特征符合SQL:2003标准。 mysql以两种方式处理对视图的查询:第一种方式,MySQL会根据视图定义语句创建一个临时表,并在此...
  • 查询、修改、删除视图的sql语句和表是一样的。注:在这里使用的mysql客户端为“Navicat for MySQL”。1、选中表中字段。视图中不能有重复的字段。2、切换到“定义”选项卡,可以看到创建视图的实际sql语句。`info` ...
  • 如果我们的语句为:sql;">IF NOT EXISTS(SELECT 1 FROM sys.views WHERE name='Report_IndividualTicket')BEGINcreate view Report_IndividualTicketasSELECT Ticket.TicketNumber,Ticket.TicketID,GisProcess....
  • 一....对employees表中员工部门号创建普通索引depart_ind.mysql> create index depart_ind-> on employees(员工编号);Query OK, 12 rows affected (0.04 sec)Records: 12 Duplicates: 0...
  • 创建数据库快照数据库快照是源数据库只读、静态视图。一个源数据库可以有多个数据库快照。数据库快照主要作用是:维护历史数据以用于制作各种报表,可以使用数据库快照将出现错误源数据库恢复到创建快照时...
  • 掌握创建视图的SQL语句的用法。2.掌握使用企业管管理器创建视图的方法。 3.掌握使用创建视图向导创建视图的方法。 4.掌握查看视图的系统存储过程的用法。 5.掌握修改视图的方法。 一. 实验准备1.了解创建视图...
  • MySql创建视图

    2016-04-29 15:09:00
    SQL 中,视图是基于 SQL 语句的结果集可视化表。 视图包含行和列,就像一个真实表。视图字段就是来自一个或多个数据库中真实表中字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,...
  • 视图的简介视图:view 是一种有结构(有行有列)但是没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生的(视图的数据来源)视图的意义1. 视图可以节省SQL语句: 将一条...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,298
精华内容 519
关键字:

mysql创建视图的sql语句

mysql 订阅