39.1、视图:

0、创建表及插入数据:

1、创建teacher表及插入数据:

(1)创建表:

CREATE TABLE teacher(

tid int PRIMARY KEY auto_increment,

tname VARCHAR(20) not null

);

(2)插入数据:

insert into teacher(tid,tname) values(1,'张磊老师'),(2,'李平老师'),(3,'刘海燕老师'),(4,'朱云海老师'),(5,'李杰老师');

(3)查看数据:

2、创建course表及插入数据:

(1)创建表:

CREATE TABLE course(

cid INT PRIMARY KEY auto_increment,

cname VARCHAR(20) not null,

teacher_id INT,

FOREIGN KEY(teacher_id) REFERENCES teacher(tid)

);

(2)插入数据:

insert into course(cid,cname,teacher_id) values(1,'生物',1),(2,'物理',2),(3,'体育',3),(4,'美术',2);

(3)查看数据:

1、什么是视图:

视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,

用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。使用视图我们可

以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重

写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中

的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,

因此并不推荐使用。

例如查询李平老师教授的课程名的sql:

select cname from course where teacher_id = (select tid from teacher where tname='李平老师');

#子查询出临时表,作为teacher_id等判断依据

2、创建视图:

(1)语法:

CREATE VIEW 视图名称 AS SQL语句

(2)例子:

1)创建视图:

create view teacher_view as select tid from teacher where tname='李平老师';

2)于是查询李平老师教授的课程名的sql可以改写为:

select cname from course where teacher_id = (select tid from teacher_view);

(3)注意事项:

1)使用视图以后就无需每次都重写子查询的sql,但是这么效率并不高,还不如我们写子查询的效率高。

2)而且有一个致命的问题,视图是存放到数据库里的,如果我们程序中的sql过分依赖于数据库中存放

的视图,那么意味着,一旦sql需要修改且涉及到视图的部分,则必须去数据库中进行修改,而通常在公

司中数据库有专门的DBA负责,你要想完成修改,必须付出大量的沟通成本,DBA可能才会帮你完成修

改,极其地不方便。

3、使用视图:

(1)select * from course;

(2)创建表course的视图:

create view course_view as select * from course;

(3)查询视图:

select * from course_view;

(4)更新视图中的数据:

update course_view set cname='xxx' where cid=1;

(5)往视图中插入数据:

insert into course_view values(5,'yyy',2);

(6)发现原始表的记录也跟着修改了:

select * from course;

(7)注意:

我们不应该修改视图中的记录,而且在涉及多个表的情况下是根本无法修改视图中的记录的。

4、修改视图:

(1)语法:

ALTER VIEW 视图名称 AS SQL语句

(2)示例:

1)修改视图:

alter view teacher_view as select * from course where cid>3;

2)查看视图:

select * from teacher_view;

5、删除视图:

(1)语法:

DROP VIEW 视图名称

(2)示例:

1)查看数据库中有哪些视图:

SHOW FULL TABLES IN test WHERE TABLE_TYPE LIKE 'VIEW';

2)删除:

DROP VIEW teacher_view;

DROP VIEW course_view;

39、mysql数据库(视图)的更多相关文章

  1. mysql 数据库视图迁移

    最近做一个项目,为了方便查询,建了好多的视图表,正式上线的时候需要把本地数据库迁移到服务器上. 按照常规方法: 1."导出sql","导入sql",发现视图没过 ...

  2. mysql数据库视图连接出现2003····错误

    MySQL利用视图工具连接数据库时出现2003····错误                                                  原因:MySQL的服务没有开启 解决步骤: ...

  3. mysql数据库----视图、触发器、存储过程、函数、事务、索引、其他语句

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( S ...

  4. MySQL数据库----视图

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时 ...

  5. 【Java】访问mysql数据库视图

    数据库连接Connect: package cn.hkwl.zaxq.mysql; import java.sql.Connection; import java.sql.DriverManager; ...

  6. MySQL数据库视图(view),视图定义、创建视图、修改视图

    原文链接:https://blog.csdn.net/moxigandashu/article/details/63254901

  7. MySQL数据库之视图

    1 引言 为了简化复杂SQL语句编写,以及提高数据库安全性,MySQL数据库视图特性.视图是一张虚拟表,不在数据库中以储存的数据值形式存在.在开发中,开发者往往只对某些特定数据和所负责的特定任务感兴趣 ...

  8. MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

    浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视 ...

  9. MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份

    一.视图 -- view 视图:是一个虚报表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图有如下特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系 ...

随机推荐

  1. [项目] 淘淘商城 Part.2

    商品列表查询 Easyui 商品添加 商品类目选择 图片上传 富文本编辑器使用 添加的实现 展示首页 略 分页插件 在SqlMapConfig.xml,配置一个plugin 在sql语句执行之前,添加 ...

  2. [笔记] 《c++ primer》书店程序 Chapter2

    Sales_data.h 1 #ifndef SALES_DATA_H 2 #define SALES_DATA_H 3 4 #include "Version_test.h" 5 ...

  3. [刷题] 19 Remove Nth Node From End of List

    要求 给定一个链表,删除倒数第n个节点 示例 1->2->3->4->5->NULL , n=2 1->2->3->5 边界 n是从0还是从1计 n不合 ...

  4. [Java] Spring 使用

    背景 JavaEE 应用框架 基于IOC和AOP的结构J2EE系统的框架 IOC(反转控制):即创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象,是Spring的基础 ...

  5. nginx 的常用模块

    nginx的常用模块 ngx_http_index_module Syntax: index file ...; Default: index index.html; Context: http, s ...

  6. mysql基础之数据库变量(参数)管理

    数据库的数据存放路径:[root@ren7 mysql]# pwd /var/lib/mysql [root@ren7 mysql]# ls aria_log.00000001 ibdata1 mul ...

  7. Centos7挂载windows共享目录

    将windows的共享目录挂载到Centos7 查看是否有mount.cifs命令,如果没有,在线安装 [root@dropbox-bak01 ~]# yum install cifs-utils - ...

  8. window location href is not a function(Day_36)

    报window location href is not a function错误的解决方案: 原因: JS报错是由于写法问题或浏览器不兼容导致的,具体解决方法如下: 原来报错的写法: window. ...

  9. 开源月刊《HelloGitHub》第 62 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这里有实战项目.入门教程.黑科技.开源书籍.大厂开源项目等,涵盖多种编程语言 Pyt ...

  10. 【数据结构与算法】多种语言(VB、C、C#、JavaScript)系列数据结构算法经典案例教程合集目录

    目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之<数据结构与算法> 3. 专栏目录 [经典回放]多种语言系列数据结构算法 ...