网站地图    收藏   

主页 > 后端 > mysql数据库 >

MySQL学习笔记3索引、存储过程 - mysql数据库栏目

来源:自学PHP网    时间:2015-04-16 10:51 作者: 阅读:

[导读] MySQL索引索引分类:索引两种存储类型:B型树(BTREE)索引和哈希(HASH)索引,其中B型树为系统默认索引方法。MySQL的索引包括普通索引、唯一索引、全文索引、单列索引、多列索引和...

MySQL索引 索引分类: 索引两种存储类型:B型树(BTREE)索引和哈希(HASH)索引,其中B型树为系统默认索引方法。MySQL的索引包括普通索引、唯一索引、全文索引、单列索引、多列索引和空间索引。

注意:只有MyISAM类型的数据表支持FULLTEXT全文索引,其他类型的数据表不支持全文索引。当用户在建立全文索引的时候,返回“ERROR 1283 (HY000): Column 'number' cannot be part of FULLTEXT index”的错误,则说明用户操作的当前数据表不支持全文索引,即不为MyISAM类型的数据表。

只有MyISAM类型表支持空间索引。而且,索引字段必须有非空约束。创建索引 在建立数据表时创建索引

语法结构如下:

create table table_name(

属性名 数据类型 [约束条件],

属性名 数据类型 [约束条件],

^……

属性名 数据类型

[UNIQUE | FULLTEXT | SPATIAL ] INDEX }KEY

[别名](属性名1 [(长度)] [ASC | DESC]) 创建多列索引

触发多列索引的条件是用户必须使用索引的第一字段,如果没有用到第一字段,则索引不起任何作用,用户想要优化查询速度,可以应用该类索引形式。在已建立的数据表中创建索引 基本命令结构如下:
CREATE [UNIQUE | FULLTEXT |SPATIAL ] INDEX index_name

ON table_name(属性 [(length)] [ ASC | DESC]); 修改数据表结构添加索引 基本结构如下:

ALTER TABLE table_name ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX index_name(属性名[(length)] [ASC | DESC]);注意:

从功能上看,修改数据表结构添加索引与在已存在数据表中建立索引所实现功能大体相同,二者均是在已经建立的数据表中添加或创建新的索引。 删除索引 基本命令如下:

DROP INDEX index_name ON table_name; MySQL存储过程 创建存储过程和存储函数 创建存储过程

基本形式:CREATE PROCEDUER sp_name ([proc_parameter [,...]]) [characteristic ...] routine_body

存储过程调用方法:call 存储过程名;注意:MySQL中默认的语句结束符为分号; 存储过程中的SQL语句需要分号来结束,为了避免冲突,首先,用“DELIMITER // ”将MySQL的结束符设置为//。最后用“DELIMITER;”来将结束符恢复成分号。这与触发器的创建是一样的。创建存储函数

基本形式:CREATE FUNCTION sp_name ([func_parameter[,...]])

RETURNS types

[characteristic ...] routine_body变量的应用

MySQL存储过程中的参数主要有局部参数和会话参数两种,又可被称为局部变量和会话变量。局部变量只在定义该局部变量的begin……end范围内有效,会话变量在整个存储过程范围内均有效。

局部变量以关键字declare声明,后跟变量名和变量类型,例如 declare a int

也可以用关键字default为变量指定默认值,例如declare a int default 10MySQL中的会话变量不必声明即可使用,会话变量在整个过程中有效,会话变量名以字符“@”作为起始字符。为变量赋值 用DECLARE关键字定义变量:DECLARE var_name[,...] type [default value]使用SET关键字为变量赋值:SET var_name=expr[, var_name=expr]...SELETC col_name [ ,...] INTO var_name [, ...] FROM table_name where condition

示例:select tel into customer_tel from studentinfo where name='LeonSK';注意:上述赋值语句必须存在于创建的存储过程中,且需要将赋值语句放置在BEGIN……END之间。若脱离此范围,该变量将不能使用或被赋值。光标的运用

声明光标

光标必须声明在处理程序之前,且声明在变量和条件之后。

语法:DECLARE cursor_name CURSOR FOR select_statement

select 子句中不能包含INTO子句,并且光标只能在存储过程或存储函数中使用。打开光标

语法:OPEN info_of_student使用光标

使用FETCH...INTO语句来读取数据,语法如下:

FETCH cursor_name INTO var_name[, var_name]...关闭光标

语法:CLOSE curso_name

对于以关闭的光标,在其关闭之后则不能使用FETCH来使用光标,光标在使用完毕后一定要关闭。查看存储过程和函数 SHOW STATUS语句

SHOW {PROCEDUER | FUNCTION} STATUS[LIKE 'pattern' ]SHOW CREATE语句

SHOW CREATE { PROCEDUER | FUNCTION } sp_name;SHOW STATUS语句只能查看存储过程或函数所操作的数据库对象,如存储过程或函数的名称、类型、定义者、修改时间等信息,并不能查询存储过程或函数的具体定义。如需要查看详细定义,需要使用SHOW CREATE语句。修改存储过程和函数 语法如下:

ALTER {PROCEDUER | FUNCTION} sp_name [characteristic ...]

characteristic:

{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

| SQL SECURITY { DEFINER | INVOKER }

| COMMENT 'string'

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论