视图
关键字:view
视图在数据库管理系统中也是一个对象,以文件形式存在
视图对应一个查询结果,只是从不同的角度看数据
语法:create view 视图名字 as 查询语句;
索引
一种特殊的文件,它包含着对数据库表所有记录的引用指针,它是对数据库中一列或者多列的值进行排序的一种结构。
优点:
1、创建唯一索引,保证数据库中每一条数据的唯一性(实体完整性)
2、加快数据的检索速度。
3、加速表与表之间的连接。
4、使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序时间。
5、通过使用索引,可以在查询的过程中,使用优化器,提高系统的性能。
普通索引
基本索引,没有任何限制,索引分为单列索引和多列索引。
语法:
创建:create index 索引名 on 表名(表中的列名)
添加:alter table 表名 add index 索引名(列名)
创建表时添加索引:
create table 表名(
列名 列的数据类型 列的约束,
index 索引名(列名)
)
唯一索引、
关键字 :unique index
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。
如果是组合索引,则列值的组合必须唯一。
主键索引
它是一种特殊的唯一索引,不允许有空值,在创建主键时,会默认生成一个主键索引。
全文索引
现在的互联网上,很多网站都提供了全文搜索(全文检索)功能,浏览者可以通过输入关键字或者是短语来搜索特定的资料。
通常的做法是通过 select 查询的 like 语句来进行搜索,这一办法存在搜索不够精确、以及效率非常低下的缺点。
mysql 提供了一个全文索引功能,也就是把字段设置上fullText索引属性,然后通过select的match against语句进行查找。
mysql 支持全文索引和搜索功能,但是 fullText 索引仅能用于 myisam 引擎的表。
myisam 引擎支持全文检索(full text index),查询效率高。但是有局限,不支持事务和外键。
语法:
1.Create fulltext index 索引名 on 表名(表中加索引的列)
2.alter table 表名 add fulltext index 索引名(表中加索引的列)
3. create table 表名(
列名 列的数据类型 列的约束,
fulltext 索引名(表中加索引的列)
)
存储引擎
存储引擎是MySQL特有的。
存储引擎的本质:
1、采用不同的技术想暑假存储在文件或者内存中。
2、每一种技术都有不同的储存机制,不同的存储机制提供不同的功能和能力。
3、通过选择不同的技术(不同的引擎),可以获得额外的速度或者功能,改善我们的应用。
查看储存引擎:show engines\G
创建表时,显示的指定引擎:create table 表名()engine=引擎名称
默认引擎的修改:在my.ini配置文件中使用default-storage-engin选项指定
修改表的引擎:alter table 表名 engine = 引擎名称
常用的储存引擎:
MylSAM存储引擎
特性:
一、使用三个文件表示每个表:
1.格式文件—存储表的结构(mytable.frm)
2.数据文件—存储表的数据(mytable.MYD)
3.索引文件—存储表的索引(mytable.MYI)
二、可以压缩空间,节省内存。
InnoDB存储引擎(默认引擎)
特性:
1.每个InnoDB表在数据库目录中以.frm格式文件表示。
2.InnoDB表空间tablespace被用于存储表的内容。
3.提供一组用来记录事物性活动的日志文件
4.用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚) 支持事物处理。
5.提供全部ACID兼容。
6.在MySQL服务器崩溃后提供自动恢复。
7.多版本(MVCC)和行级锁定。
8.支持外键以及引用的完整性,包括级联更新和删除。
MEMORY存储引擎
使用MEMORY存储引擎的表,因为数据存储在内存中,且行的长度固定,
所以使得MEMORY存储引擎非常快。
特点:
1.在数据库目录内,每个表均以.frm格式文件表示。
2.表数据及索引被存储在内存中。
3.表级锁机制。
4.字段属性不能包含TEXT或BLOB字段。
MEMORY存储引擎以前被称为HEAP引擎
不同引擎的适用场景:
1、MyISAM存储引擎的表适合于大量的数据读而少量的数据更新的混合操作,MyISAMB表的另一种使用形式是使用压缩的只读表。
2、InnoDB存储引擎的表使用于含较多的数据更新操作,其行级锁机制和多版本的支持为数据读取和更新额混合提供了良好的并发机制。
3.MEMORY存储引擎存储费永久需要的数据,或者能够从基于磁盘的表中重新生成的数据