回 帖 发 新 帖 刷新版面

主题:mysql数据库应用从入门到精通(连载)

内容简介

         本书从数据库的基础、SQL语句开发、数据库管理和维护3个方面对MySQL进行了详细的介绍,其中每一部分都独立成篇。本书内容实用,覆盖广泛,讲解由浅入深、循序渐进,适合于各个层次的读者。

本书共分为3篇。其中第一篇为MySQL数据库基础篇,内容包括数据库涉及到的基本概念、MySQL数据库的安装与配置。第二篇为标准SQL语句编程和应用篇,内容包括操作数据库对象、操作表对象、操作索引对象、操作视图对象、操作触发器对象和操作数据。第三篇为MySQL数据库管理篇,内容包括MySQL数据库的用户管理和权限管理、MySQL数据库的日志管理、MySQL数据库的性能优化和PowerDesigner数据库设计软件。

本书注重理论与实际开发相结合,书中的每个技术点都配备了具体的实例,适合所有的MySQL数据库初学者快速入门、同时也适合MySQL数据库管理员和想全面学习MySQL数据库技术的人员。

 

 

回复列表 (共18个回复)

11 楼

6.2.3 创建和查看全文索引
全文索引主要关联在数据类型为CHAR、VARCHAR和TEXT的字段上,以便于能够更加快速的查询数据量较大的字符串类型的字段。
MySQL从3.23.23版本开始支持全文索引,只能在存储引擎为MyISAM的数据库表上创建全文索引。在默认情况下,全文索引的搜索执行方式为不区分大小写,如果全文索引所关联的字段为二进制数据类型,则以区分大小写的搜索方式执行。
1、创建表时创建全文索引
查看帮助文档发现,在MySQL数据库管理系统中创建全文索引通过SQL语句FULLTEXT INDEX来实现,其语法形式如下:
CREATE TABLE table_name (
属性名 数据类型,
属性名 数据类型,
……
属性名 数据类型,
FULLTEXT INDEX|KEY 【索引名】(属性名1 【(长度)】 【ASC|DESC】)
);
上述语句中比创建普通索引多了一个SQL关键字FULLTEXT,其中FULLTEXT INDEX或FULLTEXT KEY表示创建全文索引。
【实例6-7】执行SQL语句FULLTEXT INDEX,在数据库company中,于表t_dept的loc字段上创建全文索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,具体SQL语句如下:
USE company;
(2)执行SQL语句FULLTEXT INDEX,在创建表t_dept时,于字段loc上创建全文索引,具体SQL语句如下:
CREATE TABLE t_dept(
deptno INT,
dname VARCHAR(20),
loc VARCHAR(40),
FULLTEXT INDEX index_loc(loc)
) ENGINE=MyISAM;
【代码说明】上述语句中创建了关联表t_dept中字段loc的全文索引index_loc。
(3)为了校验数据库表t_dept中全文索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_loc全文索引,其所关联的字段为loc。
4)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
SELECT * FROM t_dept WHERE dname=’cjgong’;
执行结果显示,possible_keys和key字段处的值都为所创建的索引名index_dname_loc,则说明该索引已经存在,而且已经开始启用。

12 楼

2、在已经存在的表上创建全文索引
查看帮助文档发现,在MySQL数据库管理系统中创建全文索引除了通过SQL语句FULLTEXT INDEX来实现外,还可以通过SQL语句CREATE FULLTEXT INDEX来实现,其语法形式如下:
CREATE FULLTEXT INDEX 索引名
ON 表名(属性名 【(长度)】 【ASC|DESC】)
上述语句中CREATE FULLTEXT INDEX关键字表示用来创建全文索引。
【实例6-8】执行SQL语句INDEX,在数据库company中已经创建好的表t_dept上,创建关联字段loc的全文索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
DESC t_dept;
(2)执行SQL语句CREATE FULLTEXT INDEX,于表t_dept中创建关联字段loc的全文索引对象index_deptno,具体SQL语句如下:
CREATE FULLTEXT INDEX index_loc
ON t_dept (loc);
【代码说明】上述语句中创建了关联表t_dept中字段loc的全文索引index_loc。
(3)为了校验数据库表t_dept中全文索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_loc全文索引,其所关联的字段为loc。

