1、索引
索引是一种将数据库中单列或多列的值进行排序的结构。索引可以提高查询的速度。
索引分为普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引。
创建索引语句:create [unique|fulltext|spatial] index index_name on table_name(属性[(length)] [asc|desc])
参数说明:index_name:索引名称
table_name:表名
可选参数:unique唯一索引,fulltext全文索引、spatial空间索引
属性参数:指定索引对应的字段名称。
length:可选参数,用于指定索引长度
asc和desc:指定数据表的排序顺序
修改索引语句:alter table table_name add [unique|fulltext|spatial] index index_name(属性名 [(length)] [asc|desc])
删除索引语句:drop index index_name on table_name
2、视图
视图是一个虚拟表,从数据库中一个或多个表中导出来的表,内容由查询定义。
创建视图语句:create view 视图名[(属性清单)] as select 语句
3、存储过程
是一组SQL语句的集合,被当做整体存入MySQL服务器。
创建存储过程:create procedure sp_name ([proc_parameter[...]])
[characteristic...] routine_body
参数:sp_name是存储过程的名称,proc_parameter表示存储过程的参数列表,characteristic指定存储过程特性,routine_body是SQL代码内容,可以用begin....end表示SQL代码的开始和结束。
调用存储过程:call sp_name([parameter[...]]);
4、存储函数
创建存储函数:create function sp_name ([func_parameter[...]])
returns type
[characteristic...] routine_body
参数:sp_name是存储函数的名称,func_parameter表示存储函数的参数列表,characteristic指定存储过程特性,routine_body是SQL代码内容,returns type指定返回值的类型。
调用存储函数:select function_name([parameter[...]])
5、触发器
由SQL的基本命令事件来触发某种特定操作,这些基本的命令由insert,update,delete等事件来触发某些特定操作。满足触发器的触发条件时,数据库系统会自动执行触发器中定义的程序语句,令某些操作之间的一致性得到协调。
创建触发器:create trigger 触发器名称 before|after 触发事件 on 表名 for each row 执行语句
参数:before和after指定触发器执行时间,触发事件值数据库操作触发条件,表名指定触发事件操作表的名称,for each row表示任何一条记录上的操作满足触发事件都会触发该触发器,执行语句指触发器被触发后执行的程序。
查看触发器:show triggers
删除触发器:drop trigger 触发器名称
6、事务
事务由单独单元的一条或多条SQL语句组成,在这个单元中,每条MySQL语句是相互依赖的,整个单独单元是作为一个不可分割的整体,如果单元中一旦每条SQL语句执行失败或生产错误,整个单元将回滚,所有受到影响的数据将返回到事务开始以前的状态,如果单元中的所有SQL语句均执行成功,则事务被执行。
事务的属性:原子性,一致性,孤立性,持久性。
7、事件
可以作为定时任务调度器,可以实现每秒钟执行一个任务,在某一段时间执行一些语句。
创建事件:create
[definer={user | current_user}]
event [if not exists] event_name
on schedule schedule
[on completion [not] preserve]
[enable | disable | disable on slave]
[comment 'comment']
do event_body;
参数:definer-可选,定义事件执行时检查权限的用户
if not exists-可选,判断要创建的事件是否存在
event event_name-必选,事件名称
on schedule schedule-必选,定义执行的时间和时间间隔
on completion [not] preserve-可选,定义事件是否循环执行
enable | disable | disable on slave-可选,指定事件的一种属性
comment 'comment'-可选,事件的注释
do event_body-必选,指定事件启动时要执行的代码,可以时SQL语句,存储过程或一个计划执行的事件。
修改事件:alter
[definer={user | current_user}]
event [if not exists] event_name
on schedule schedule
[on completion [not] preserve]
[enable | disable | disable on slave]
[comment 'comment']
do event_body;
删除事件:drop event [if exists] event_name
8、系统库:
1)information_schema:信息数据库,其中保存关于MySQL服务器维护的所有其他数据库的信息,比如数据库名称,数据库表,表字段的数据类型与访问权限等。
schemata表:提供了当前MySQL实例中所有的数据库信息,show database结果取之于此。
tables表:提供了关于数据中表的信息。
columns表:提供了表中的列的信息,详细描述了某张表的所有列以及每个列的信息。
2)mysql:MySQL的核心数据库,主要负责存储数据库的用户,权限设置,关键字等MySQL自己需要使用的控制和管理信息。
3)performance_schema:内存数据库,数据放在内存中直接操作的数据库。
4)sys:通过这个库,可以查询谁使用了最多的资源,基于IP或是用户,哪张表被访问过最多等信息。