视图是对磁盘上保存的表数据的抽象,即抽取一个表或多个表的部分行或列的数据,展示给使用者。

首先列举下MySQL中最简单的对视图操作的语法:

1、创建视图:

create view 视图名 asselect语句

例如:create view v_fruit as

select name,place,weight fromt_fruitwhere weight<=12;

据我所知,“as”后面的语句肯定都是以“select”开头的,可以理解成视图的创建结果就是一张新的表格,表格里面有哪些东西呢,就是select语句的结果;另外这张新的“表格”的字段与“select”后面的名字对应,在上例中就是name,place,weight,但是也可以用as或省略as的别名形式,改变新“表格”的字段名,例如:

create view v_fruit as

select name myname,place as myplace,weight fromt_fruitwhere weight<=12;

这样,“新表格”的包含的所有字段名就是myname,myplace,weight

另外,指定视图的字段名可以不用在select后面加as的方法,直接在“视图名”后面加上“(字段1,字段2,...)”的方法,但是括号里面的个数必须跟实际select出来的字段个数一样

例如以下实现一样的字段名设定效果:

create view v_fruit(myname,myplace,weight) as

select name,place,weight fromt_fruitwhere weight<=12

with check option;

上面的视图是在一张表的基础上创建的,也可以根据多张表连接查询,或者根据其他的视图创建,即"from"后面可以跟表名,也可以跟视图名,但是千万不能跟子查询!

例如下面的写法是错的:

create view v as

select id,name,place from (select * fromt_fruit)where id>3;

当然,“where”后面跟上子查询是没有问题的。

2、使用视图:

视图一旦创建,操作起来就跟表格一样,爱怎么玩就怎么玩,至少你往编辑器里面输语句,肯定不会报错。

实际执行阶段就不一样了,对于select from的查询操作,肯定不会出任何问题;但是对于增、删、改,因为视图实际存储的只是定义,这三个操作会改动底下的实际的表格,而你看到的view,里面的数据可能来源于好几个表格,也有可能是通过和、平均数等计算得到的,一旦insert、delete或者update,改动就会特别复杂。为了保险起见,对于一些情况,增删改直接会被MySQL系统判定为误操作,无法成功。这里修改失败的情况特别多,只列举几个,比如改动涉及到两个或两个以上的表会失败,改动后not null的列没有值会失败,view的列值通过sum、count等计算得到的会失败。

还有一个问题要注意,如果底下的table的字段发生变动,比如说字段被删除、重命名等,视图操作就很容易出现错误。因为视图在定义时,select后面的字段名就定死了,不会随着表格字段的变动而变动,即使是select *,也会把*直接替换为相应的固定字段。比如一个view里面本来关联了A,B,C三个字段,现在table把字段C重命名为D,那么view对C字段的使用就会出错。

3、修改视图:

有两种方法,一种是常规的alter,另一种可以跟创建视图的共用

①alter方法,只需把创建时的create改成alter就行,比如:

alter view v_fruit as

select place as myplace,weight fromt_fruitwhere weight<=12;

②第1点创建视图里面漏了没说,实际上存在创建和修改视图可以共用的方法:create or replace,只要把create换成这3个单词,其他不要变

create or replace view v_fruit as

select place as myplace,weight fromt_fruitwhere weight<=12;

4、删除视图:

drop view视图名;

或者drop view 视图1,视图2,...

如果某个视图不存在,则会报错,但是其他存在的视图会被正常删除。

为了防止报错,可以加上“if exists”关键字

drop view if exists 视图名;

5、查看视图各字段的定义:

describe 视图名;

或者desc 视图名;

更深层次分析未完待续。。。

