今天爱分享给大家带来数据库的视图和索引都有什么特点,有什么区别?【面试题详解】,希望能够帮助到大家。
视图:
概念:视图是从一个或多个表中导出来的表,是一种不是一种真正存在的概念。
视图操作sql:
//创建视图: create view viewName(参数列表/可以不写这样就是默认和下面的select一样) as select * from 表名; //例1: create table viewdemo(id int primary key , name char(10),score float); create view view1 as select* from viewdemo; create view view2(name,score) as select name ,score from viewdemo; //修改视图: alter view viewname (columns) as select columns from tableName; //例: alter view view2 (id ,name) as select id,name from viewdemo ; //删除视图: drop view if exists view name; //例: drop view view2;
索引:
概念:可以理解为是一本书的目录,它记录了数据在数据库中存放的位置,就像一本书的目录,记录了,某一页在这本书的那个位置。相同地,索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据库表里所有记录的引用指针。
视图操作sql:
ALTER TABLE table_name ADD [UNIQUE|FULLTEXT] [INDEX|KEY] [inex_name] (col_name [length ] ,...) [ASC|DESC]
普通索引: ALTER TABLE book ADD INDEX indexName( bookname(30) ); 唯一索引: ALTER TABLE book ADD UNIQUE INDEX UniqueIdx( bookid ); 组合索引: ALTER TABLE book ADD INDEX BkAndInfoIdx( authors(20), info(50) ); 全文索引: ALTER TABLE t6 ADD FULLTEXT INDEX infiIdx(info);( 前提是这个表的存储引擎为 MyISAM)
使用 create index 创建索引:
语法:
CREATE [UNIQUE|FULLTEXT] [INDEX|KEY] INDEX index_name ON table_name ( col_name[ length ] , ... ) [ASC | DESC ] 例:在表book的bookname字段上建立名为BkNameIdx的索引。 CREATE INDEX BkNameIdx ON book (bookname); 例: 在book表的bookId字段上建立唯一索引。 CREATE UNIQUE INDEX UniqueIdx ON book (bookId); 4、删除索引: ALTER TABLE table_name DROP INDEX index_name; DROP INDEX index_name ON table_name ;