13 楼

3、通过SQL语句ALTER TABLE创建唯全文索引
除了上述两种方式来创建全文索引外,在MySQL数据库管理系统中创建全文索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE table_name
ADD FULLTEXT INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
上述语句中FULLTEXT INDEX或KEY关键字用来指定创建全文索引,“索引名”参数用来指定所创建索引名,“属性名”参数用来指定索引所关联的字段的名称,“长度”参数用来指定索引的长度,“ASC”参数用来指定为升序排序,“DESC”参数用来指定为降序排序。
【实例6-9】执行SQL语句ALTER TABLE,在数据库company中,于表t_dept的loc字段上创建全文索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;

DESC t_dept;
(2)执行SQL语句ALTER TABLE,于表t_dept中创建关联字段loc的全文索引对象index_loc,具体SQL语句如下:
ALTER TABLE t_dept
ADD FULLTEXT INDEX index_loc(loc);
【代码说明】上述语句中创建了关联表t_dept中字段loc的全文索引index_loc。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_loc索引,其所关联的字段为loc。

14 楼

(2)执行SQL语句INDEX,在创建表t_dept时,于dname和loc字段上上创建多列索引,具体SQL语句如下:
CREATE TABLE t_dept(
deptno INT,
dname VARCHAR(20),
loc VARCHAR(40),
KEY index_dname_loc(dname,loc)
);
【代码说明】在上述语句中,创建表t_dept的同时设置了关于字段deptno和loc的多列索引对象index_dname_loc。
(3)为了校验数据库表t_dept中多列索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_dname_loc多列索引,其所关联的字段为dname和loc。
(4)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
SELECT * FROM t_dept WHERE dname=’cjgong’;
执行结果显示,possible_keys和key字段处的值都为所创建的索引名index_dname_loc,则说明该索引已经存在,而且已经开始启用。
2、在已经存在的表上创建多列索引
查看帮助文档发现,在MySQL数据库管理系统中创建全文索引除了可以在创建表时实现外,还可以为已经存在的表设置全文索引,其语法形式如下:
CREATE INDEX 索引名
ON 表名(属性名 【(长度)】 【ASC|DESC】,
……
属性名n 【(长度)】 【ASC|DESC】

上述语句中比创建普通索引多关联了几个字段。
【实例6-11】执行SQL语句CREATE INDEX,在数据库company中,于表t_dept的dname和loc字段上创建多列索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
DESC t_dept;
(2)执行SQL语句CREATE INDEX,于表t_dept中创建关联字段dname和loc的多列索引对象index_dname_loc,具体SQL语句如下:
CREATE INDEX index_dname_loc
ON t_dept (dname,loc);
上述语句中创建了关联表t_dept中字段dname和loc的多列索引index_dname_loc。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_dname_loc多列索引,其所关联的字段为dname和loc。

15 楼

3、通过SQL语句ALTER TABLE创建多列索引
除了上述两种方式来创建多列索引外,在MySQL数据库管理系统中创建多列索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE table_name
ADD INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】,
……
属性名n 【(长度)】 【ASC|DESC】

上述语句中INDEX或KEY关键字用来指定创建索引,由于所涉及到字段为多个,所以为创建多列索引。
【实例6-12】执行SQL语句ALTER TABLE,在数据库company中,于表t_dept的deptno字段上创建多列索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
DESC t_dept;
(2)执行SQL语句CREATE INDEX,于表t_dept中创建关联字段dname和loc的多列索引对象index_dname_loc,具体SQL语句如下:
ALTER TABLE t_dept
ADD INDEX index_dname_loc(dname,loc);
上述语句中创建了关联表t_dept中字段dname和loc的多列索引index_dname_loc。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_dname_loc多列索引,其所关联的字段为dname和loc。

16 楼

6.2.5 通过SQLyog客户端软件来创建索引
在学习MySQL数据库阶段,可以通过MySQL数据库服务器自带的工具“MySQL Command Line Client”来创建索引,该工具可以帮助大家尽快掌握关于创建索引的语法。但是在数据库开发阶段,用户一般通过客户端软件SQLyog来创建索引。
下面将通过一个具体的实例来说明如何通过MySQL客户端软件SQLyog创建表。
【实例6-13】于数据库company里,为数据库表对象t_dept创建各种类型的索引。具体步骤如下:
(1)首先连接数据库管理系统,然后单击“company>表>t_dept>索引”节点前的加号,进入关于数据库company里表t_dept的索引节点中
(2)在“对象资源管理器”窗口中,右键单击“索引”节点,然后选择“创建索引”命令则会打开“t_dept”窗口。该窗口中主要分成两部分,上面部分为表的详细信息,下面部分可以设置索引对象的信息。
(3)如果想创建普通索引对象index_deptno。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话框,在该对话框中单击“确定”按钮就可以实现该索引对象的创建。
(4)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_deptno
(5)如果想创建唯一索引对象index_deptno。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话框,在该对话框中单击“确定”按钮就可以实现该索引对象的创建。
(6)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_deptno
(7)如果想创建全文索引对象index_loc。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话),在该对话框中单击“确定”按钮就可以实现该索引对象的创建
(8)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_loc
(9)如果想创建多列索引对象index_dname_loc。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话,在该对话框中单击“确定”按钮就可以实现该索引对象的创建。
(10)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_dname_loc

