第九节——枚举类型,视图与索引
Posted 想学习安全的小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第九节——枚举类型,视图与索引相关的知识,希望对你有一定的参考价值。
枚举类型
一、枚举类型的使用
- 创建枚举,语句:
CREATE TYPE 枚举名 AS ENUM (枚举值1, 枚举值2, ......);
,之后使用枚举类型时,只能使用规定的枚举值,不能使用非规定的值。 - 创建表时,使用枚举类型,语句:
CREATE TABLE 表名 ( 列名 数据类型, 列名 枚举名 );
,从这里可以看出枚举类型也属于一种数据类型。 - 插入数据时,使用枚举类型,语句:
INSERT INTO 表名(列名,枚举名) VALUES (数据1, 枚举值1);
- 举例:
-创建枚举类型,枚举名为name,枚举值为:qwe,asd,zxc。语句:create type name as enum ('qwe','asd','zxc');
-创建表testable时,name列使用枚举name充当数据类型,语句:create table testtable (id int,name name);
-插入数据时,插入qwe数据,语句:insert into testtable values (1,'qwe');
视图
一、视图的概念
- 视图是一个“虚”表,一个不存在的表,视图所拥有的数据,并非来自于本身,而是从其他表中借调过来的。
- 每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。
二、视图的优点
- 使用视图可以定制化一些数据,限制范围,过滤条件,从这个视图得到的数据因为都限制过滤定制化处理了,方便你去分析
三、视图的缺点
- 视图不好修改,最好别对视图修改,有什么问题最好还是对组成视图的基表来操作,而且有的视图在某些数据库或者某些条件下是不能修改的。
四、与union的不同点
- union要求结合的列要拥有相同的数据类型,而视图不用
-查看表1和表2的数据类型
-使用union连接两个表,报错
-使用视图,组合两个表的数据
五、视图的用法
- 创建视图,语句:
create view 视图名 as select 列名1,列名2 from 表名1,表名2 where 条件名;
- 语句特点:视图把as后面的sql语句查询出来的数据整理到了一张表里面,所以视图是一张虚表。
六、物化视图
- 特征:物化视图在某种意义上说就是一个物理表, 会占用数据库磁盘空间。
- 创建物化视图,使用关键字materialized,语句:
create materialized view 物化视图名 as select 列名 from 表名 where 条件;
七、视图与物化视图的区别:
- 视图创建时快,查询时慢;物化视图创建慢,查询快。
- 视图通过逻辑将sql语句的结果整理到表上,是虚表,以时间换空间;物化视图将表整理后存入一张整理后的“真实”表,以空间换时间。
索引
- 索引的用途:类似于字典的目录,通过建立索引,可以把a开头的内容,整合到前列。没有索引则是按存入数据的顺序,一一查询。
- 建立索引,语句:
CREATE INDEX 索引名 ON 表名 (需要建立索引的列名)
- 建立B-Tree索引,语句:
create index 索引名 on 表名 using btree(列名);
- 建立hash索引,语句:
create index 索引名 on 表名 using hash (列名);
以上是关于第九节——枚举类型,视图与索引的主要内容,如果未能解决你的问题,请参考以下文章