mysql学习笔记之四(视图)

视图

通过对视图的操作不仅可以实现查询的简化,而且还会提高安全性

视图:

本质是一种虚拟表,其内容和真实表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储数据值的形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。

视图使程序员只关心感兴趣的某些特定数据和他们所负责的特定任务。这样程序员只能看到视图所定义的数据而不是视图所引用表中的数据。从而提高了数据库中数据逇安全性。

特点:

1、视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系

2、视图由基本表(实表)产生的表(虚表)

3、视图的建立和删除不影响基本表

4、对视图内容的更新(添加,删除,修改)直接影响基本表

5、当视图来自多个表时,不允许添加删除数据(这个应该好理解,因为牵涉到了多个表,显然删除,添加都是不方便的或者说不安全的)

创建

create view viewname

例:

create table t_product(

id int,

name varchar(20),

price float

)

//创建视图

create view view_product as select id,product from t_product

失败了,原来定义成了name,改一下属性

alter table t_product change name product varchar(20);

再次创建视图,OK

select * from view_product

OK,这样就将price字段隐藏了。

视图大家庭

由于视图实际上是封装查询语句(可以想到吧),那么是不是任何形式的查询语句都可以封装成视图?

查询视图

常量查询:

create view view_const as select  3.1415926;

聚合函数(COUNT MIN SUM MAX等)

create view view_fun as select count(name) from t_student

排序(ORDER BY)

CREATE VIEW view_order as select name from t_student order by id DESC

内连接查询语句

create view view_join

as

select s.name

from t_student as s,t_group as g

where s.group_id=g.id and g.id=2

外连接(left join 和 right join)

create view view_left

as

select s.name

from t_student as s left join t_group as g on s.group_id=g.id

where g.id=2

子查询

create view view_child

as

select s.name

from t_student as s

where s.group_id in (select id from t_group)

记录联合(union 和 union all)

create view view_union

as

select id,name from t_student

union all

select id,name from t_group

查看视图

show tables ,show table status(由于view是一个特殊的表,所以查看表也就可以查看到view), show create view viewname

1、show table status like "view_product"\G

以上面创建的view_product为例

2、show create view view_product\G

查看视图的定义

3、describe|desc

desc viewname

删除视图

drop viewname[,viewname,...]

可以一次删除多个view

修改视图

1、create  or replace view view_name

以view_product为例

现在想要隐藏id字段。

a、可以先删除视图,重新创建一个视图

b、create or replace view viewname as

如:create or replace view view_product as select id from t_product

这样就不需要先删除在创建

2、alter语句(猜着就有)

alter view viewname

as  查询语句

时间: 2024-10-09 06:58:55

mysql学习笔记之四(视图)的相关文章

MySQL学习笔记之视图

视图是对磁盘上保存的表数据的抽象,即抽取一个表或多个表的部分行或列的数据,展示给使用者. 首先列举下MySQL中最简单的对视图操作的语法: 1.创建视图: create view 视图名 as select语句 例如: create view v_fruit as select name,place,weight from t_fruit where weight<=12; 据我所知,“as”后面的语句肯定都是以“select”开头的,可以理解成视图的创建结果就是一张新的表格,表格里面有哪些东西

MySQL学习笔记之四:并发控制和事务机制

一.mysql的并发控制 当有多个查询需要同时修改同一个数据,就会产生并发控制的问题.mysql可以在两个层面进行并发控制:服务器层和存储引擎层. mysql通过加锁实现并发控制: ⑴锁有两类: 读锁:共享锁,即一个读锁不会阻塞其它读锁,多个用户可同时读取同一个资源,而不互相干扰. 写锁:排他锁,即一个写锁会阻塞其它读写锁,在给定时间内,只有一个用户能执行写入. ⑵锁粒度: 表级锁:锁定整张表 行级锁:并发程度更高,但维护较麻烦,会增加系统开销,易产生死锁.行级锁只能在存储引擎级别实现,MyIS

Mysql学习笔记(十一)临时表+视图

原文:Mysql学习笔记(十一)临时表+视图 学习内容: 临时表和视图的基本操作... 临时表与视图的使用范围... 1.临时表   临时表:临时表,想必大家都知道这个概念的存在...但是我们什么时候应该使用到临时表呢?当一个数据库存在着大量的数据的时候,我们想要获取到这个数据集合的一个子集,那么我们就可以使用临时表来保存我们想要的数据..然后对临时表进行操作就可以了...使用临时表必然是有原因的..使用临时表会加快数据库的查询性能.... create temporary table tmp_

MySQL学习笔记—视图

MySQL学习笔记-视图 视图是查看基础表数据的一种方式,其作用有 - 简化开发难度,可以运用视图执行多表操作 - 数据安全,开发人员不能直接对表操作,也不能进行删除,修改操作 - 数据重构,在有限的表中,以不同的角度生成所需的视图,简化业务 CREATE VIEW语法 CREATE VIEW语法: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS

mysql学习笔记-简介

1.数据存储方式3个阶段 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 数据库组成 1.数据库由若干张表组成,表由若干个字段组成 2.关系数据库的表都是二维表 2.数据库泛型(创建数据库必须满足的要求) 1.第一范式(1NF):设计数据库满足的最低要求表中不能有重复字段,并且每个字段不能在拆分 3.数据库技术构成 1.数据库系统 2.sql语句 3.数据库访问技术等 4.sql语言分类 1.DDL(数据定义语言):主要用于创建表,视图,索引,触发器等.其中包括CREATE(创建表),A

MySQL学习笔记—触发程序

MySQL学习笔记-触发程序 触发程序是与表有关的命名数据库对象,当表上发生特定事件时,将触发执行相应的触发程序. CREATE TRIGGER语法 CREATE TRIGGER语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象. 触发程序与命名为tbl_name的表相关.tbl_na

MySql学习笔记(转载)

/* 启动MySQL */net start mysql /* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */mysqld --skip-grant-tables-- 修改root密码密码加密函数password()update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VARIABLES -- /* 数据库操

MySQL学习笔记-基础入门

MySQL学习笔记

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文