首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySql 索引与视图

点击下方,边听边看

注释:(注:我的例句可能和截图不一样,但格式都是一样的,因为我有进行过其他操作,而且没有展示出来)

索引:

索引的引入:其作用是提高多表中数据的查询速度,类似于图书目录;

优点:提高数据查询速度;缺点:创建和维护索引的时间增加了;

索引的分类:

1. 普通索引:这类索引可以创建在任何数据类型中;

- create table t_user (id int, username varchar(20), password varchar(20), index (username));(在创建表的时候创建索引,默认索引名为username)

- show index from t_user; (查看刚才创建的索引)

- create index index_username on t_user(username); (index_username是索引名)(在已经创建的表中设置索引)

- alter table t_user add index index_username(username);(在已经创建的表中设置索引)

2. 唯一性索引:(主键默认是唯一性索引)

创建唯一性索引用unique参数设置;

- create table t_user (id int, username varchar(20), password varchar(20), unique index (username));(是在创建表的时候顺便创建索引)(结果如下图)

或者:

- create table t_user (id int, username varchar(20), password varchar(20), unique index index_username(username));(在这里不展现结果了)

(这样是加别名)(其他类型也可以加别名,不一一列举)

- create unique index index_username on t_user(username);

- alter table t_user add unique index index_username(username);

3. 全文索引:

使用FULLTEXT参数可以设置,全文索引只能在创建CHAR,VARCHAR, TEXT类型的字段上,主要作用是提高查询较大字符串类型的速度,只有MyISAM引擎支持该索引,MYSQL默认引擎不支持;

4. 单列索引:

在表中给单个字段设置索引,单列索引可以是普通索引,也可以是唯一索引,还可以是全文索引;

5. 多列索引:多列索引在表中多个的字段上创建一个索引;

- create table t_user (id int, username varchar(20), password varchar(20), index (username, password));

- create index index_username on t_user(username, password);

- alter table t_user add index index_username(username, password);

6. 空间索引:

使用SPATIAL参数可以设置空间索引,空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率;

删除索引:

- drop index index_username on t_user;

---------------------------------------------------------------------------------------------------------------

视图:

视图定义:视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在,即不是真实存在的。简单的来说视图是由其定义结果组成的表;当数据表结构很复杂,但我们只关心其中一部分数据的时候就可以使用视图,定义关心的数据;

优点:使操作简便化;增加数据的安全性;提高表的逻辑独立性;

视图的操作:

创建视图:

1. 单表创建:

- create view v1 as select * from t_book;

- create view v2 as select bookname, price from t_book;

- create view v3(b,p) as select bookname, price from t_book;

注:查看数据库中的所有视图:

- show table status where comment=’view’;

- show table status from tarena;(能找到tarena数据库实例的所有表格和视图)

2. 多表创建:

- create view v4 as select bookname, booktypename from t_book, t_booktype where t_book.booktypeid = t_booktype.id; (建议用别名)

查看视图:

- desc f4;

- show table status like ‘f4’;(也可以查看表格,替换v4即可)

- show create view f4; (建视图的详细信息)

修改视图:

- create or replace view v1(bookname, price) as select bookname, price from t_book; (or是必须的,不是让你选一个;先看看f1视图的截图,然后看看修改之后的f1是什么样的)

- alter view f1 as select * from t_book; (下图为再次修改之后)

更新视图:

注:更新视图是通过视图来插入INSERT,更新UPDATE,删除DELETE表中的数据。因为,视图是一个虚拟表,其中没有数据,所以,当通过视图更新数据时,其实,是在更新基本表中的数据,如果对视图中的数据进行增加,或者删除操作时,实际上是在对其基本表中的数据,进行增加或者删除操作。

1. 插入:

- insert into v1 values (null, ‘java good’, 120, ‘feng’, 1);

2. 更新:

- update v1 set bookname = ‘very good’, price=200 where id =1;

删除视图:

注:删除视图时并不会删除数据,只是把视图的定义给删除了;

-drop view if exists viewname;

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180409G1XGDP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券