mysql的索引、视图

一、mysql的索引

1、概念:是一种数据库对象,目的是为了加速查询。

2]、原理:类似于书的目录,查询时先通过查找索引来加速查询的速度

3、索引的类型:

1)主键索引:要求加索引的列不能为null,必须唯一。创建主键时自动生成主键索引。

2)外键索引:创建外键时自动生成外键索引。

3)唯一索引:要求加索引的列不能重复,可以为null。

4)全文索引:对超长文本(text、varchar等)列加全文索引。

5)常规索引:可以包含重复值,可以为null。

4、 创建索引:给某列加上索引,create index <索引名>  <列名> on  <表名> 。

1)添加表时添加索引

CREATE TABLE employee (
  id int(11) NOT NULL,
  name varchar(255) default NULL,
  age int(11) default NULL,
  salary decimal(10,0) default NULL,
  address varchar(255) default NULL,
  depId int(11) default NULL,
  bossId int(11) default NULL,
  PRIMARY KEY  (id),
  KEY fk1_name (depId),
  index age_index(age),#为age添加索引
  index empid_index(depId,bossId)#为depId,bossId两列同时添加索引
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2)修改表时添加索引
alter table employee
add index name_index(name);
3)create index 创建索引
创建唯一索引

create unique index u_index
on employee(name) #为employee的name列再添加唯一索引
5、查看索引

show indexes from employee;//查看employee表的所有索引
6、删除索引(维护索引时使用,先删除再添加)

1)使用alter table删除

alter table employee
drop index name_index;
2)使用drop index删除
drop index u_index
on employee;
7、创建和使用全文索引
1)创建全文搜索,使用关键字fulltext。

-- 添加全文索引 为name添加全文索引
alter table employee
add fulltext(name);
注意:当数据库的类型是INNODB,则不能添加全文搜索,需要把数据库或表INNODB改成MyISAM,把表改为MyISAM:

ALTER TABLE employee TYPE = MyISAM;
更多方法参考:http://www.cnblogs.com/liveandevil/archive/2012/08/10/2631601.html
2)使用全文索引

select * from employee where match(name) against ('que');
二、mysql的视图view(虚表)

1、概念:存放某一个查询的结果,是一个只读的表。可用于隐藏真实列名,保护数据。

2、创建视图

1)查询一张表的所有数据来创建视图

-- or replace 可选,表示如果存在就替换
create or replace view v_emp
as select * from employee;
2)对表进行条件过滤后的结果来创建视图,并对视图的列名进行命名

create or replace view v_name(员工编号,员工姓名)
as select id,name from employee;
3、查询视图

select * from v_name;
4、不可更新视图的条件:

1)视图的列中不能有聚合函数:sum,max,min,avg,count。

2)视图的列中不能有distinct,Group by having。

3)视图中不能有子查询。

如下视图不可更新:

create or replace view v_age
as
select max(age) from employee group by bossId;
5、可更新视图(不满足不可更新视图的条件则可更新),原理:先更新(添加、修改、删除)数据到视图的底层表(视图中用到的表)中。
1)添加数据:

-- 视图insert操作 先添加数据到视图的底层表(视图中用到的表)中
insert into v_emp values(121,'view',29,20000,'南京',103,104); 
2)修改数据:(视图update操作)

update v_emp set age=56 where id=121;
3)删除数据:

delete from v_emp where id=106;
6、管理视图(对可更新视图、不可更新视图的管理)

1)更改视图

alter view v_age as select age from employee;
2)删除视图
drop view if exists v_age; 



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值