zb_视图与索引

文章目录

视图

  • 视图的建立和删除只影响视图本身,不影响对应的基本表。但是可以通过视图更新基本表。
  • 视图是让用户看到需要的数据,而不是全部数据,一定程度上能够屏蔽数据库的复杂性,提高安全性。
  • 视图上不能建立索引,不可以关联触发器等。
  • 如果视图定义中包含聚合函数、算术运算、函数处理等,在更新时会被限制。
  • 视图可以嵌套。在视图上可以再创建新的视图。
  • 视图可和基本表一起使用。
/*视图(虚拟表)*/
CREATE [OR REPLACE] VIEW 视图名[列]
AS
SELECT 
[WITH CHECK OPTION] /*子句用来限制通过改视图修改的记录要符合SELECT语句的指定条件*/
/*OR REPLACE替换已有的同名视图*/
SHOW CREATE VIEW 视图名;/*查看视图的定义语句*/
DESCRIBE 视图名;/*视图相关信息*/
# alter view v1(,,) as select...;/*修改视图*/
# drop view if exists v1,v2;/*删除视图*/
---------------------------------------------------------------
/*创建视图v1,来查看stuinfo中所有女生的基本信息*/
create or replace view v1 as 
select * from stuinfo where stusex = '女' with check option;
/*创建v2,查看选课表中所有学生的学号及平均成绩*/
create or replace view v2(stuno,avg_stuscore) as
select stuno,avg(stuscore) from stumarks group by stuno;
/*创建v3,用来查看所有学生的学号,姓名,课程名及成绩*/
create or replace view v3(学号,姓名,课程名,成绩) as 
select i.stuno,stuname,cname,stuscore
from stuinfo i join stumarks m on i.stuno=m.stuno 
join stucourse c on m.cno=c.cno;
-----------------------------------------------------------
#  使用视图检索,更新基本表中的数据
select avg_stuscore from v2 where stuno='S003';/*查询v2视图中S003学生的平均成绩*/
insert into v1(stuno,stuname,stusex) valuse('S200','刘强','男');/*插入*/
update v1 set stubirth='' ehere stuno ='';/*修改*/
delete from v1 where stuno='';/*删除*/

索引

  • 列是否适合创建索引,主要考虑出是是否现在WHERE后面,是否频繁更新,值域范围、排序或分组等。
  • 索引名是由大家定义的,INDEX是创建普通索引时使用关键字。
  • 普通索引不对索引列的值是否重复做要求。而唯一索引是要求索引列内容不得重复。
  • 排序和分组的列上建立索引 ,可以提高升效率。
/*索引,提高数据查询速度*/
UNIQUE//唯一索引
# 使用CREATE INDEX 语句在已存在的表上创建索引
CREATE [UNIQUE] INDEX 索引名 ON  表名(字段名)
# 创建表的同时建立普通索引
CREATE TABLE t1(
    字段名 数据类型 完整性约束条件,
 	......,
	 [UNIQUE] INDEX 索引名(字段名(长度)
);/*索引名默认是字段名*//*长度是指的是使用列前的多少个字符创建索引*/
# 使用ALTER TABLE 语句在已存在表上创建索引,修改表时创建*/
ALTER TABLE 表名 ADD [UNIQUE] INDEX 索引名(字段名)
ALTER TABLE t1 ADD INDEX multidx(id,name);/*给已有的t1表的id及name字段上建立多列索引*/
ALTER TABLE 表名 ADD UNIQUE(列名);  /*唯一索引*/
ALTERTABLE  table _ name  ADD PRIMARY KEY (列名); /*主键是一种特殊的唯一索引*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值