视图和索引(第五天)

• 本章介绍了MySQL的视图和索引
– 掌握如何创建简单视图
– 掌握如何创建复杂视图
– 理解带约束视图的含义
– 掌握如何从视图中检索数据
– 掌握索引的创建
– 了解设计索引的基本原则

/*
视图: 是基于1个或者多个表查询的数据结果集

为什么使用视图
a) 限制其它用户对数据库表的访问,因为视图可以有选择性的显示数据库表的一部分;
b) 容易实现复杂的查询;
c) 对于相同的数据可以产生不同的视图;

创建视图:
CREATE OR REPLACE
VIEW 视图名称
AS 查询语句
*/

练习:

– 创建一个视图,通过该视图可以查询到工作在NEW YORK和CHICAGO的员工编号,姓名,部门编号,入职日期
create or REPLACE view ddd
AS
select empno,ename,e.deptno,hiredate
from emp e,dept d
where e.deptno=d.deptno
and loc in (‘NEW YORK’,‘CHICAGO’)
– 创建一个视图,通过该视图可以查询到每个部门的部门名称及最低工资
create or REPLACE view bbb
AS
select dname,min(sal) minsal
from emp e,dept d
where e.deptno=d.deptno
group by e.deptno

视图应用: 创建视图查询每个部门员工的平均工资
通过创建的视图直接查询10号部门员工的平均工资
在这里插入图片描述
在这里插入图片描述

– 显示视图
Desc视图名称

– 删除视图
drop view bbb

视图上执行DML操作(不常用)
• 在简单视图上可以执行 DML 操作;
可以通过视图删除基表中数据,只要视图中不出现以下情况:
– Group 函数;
– GROUP BY 子句;
– DISTINCT 关键字;
可以通过视图修改基表中数据,只要视图中不出现以下情况:
– GROUP函数、GROUP BY子句,DISTINCT关键字;
– 使用表达式定义的列;
可以通过视图向基表插入数据,只要视图中不出现以下情况:
– GROUP函数、GROUP BY子句,DISTINCT关键字;
– 使用表达式定义的列;
– 基表中未在视图中选择的其它列定义为非空并且没有默认值;
在这里插入图片描述

/*
索引: 用于提高查询速度 优化SQL语句的性能
主要类型:Normal(普通索引) unique(唯一性索引) full text(全文索引)
索引分类
普通索引
惟一性索引
全文索引
单列索引
多列索引
空间索引

创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度。创建索引有三种方式,这三种方式分别是:
– 创建表的时候创建索引
– 在已经存在的表上创建索引
– 使用ALTER TABLE语句来创建索引
*/

练习:

创建一个test1的表,id为主键自增,namesd为唯一性约束(唯一性约束为隐含的创建索引)
CREATE TABLE test1
(
id int(2) PRIMARY key auto_increment,
namesd VARCHAR(20) UNIQUE
)

创建一个名为index_hiredate的在表emp的hiredate列上
CREATE index index_hiredate
on emp(hiredate)

把索引有索引列当条件进行查询—提高查询速度
select *
from emp
where hiredate >‘1980-01-01’

删除索引
一些不再使用的索引会降低表的更新速度,影响数据库的性能。对于这样的索引,应该将其删除。
• 对应已经存在的索引,可以通过DROP语句来删除索引。基本形式如下:
• DROP INDEX 索引名 ON 表名 ;

例如:删除emp表的index_hiredate索引
drop index index_hiredate on emp

/*
索引的设计原则:
• 不经常发生数据变更的列
• 表的数据量足够大
• 选择惟一性索引
• 为经常需要排序、分组和联合操作的字段建立索引
• 为常作为查询条件的字段建立索引
• 限制索引的数目
• 尽量使用数据量少的索引
• 尽量使用前缀来索引
• 删除不再使用或者很少使用的索引
*/

创建表的时候创建索引
CREATE TABLE 表名 ( 属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],

属性名 数据类型
[UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY
[别名](属性名1 [(长度)] [ASC | DESC])
);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在已经存在的表上创建索引
• 在已经存在的表上,可以直接为表上的一个或几个字段创建索引。基本形式如下:
• CREATE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名
ON 表名 (属性名 [ (长度) ] [ ASC | DESC] );
– 创建普通索引
– 创建惟一性索引
– 创建全文索引
– 创建单列索引
– 创建多列索引
– 创建空间索引

用ALTER TABLE语句来创建索引
• 在已经存在的表上,可以通过ALTER TABLE语句直接为表上的一个或几个字段创建索引。基本形式如下:
• ALTER TABLE 表名 ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX
索引名(属性名 [ (长度) ] [ ASC | DESC]);
• 其中的参数与上面的两种方式的参数是一样的
• 创建普通索引
• 创建惟一性索引
• 创建全文索引
• 创建单列索引
• 创建多列索引
• 创建空间索引

猜你喜欢

转载自blog.csdn.net/gcyqweasd/article/details/112706303