mysql 中的视图语法_MYSQL当中的视图语法

本文详细介绍了MYSQL中视图的创建、查询、修改、删除等操作,并讲解了视图使用的注意事项。此外,还深入探讨了索引的概念,包括聚集索引与非聚集索引的区别,以及如何创建和管理索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL当中的视图语法

它的语法与SQLServer一样

视图的一系列操作

--视图是从一个或多个表(或视图)的行或列的子集创建的虚拟表,不占用数据库物理存储空间;

--视图并不是一个真正的表,但可以像使用一个真实的表一样使用视图。

一、创建视图

基本语法:

create view 视图名 [(列名列表)]

as 查询语句

--如果"列名列表"没有出现,则需在查询语句中为每一个出现的且没有具体列名的列指定列名。

--只有在当前数据库中才能创建视图。创建视图时,源表可以是基本表,也可以是视图。

--视图的命名规则必须遵循标识符命名规则,不能与表同名,即使定义相同的视图,也不能同名。

--不能把规则、默认值或触发器与视图相关联。

--查询语句有以下限制:

-- 1、定义视图的用户必须有执行

select 的权限;

-- 2、不能使用

computer 或 computer by 子句;

-- 3、不能使用

order by 子句;

-- 4、不能使用

into 子句;

-- 5、不能在临时表或表变量上创建视图。

举例:

create view sexm_view

as

select * from student

where sex='男'

二、视图信息的查询

使用 sp_helptext 存储过程

语法:

[exec] sp_helptext '视图名'

三、使用视图

1、使用视图查询数据

语法:

select 列名列表 from 视图名

举例:

select * from sexm_view

--使用视图查询时,若其关联的基本表中添加了新字段,则必须重新创建视图才能

--查询到新字段。如果与视图相关联的表或视图被删除,则该视图将不能再使用。

--说明:

--执行上面的查询语句时,SQL查询处理器首先在数据库中查找名叫sexm_view的表格,

--但是会没有结果,因为数据库中没有这样的表,然后查询处理器会判断sexm_view是否是视图,

--若不是视图,则查询出错,若是视图,则查询处理器根据用户对视图的定义,查询出结果,

--把查询的结果作为一张表格返回给SQL语句,从而完成SQL的查询

2、使用视图插入数据

语法:

insert 视图名

values(值列表)

当视图所依赖的基本表有多个时,不能向该视图插入数据,因为这将会影响多个基本表。

3、使用视图修改数据

语法:

update 视图名

set 列名=表达式[,列名=表达式[,...]]

当视图所依赖的基本表有多个时,则一次修改该视图只能变动一个基本表的数据。

4、使用视图删除数据

语法:

delete from 视图名

[where 条件]

可能通过视图删除其所依赖的基本表的数据。

修改视图的原则:

如果视图中不包含基表中被定义为非空的列时,通过视图向表中插入记录的操作将不能进行。

在定义视图的select语句后的字段列表中使用了数学表达式,不能通过这样的视图进行数据的更新操作(插入,修改,删除)

在定义视图的select语句后的字段列表中使用聚合函数,不能通过这样的视图进行数据的更新操作(插入,修改,删除)

在定义视图的select语句中使用了

distinct ,union , top , group by 或 having 子句,不能通过这样的视图进行数据的更新操作(插入,修改,删除)

四、修改视图的定义

语法:

alter view 要修改的视图名

as 新的查询语句

五、删除视图

语法:

drop view 视图名列表

六、索引

索引是对数据库表中一个或多个列的值进行排序的结构

SQL Server可以建立两种索引:

1、聚集索引

表中各行的物理顺序与索引顺序相同,一个表只能包含一个聚集索引

2、非聚集索引

表中各行的物理顺序与索引顺序可以不同,一个表中的每一列都可以有自己的非聚集索引,

类似书的目录,实际数据保存在一个地方,索引放在另一个地方,索引带有指针指向具体的位置。

在SQL Server两种基本类型索引基础之上我们可建立索引的唯一性。

唯一索引是作为聚集索引或非聚集索引的一部分而创建的,不能单独创建。

当你在表中创建 unique 或 primary key 约束后,SQL Server会在表中自动生成一个唯一索引。

填充因子是在创建索引时指定的,它用来在索引的各个页上预留一定比例的可用空间,以供将来进行数据扩充时使用。

填充因子指定了创建索引后要在页中输入数据的量。

语法:

with Fillfactor=x

--x>=1 and

x<=100

如果无须再修改数据,可以指定填充因子100,这样将完全占满索引页,因而所占用的存储空间最少。

如果需要频繁地修改表中的数据,则应指定一个较低的填充因子,以便在数据页中保留更多的空白空间 。

一、创建索引

语法:

create [ unique ] [ clustered | nonclustered ]

index 索引文件名

on 表名(列名)

[with fillfactor=x]

--nonclustered可以省略。

--在某列上创建了唯一索引,就不能向该列插入重复的值。

--可以为视图创建索引。

创建聚集索引的说明:

选择唯一值比例高的数据列,一般应选择主键列;

先创建聚集索引,再创建非聚集索引;

在创建聚集索引时使用FILLFACTOR选项以确保在插入新行时有足够的可用空间。

一个表可以有多个(最多249个)非聚集索引。

创建非聚集索引的说明:

除非绝对必要,否则请不要添加非聚集索引,这是因为非聚集索引需要额外的维护开销;

在频繁访问的列上建立索引;

默认情况下,CREATE INDEX 语句创建的是非聚集索引;

在相异值多的数据列上创建非聚集索引。

创建唯一索引的说明:

由于每一行都包含一个唯一的值,唯一索引可以确保实体完整性;

不能在包含重复数据的列上创建唯一索引;

在创建唯一索引前必须更新或删除重复的数据。

创建索引的说明:

适合创建索引情况:

该列频繁用于进行搜索;

该列用于对数据进行排序。

不适合创建索引情况:

列中仅包含几个不同的值;

表中仅包含几行。

二、索引的查看

语法:

[exec] sp_helpindex 表名

三、删除索引

语法:

drop index 表名 索引名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值