MySQL的索引和视图

MySQL的表复制

复制表结构

mysql> create table 目标表名 like 原表名;

复制表数据

mysql> insert into 目标表名 select * from 原表名;  /*  求目标表存在*/

数据表的索引操作

PRIMARY, INDEX, UNIQUE 这3种是一类

PRIMARY 主键。 就是 唯一 且 不能为空。

INDEX 索引,普通的

UNIQUE 唯一索引。 不允许有重复。

FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度

打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车

但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件

    // 使用alter创建
    alter table user add index index_name(字段名)
    alter table user add unique unique_name(字段名)
    alter table user add primary key(字段名)
    // 使用 alter删除索引
    alter table user drop index index_name     /*删除普通索引和唯一索引*/
    alter table user drop primary key       /* 删除主键(必须先删除自动递增)*/

    //  修改表结构:
    alter table user add aaa int after bbbb;
    alter table user modify username varchar(20);
//显示索引信息
//你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
mysql> SHOW INDEX FROM table_name; \G
Non_unique: 0               /*索引不能包括重复值,则为0*/
Key_name: unique_name               /*索引名称*/
Seq_in_index: 1             /* 索引的序列号  从1开始*/
Column_name: tid                /**/
Collation: A                /*存储的索引方式  A为升序  Null表示无分类*/
Cardinality: 12             /*表示索引唯一值得估计数*/
Sub_part: NULL              /*如果列只是被部分地编入索引,则为被编入索引的字符的数目。
                                            如果整列被编入索引,则为NULL。*/
Packed: NULL                /*关键字压缩,如果没有压缩为空*/
    Null: YES               /*如果列包含NULL的值  就为yes*/
Index_type: BTREE               /*索引方法(BTREE, FULLTEXT, HASH, RTREE)*/

MySQL视图

关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务。
对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下。为了解决这个问题,数据库提供了视图(view)功能。

视图保存的并不是真实的数据,而是一张虚拟的表,不占用内存空间,只是保存了计算需要的sql语句,每次调用的的时候都会自己调用封存的sql语句,从而提高了重用性。并且视图显示的内容会跟原文件同步。

视图是一个虚拟表,其中没有数据,所以,当通过视图更新数据时,其实,是在更新基本表中的数据,如果对视图中的数据进行增加,或者删除操作时,实际上是在对其基本表中的数据,进行增加或者删除操作

创建视图:
mysql> create view v_t1 as select * from t1 where id>4 and id<11;
Query OK, 0 rows affected (0.00 sec)

view视图的帮助信息:
mysql> ? view

        ALTER VIEW  /*语句修改视图*/
        CREATE VIEW
        DROP VIEW

查看视图:
mysql> show tables;

UPDATE语句更新视图 :
UPDATE view_stu SET a=100; 

通过视图变更数据:
INSERT INTO v_order(pid,pname,price) VALUES('p01','秋神','34');

删除视图v_t1:
mysql> drop view v_t1;

猜你喜欢

转载自blog.csdn.net/weixin_43682329/article/details/84143768