17 楼

6.3 删除索引
索引的操作包括创建索引、查看索引和删除索引。所谓删除索引,就是删除表中已经创建的索引。之所以要删除索引,是由于这些索引会降低表的更新速度,影响数据库的性能,本节将详细介绍如何删除索引。
6.3.1 删除索引的语法形式
查看帮助文档发现,在MySQL数据库管理系统中删除索引通过SQL语DROP IINDEX来实现,其语法形式如下:
DROP INDEX index_name
ON table_name
上述语句中index_name参数表示所要删除索引名字,table_name参数表示所要删除索引所在的表对象。
【实例6-14】执行SQL语句DROP INDEX,于数据库company里删除表对象t_dept中的索引对象index_dname_loc。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句SHOW CREATE TABLE查看该数据库中表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
SHOW CREATE TABLE t_dept \G
(2)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
SELECT * FROM t_dept WHERE dname=’cjgong’;
(3)执行SQL语句DROP INDEX,删除索引对象index_dname_loc,具体SQL语句如下:
DROP INDEX index_dname_loc
ON t_dept;
(4)为了校验数据库company中是否还存在索引对象index_dname_loc,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,t_dept表已经不存在索引对象index_dname_loc。
6.3.2 通过SQLyog软件删除索引
在客户端软件SQLyog中,不仅可以通过在“询问”窗口中执行DROP INDEX语句来删除索引,而且还可以通过向导来实现,具体步骤如下:
(1)在“对象资源管理器”窗口中,单击“company>表>t_dept>索引”节点前的加号,然后右键单击“index_dname_loc”节点,从弹出的快捷菜单中选择“删除索引”命令
(2)当单击“删除索引”命令时,就会弹出对话框来确定是否删除索引。当单击“是”按钮后,这时“对象资源管理器”窗口里“company>表>t_dept”中的索引节点里就没有任何索引对象
通过上述步骤,就可以成功删除索引对象。

18 楼

6.4 小结
本章主要介绍在MySQL软件关于索引的操作,分别从数据库对象索引的基本概念和操作两方面介绍。其中前者主要介绍为什么要使用索引对象。而后者主要介绍了创建索引操作、查看索引操作和删除索引操作,详细讲解了普通索引、唯一索引、全文索引和多列索引等各种类型索引的相关操作。为了让读者掌握这些操作,分别通过SQL语句和SQLyog客户端软件这两种方式来介绍。
通过对本章的学习,读者不仅会掌握数据库对象索引的基本概念,而且还会熟练掌握索引的各种操作。

我来回复

您尚未登录,请登录后再回复。点此登录或注册