MySQL表中部分字段生成视图_MySQL学习笔记之视图相关推荐

  1. mysql表中的中文是乱码_mysql插入表中的中文显示为乱码或问号的解决方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 今天在做ssh的博客项目时发现mysql数据库中的中文显示为问号,网上查阅了很多资料,都不是很全,所以我总结一下,供大家参考和自己复习. 1.我的 ...

  2. MySQL中会用到age字段的索引_MySQL学习笔记(四):正确使用索引(二)

    上一篇学习到了MySQL中的索引是什么,以及一些关于索引的简单的知识,这篇我打算详细地谈一谈如何正确地使用索引.索引的使用看起来很简单,但是在真正去学习它的时候才发现,原来是暗藏玄机.使用索引时有很多 ...

  3. 修改MYSQL 表中的字段属性

    1.登录数据库 >mysql -u root -p 数据库名称 2.查询所有数据表 >show tables; 3.查询表的字段信息 >desc 表名称; 4.1.修改某个表的字段类 ...

  4. pb mysql longblob_关于mysql表中longblob字段的问题

    版本5.0 我通过这个CREATE TABLE TFILES (ID INT(4) NOT NULL, FILENAME VARCHAR(255), FILE LONGBLOB, PRIMARY KE ...

  5. linux系统中mysql表中能添加中文_数据库学习之数据库增删改查(另外解决Mysql在linux下不能插入中文的问题)(二)...

    数据库增删改查 增加 首先我们创建一个数据库user,然后创建一张表employee create table employee( id int primary key auto_increment, ...

  6. mysql 表中的列名是什么_MySQL中获取表的列名的语法是什么?

    语法如下,以获取表的列名:select column_name from information_schema.columns where table_schema='yourDatabaseName ...

  7. mysql删除不存在行数据报错_MySQL学习笔记11复制错误处理(二)删除不存在的行的问题...

    (1)问题情况 在master上删除某个数据表的某一行,而该行在slave上并不存在,则slave上的复制过程会出错. MySQL的log文件中发现如下错误信息: 2017-08-15T04:52:1 ...

  8. php将excel数据导入mysql表中_利用php将xls表格数据以原生方式快速导入mysql

    这里以联通的市区编码表为例,如图: 第一步,我们把xls表格中的首行作为mysql表中的字段,为了方便查看这里转换成了小写,表名随意,主键id可加可不加,看自己需求 第二步,将xls表格中除了首行以外 ...

  9. mysql高效查出重复的手机号_Mysql必读MySQL大表中重复字段的高效率查询方法

    <MysqL必读MysqL大表中重复字段的高效率查询方法>要点: 本文介绍了MysqL必读MysqL大表中重复字段的高效率查询方法,希望对您有用.如果有疑问,可以联系我们.MysqL大表重 ...

  10. mysql 5.5 替换字符_Mysql 5.7替换表中某些字段的字符串

    很多时候在做资源迁移的时候,路径改变,存在数据库的资源文件的路径也会跟着改变,所以需要替换存放路径的字符串,如何快速的替换表中的字段的这些字符串呢? 1. 可以通过MySQL的replace函数 re ...

最新文章

  1. 一张图看懂中科大、国科大、中科院、社科院、上科大之间的关系
  2. php5.4.16执行shell脚本
  3. Xen与KVM虚拟化技术调研报告
  4. ClewareControl 2.4 发布,传感器控制程序
  5. aix 的c库为什么都是静态库_关于AIX  libpthread.a 静态库
  6. Jquery中怎样判断是否有网络
  7. python list存储方式_Python 之 将 list 存储为 .mat 文件
  8. android stackview,Android StackView 使用示例
  9. oracle的clob转换varchar2
  10. BAT与华为职级薪资股权大揭秘 网友看完后很酸表示“雨女无瓜”
  11. .xyz文件_Orca.xyz:除了银行系统瑞士还有同样安全的数字保险箱
  12. 多个相机间的对齐之为什么需要对齐,对齐有什么好处?
  13. OSGEarth基于经纬度获取高程数据
  14. 可视化磁盘文件查看工具
  15. Word里面最难删的东西,困扰了97.99%的职场人,实在是太烦人了
  16. 小学三年级计算机导学案,小学三年级下册科学导学案
  17. Clickhouse外部储存表引擎(HDFS、MySQL、JDBC、Kafka、File)
  18. HTML+CSS实战(哈罗单车首页)
  19. MOD09A1数据下载与预处理-地表干湿度指数的计算
  20. linux管理账户是,Linux管理账户

热门文章

  1. 参数估计:矩估计和最大似然估计
  2. 【数据库开发】MySQL修改root密码
  3. 关于pipe管道的读写端关闭问题
  4. 转载——关于bp神经网络
  5. html5中关于input使用方法的改变
  6. 线性表的链式存储结构-----链表
  7. 知乎cookies的介绍_SameSite小识
  8. Spring Cloud Bus消息总线(学习总结)
  9. SpringBoot 2.0.x应用修改默认的端口号
  10. 资深CTO带来的8条Serverless最佳实践