点击下方,边听边看
注释:(注:我的例句可能和截图不一样,但格式都是一样的,因为我有进行过其他操作,而且没有展示出来)
索引:
索引的引入:其作用是提高多表中数据的查询速度,类似于图书目录;
优点:提高数据查询速度;缺点:创建和维护索引的时间增加了;
索引的分类:
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;
领取专属 10元无门槛券
私享最新 技术干货