收藏 分销(赏)

MySQL开发与实践 第6章索引.pdf

上传人:曲**** 文档编号:225517 上传时间:2023-03-08 格式:PDF 页数:38 大小:1.67MB
下载 相关 举报
MySQL开发与实践 第6章索引.pdf_第1页
第1页 / 共38页
MySQL开发与实践 第6章索引.pdf_第2页
第2页 / 共38页
MySQL开发与实践 第6章索引.pdf_第3页
第3页 / 共38页
MySQL开发与实践 第6章索引.pdf_第4页
第4页 / 共38页
MySQL开发与实践 第6章索引.pdf_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、本章要求:第6章索引了解MyS Q L索引的概念了解MyS Q L数据库索引的分类 掌握在建立数据表时创建索引 掌握在已建立数据表中创建索引 掌握修改数据表结构添加索引 掌握删除索引的使用方法lmrm二二一第6章索引主要内容1.索引概述2.创建索引3.删除索引4.综合实例使用ALT E R T ABLE语句创建全文索引1索引概述1 MyS Q L索引概述2 MyS Q L索引分类6.1.1 MyS Q L索引概述 索引是一种将数据库中单列或者多列的值进行排序的结构。应用索引,可以大幅度提高查询的速度。向户通过索引查询数据,不但可以提高查询速度,也可以降低服务器的负载。用户查询数据时,系统可以不

2、必遍历数据表中的所有记录,而是查询索引列。一般过程的数据查询是通过遍历全部数据,并寻找数据库中的匹配记录而实现的。与一般形式的查询相比。索引就像一本书的目录。而 当用户通过目录查找书中内容时,就好比用户通过目录查询某章节的某个知识点。这样就为用户在 查找内容过程中,缩短大量时间。帮助用户有效的提高查找速度。所以,使用索引可以有效的提高 与 数据库系统的整体性能。应用MyS Q L数据库时,并非用户在查询数据的时候,总需要应用索引来优化查询。凡事都有双面 性,使用索引可以提高检索数据的速度,对于依赖关系的子表和父表之间的联合查询时,可以提高 查询速度,并且可以提高整体的系统性能。但是,创建索引和

3、维护需要耗费时间,并且该耗费时间 与数据量的大小成正比;另外,索引需要占用物理空间,给数据的维护造成很多麻烦。.整体来说,索引可以提高查询的速度,但是会影响用户操作数据库的插入操作。因为,向有索 引的表中插入记录时,数据库系统会按照索引进行排序。所以,用户可以将索引删除后,插入数据.,当数据插入操作完成后,用户可以重新创建索引。说明:.不同的存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎对每个表至少支持16个索引。总索引长度至少为256字节。有些存储引擎支持更多的索引数和更大的索引长度。索引有两 种存储类型,包括B型树(BT RE E)索引和哈希(HAS H)索引。其中B型树为系统

4、默认索引方法。m-二 y 二二6.1.2 MyS Q L索引分类 MyS Q L的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。普藁引;即不应用任何限制条件的索引,该索引可以在任何数据类型中创建。字段本身的约束条.件可以判断其值是否为空或唯一。创建该类型索引后,用户在查询时,便可以通过索引进行查询。在某数据表的某一字段中,建立普通索引后。用户需要查询数据时,只需根据该索引进行查询即可.。2.唯一,性索引 使用UN I Q UE参数可以设置唯一索引。创建该索引时,索引的值必须唯一,通过唯一索引,用户可以 快速的定位某条记录,主键是一种特殊唯一索引。3.全文索引_ 使用F

5、ULLT E XT参数可以设置索引为全文索引。全文索引只能创建在CHAR、VARCHAR或者T E XT类型的字 段上。查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度。例如,查询带有.文章回复内容的字段。可以应用全文索引方式。需要注意的是,在默认情况下,应用全文搜索大小 写不敏感。如果索引的列使用二进制排序后,可以执行大小写敏感的全文索引。.4.单列索引 顾名思义,单列索引即只对应一个字段的索引。其可以包括上述叙述的三种索引方式。应用该索引.的条件只需要保证该索引值对应一个字段即可。5.多列索引 多列索引是在表的多个字段上创建一个索引。该索引指向创建时对应的多个字段,用户可以

6、通过这 几个字段进行查询。要想应用该索引,用户必须使用这些字段中第一个字段。6.空间索引使用S P AT I AL参数可以设置索引为空间索附百间聚电功能建立在空间数据类型上,这样可以提高系 统获取空间数据的效率。MyS Q L中只有Myl丽荐储弓像支持空间检索。而且索引的字段不能为空值。6.2创建索引6.2.1在建立数据表时创建索引6.2.2 在已建立的数据表中创建索引6.2.3 修改数据表结构添加索引)J6.2.1在建立数据表时创建索引 在建立数据表时可以直接创建索引,这种方式比较直接,且方便、易用。在建立数据表时创建.索引的基本语法结构如下。.create table table_name

7、(属性名数据类就约束条件,属性名数据类型约束条件.属性名数据类型UNIQUE|FULLTEXT|SPATIAL INDEX KEY.别名(属性名1(长度)ASC|DESC);其中,属性名后的属性值,其含义如下:,UN I Q UE:可选参数,表明索引为唯一性索引;.FULLT E XT:可选参数;表明索引为全文搜索。S P AT I AL:可选参数,表明索引为空间索引。I N DE X和K E Y参数用于指定字段索引,用户在选择时,只需要选择其中的一种即可;另外别名为 可选参数,其作用是给创建的索引取新名称;别名的参数如下:.属性名1:指索引对应的字段名称,该字段必须被预先定义。长度:可选参数

8、,其指索引的长度,必须是字符串类型才可以使用。.AS C/DE S C:可选参数,AS C表示升序排列,DE S C参数表示降序排列。1.普通索引创建 创建普通索引,即不添加UN I Q UE、FULLT E XT等任何参数。【例6-1】下面创建表名为score的数据表,并在该表的id字段上建立索引,其主要代码如下:create table score(id int(11)auto_increment primary key not null,name varchar(50)not null,math inK5)not null,english int(5)not null,Chinese i

9、n2)not null,index(id);运行以上代码的结果如图6-1所示。iys ql create table s core id auto-increment prinary key not null,-name varchar not null,-math int not null,-englis h int not null,-Chines e int not null,-index;!uery OK,0 rows af f ected 图6-1创建普通索引在命令提示符中使用SHOW CREATE TABLE语句查看该表的结构,在命令提示符中输入的代码如下:show create

10、table score;其运行结果如图6-2所示。!score*CREATE TABLE s core id int NOT NULL auto_increment,name uarchar NOT NULL,math int NOT NULL,englis h int NOT NULL,Chinese%int NOT NULL.PRIMARY KEY id,KEY id ENGI NE=MsfISAM DEFAULT CHARSET=ut8-+-图6-2查看数据表结构.从图6-2中可以清晰的看到。该表结构的索引为id,则可以说明该表的索引建立成功。2.创建唯一性索引创建唯一性索引与创建一般索

11、引的语法结构大体相同,但是在创建唯一索引的时候,需要使用 UN I Q UE参数进行约束。【例6-2】创建一个表名为address的数据表,并指定该表的id字段上建立唯一索引。其代码如下 所示:create table address(id int(l 1)auto_increment primary key not null,name varchar(50),address varchar(200),UNIQUE INDEX address(id ASC);4HFL 二二应用S HOW CRE AT E T ABLE语句查看表的结构,其运行如图6-3所示。:address!CREATE TA

12、BLE addres s id int NOT NULL auto_increnent,name varchar def ault NULL,address varchar def ault NULL,PRIMARY KEY _|UNIQUE KEY address;id,)唯一索引ENGINE=MyISAM DEFAULT CHARSET=ut8-图6-3查看唯一索引的表结构从图6-3中可以看到,该表的id字段上已经建立了一个名为address的唯一索引。说明:虽然添加唯一索引可以约束字段的唯一性,但是有时候并不能提高用户查找速度,即不能实现 优化查询目的。所以,读者在使用过程中需要根据实际

13、情况来选择唯一索引lmrm 二3.创建全文索引.与创建普通索引和唯一索引不同,全文索引的创建只能作用在CHAR、VARCHAR、T E XT类型的字段上。创建全文索引需要使用FULLT E XT参数进行约束。【例6-3】创建一个名称为cards的数据表,并在该表的number字段上创建全文索引。其代码如下create table cards(id int(l 1)auto_increment primary key not null,name varchar(50),number bigint(l 1),info varchar(50),FULLTEXT KEY cards_number(nu

14、mber);在命令提示符中应用S HOW CRE AT E T ABLE语句查看表结构。其代码如下:SHOW CREATE TABLE cards;运行结果如图6-4所示。二二二二!cards!CREATE TABLE cards id int NOT NULL auto_increnent,name varchar def ault NULL,number bigint def ault NULL,inf o uarchar def ault NULL,PRIMARY KEV FULLTEXT KEY cards _nunber ENGINE=MyISAM DEFAULT CHARSET=u

15、tf 8!图6-4查看全文索引的数据表结构说明:只有My I S AM类型的数据表支持FULLT E XT全文索引,I nnoDB或其他类型的数据表不支持全文索引 o 当用户在建立全文索引的时候,返回“E RROR 1283(HY000):Column number cannot be part of FULLT E XT index”的错误,则说明用户操作的当前数据表不支持全文索引,即不为MylS AM类型的 数据表。4.创建单列索引创建单列索引,即在数据表的单个字段上创建索引。创建该类型索引不需要引入约束参数,用 户在建立时只需指定单列字段名,即可创建单列索引。【例6-4】创建名称为tel

16、ephone的数据表,并指定在tel字段上建立名称为tel_num的单列索引,其代码如下:create table telephone(id int(l 1)primary key auto_increment not null,name varchar(50)not null,tel varchar(50)not null,index tel_num(tel(20);运行上述代码后,应用S HOW CRE AT E T ABLE语句查看表的结构,其运行结果如图6-5所示。i telephone i CREATE TABLE telephone id int NOT NULL auto_inc

17、renent,name、uarchar NOT NULL,tel*varchar NOT NULL.PRIMARY KEY KEV tel_num tel ENGINE=MsrISAM DEFAULT CHARSET=utf 8;图6-5查看单列索引表的数据表结构.说明:数据表中的字段长度为50,而创建的索引的字段长度为20,这样做的目的是为了提高查询效率,优化查询速度。5.创建多列索引与创建单列索引相仿,创建多列索引即指定表的多个字段即可实现。【例6-5】创建名称为information的数据表,并指定name和sex为多列索引,其代码如下:create table information(

18、id int(l 1)auto_increment primary key not null,name varchar(50)not null,sex varchar(5)not null,birthday varchar(50)not null,INDEX info(name,sex)二二二应用S HOW CRE AT E T ABLE语句查看创建多列的数据表结构,其运行结果如图6-6所示。inf ormation;CREATE TABLE inf ormation id int NOT NULL auto_increment,name uarchar NOT NULL,s ex varch

19、ar NOT NULL,birthday varchar NOT NULL,PRIMARY KEV KEY inf o ENGINE=MyISAM DEFAULT CHARSET=ut8!图6-6查看多列索引表的数据结构需要注意的是,在多列索引中,只有查询条件中使用了这些字段中的第一个字段(即上面示例 中的name字段)时,索引才会被使用。说明:触发多列索引的条件是用户必须使用索引的第一字段,如果没有用到第一字段,则索引不起任 何作用,用户想要优化查询速度,可以应用该类索引形式。6.创建空间索引创建空间索引时,需要设置S P AT I AL参数。同样,必须说明的是,只有MylS AM类型表支持

20、该类 型索引。而且,索引字段必须有非空约束。【例6-6】创建一个名称为list的数据表,并创建一个名为listinfo的空间索引。其代码如下:create table list(id int(l 1)primary key auto_increment not null,goods geometry not nullSPATIAL INDEX listinfo(goods)engine=MyISAM;运行上述代码,创建成功后,在命令提示符中应用S HOW CRE AT E T ABLE语句查看表的结构。其运 行结果如图6-7所示-+ENGINE=MsfISAM DEFAULT CHf iRSE

21、T=ut8lis t!CREATE TABLE lis t id int NOT NULL auto_increnent,goods GEOMETRY NOT NULL.PRIMARY KE id)SPATIAL KEY lis t inf o二二二图6-7查看空间索引表的结构从图6-7中可以看到,goods字段上已经建立名称为listinfo的空间索引,其中goods字段必须不 能为空,且数据类型是GE OME T RY。该类型是空间数据类型。空间类型不能用其他类型代替。否则在 生成空间索引时会产生错误且不能正常创建该类型索引。说明:空间类型除了上述示例中提到的GE OME T RY类型外,

22、还包括如P OI N T、LI N E S T RI N G、P OLYGON等类 型。这些空间数据类型在平常的操作中很少被用到。Jmrm-二6.2.2在已建立的数据表中创建索引在MyS Q L中,不但可以在用户创建数据表时创建索引,用户也可以直接在已经创建的表中,在已经存在的一个或几个字段创建索引。其基本的命令结构如下所示:CREATE UNIQUE|FULLTEXT|SPATIAL INDEX index_name.ON table_name(属性(length)ASC|DESC);命令的参数说明如下:口 口indexjname为索引名称,该参数作用是给用户创建的索引赋予新的名称;tabl

23、e_name为表名,即指定创建索引的表名称。可选参数,指定索引类型,包括UN I Q UE(唯一索引)、FULLT E XT(全文索引)、S P AT I AL(空间索 引)。属性参数,指定索引对应的字段名称。该字段必须已经预存在于用户想要操作的数据表中,如果 该数据表中不存在用户指定的字段,则系统会提示异常;length为可选参数,用于指定索引长度。AS C和DE S C参数,指定数据表的排序顺序。与建立数据表时创建索引相同,在已建立的数据表中创建索引同样包含6种索引方式。1.创建普通索引【例6-7】首先,应用S HOW CRE AT E T ABLE语句查看studentinfo表的结构,

24、其运行结果如图6-8所Oi student inf o CREATE TABLE s tudentinf o s id int NOT NULL auto_increnent,name uarchar NOT NULL,age varchar NOT NULL,s ex uarchar NOT NULL def ault ,tel bigint NOT NULL,tine varchar NOT NULL,PRIMARY KEY,KEY index_nane name KEY index_s tudent_ino names exENGINE=MyISAM AUTONCREMENT=10 DE

25、FAULT CHARSET=ut8图6-8查看未添加索引前的表结构然后,在该表中创建名称为stu_info的普通索引,在命令提示符中输入如下命令:create INDEX stu_info ON studentinfo(sid);输入上述命令后,应用S HOW CRE AT E T ABLE语句查看该数据表的结构。其运行结果如图6-9所示。二二二:studentinfo i CREATE TABLE studentinfo sid int NOT NULL auto_increment,name uarchar NOT NULL,age uarchar NOT NULL.sex uarchar

26、 NOT NULL defaulttel bigint NOT NULL,time uarchar NOT NULL,PRIMARY KEY sid KEV index_nane name),KEY index_student_inf o ENGINE=Ms/ISAM AUTO_INCREMENT=10 DEFAULT CHARSET=ut8图6-9查看添加索引后的表格结构从图6-9中可以看出,名称为stu_info的数据表创建成功。如果系统没有提示异常或错误,则 说明已经向studentinfo数据表中建立称为stu info的普通索引。2.创建唯一索引在已经存在数据表中建立唯一索引的命令如

27、下:CREATE UNIQUE INDEX索引名ON数据表名称(字段名称);其中UN I Q UE是用来设置索引唯一性的参数,该表中的字段名称既可以存在唯一性约束,也可以 不存在唯一性约束。【例6-8 下面在indexl表中的cid字段上建立名为indexl_id的唯一性索引。S Q L代码如下:CREATE UNIQUE INDEX indexl_id ON indexl(cid);输入上述命令后,应用S HOW CRE AT E T ABLE语句查看该数据表的结构。其运行结果如图6-10所示。:indexl!CREATE TABLE indexl cid NOT NULL AUTO_INC

28、REMENT,name uai*char COLLATE utf8_unicode_ci NOT NULL,age uarchar COLLATE utf8_unicode_ci NOT NULL,sex uarchar COLLATE utf8_unicode_ci NOT NULL,tel bigint NOT NULL,time varchar COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEY、cid,UNIQUE KEY indexl_id ENGINE=MyISAM DEFAULT CHfiRSET=utf8 COLLATE=utf8.Unic

29、ode_ci:L row in set 图6T o查看添加唯一索引后的表格结构3.创建全文索引在MyS Q L中,为已经存在的数据表创建全文索引的命令如下:CREATE FULLTEXT INDEX索引名ON数据表名称(字段名称);其中,FULLT E XT用来设置索引为全文索引。操作的数据表类型必须为MylS AM类型。字段类型必 须为VARCHAR、CHAR、T E XT等类型。【例6-9 下面在index2表中的info字段上建立名为index2_info的全文索引。S Q L代码如下:CREATE FULLTEXT INDEX index2_info ON index2(info);输

30、入上述命令后,应用S HOW CRE AT E T ABLE语句查看该数据表的结构。其运行结果如图6-H所示。:index2!CREfiTE TABLE%index2 cid NOT NULL AUTO_INCREMENT,info uarchar COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEV ,FULLTEXT KEV index2_info ENGINE=MsfISAM DEFAULT CHfiRSET=utf8 COLLATE=utf8_unicode-ci!-.L row in set 图6-11查看添加全文索引后的表格结构4.创建单列索引与

31、建立数据表时创建单列索引相同,用户可以设置单列索引。其命令结构如下:CREATE INDEX索引名ON数据表名称(字段名称(长度);设置字段名称长度,可以优化查询速度,提高查询效率。【例6-10】下面在index3表中的address字段上建立名为index3_addr的单列索引。Address字段的数据类型为varchar(20),索引的数据类型为char。S Q L代码如下:CREATE INDEX index3_addr ON index3(address(4);输入上述命令后,应用S HOW CRE AT E T ABLE语句查看该数据表的结构。其运行结果如图6-12所示。index3

32、!CREATE TABLE index3%cid int NOT NULL AUTONCREMENT,address uarchar COLLATE utf8_unicode-ci NOT NULL,PRIMARY KEY ,KEY index3_addr address ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLfiTE=utf8_unicode_ci!图6-12查看添加单列索引后的表格结构,5.创建多列索引.建立多列索引与建立单列索引类似。其主要命令结构如下:CREATE INDEX索引名ON数据表名称(字段名称1,字段名称2.);.与建立数据表时创建多

33、列索引相同,当创建多列索引时,用户必须使用第一字段作为查询条件,否则,索引不能生效。.【例6-11】下面在index4表中的name和address字段上建立名为index4_na的多列索引。S Q L代码如下:.CREATE INDEX index4_na ON index4(name,address);输入上述命令后,应用S HOW CRE AT E T ABLE语句查看该数据表的结构。其运行结果如图6-13所示。!index4:CREATE TABLE index4 cid NOT NULL AUTO.INCREMENT,name uarchar COLLATE utf8-unicode

34、-ci NOT NULL address uai*char COLLATE utf 8_unicode-ci NOT NULL,PRIMARY KEY cid,KEV index4 _na ENGINE=M/ISAM DEFAULT CHARSET=ut8 COLLfiTE=utf8_unicode_ci!图6-13查看添加多列索引后的表格结构6.创建空间索引建立空间索引,用户需要应用S P AT I AL参数作为约束条件。其命令结构如下:CREATE SPATIAL INDEX索引名ON数据表名称(字段名称);其中,S P AT I AL用来设置索引为空间索引。用户要操作的数据表类型必须为M

35、ylS AM类型。并且字 段名称必须存在非空约束。否则将不能正常创建空间索引。6.2.3修改数据表结构添加索引修改已经存在表上的索引。可以通过ALT E R T ABLE语句为数据表添加索引,其基本结构如下:ALTER TABLE table_name ADD UNIQUE|FULLTEXT|SPATIAL INDEX index_name(属性名(length)ASC|DESC);该参数与6.2.1小节和6.2.2小节中所介绍的参数相同,故这里不说赘述,请读者参阅前面两小节中的 内容。1.添加普通索引首先,应用S HOW CRE AT E T ABLE语句查看studentinfo表的结构,

36、其运行结果如图6-14所示。i studentinfo!CREATE TABLE studentinfo sid int NOT NULL auto.increnent name uarchar NOT NULL,age uarchar NOT NULL,sex uarchar NOT NULL default,Ml tel bigint NOT NULL,time uarchar HOT NULL.PRIMARY KEY KEY index_nane,KEY indexestudent_info name,sex KEY stu.info ENGINE=MsfISAM AUTO_INCREM

37、ENT=10 DEFAULT CHARSET=utf8:图6-14查看未添加索引前的表结构然后,在该表中添加名称为timer的普通索引,在命令提示符中输入如下命令:alter table studentinfo ADD INDEX timer(time(20);输入上述命令后,应用S HOW CRE AT E T ABLE语句查看该数据表的结构。其运行结果如图6-15所示。i studentinf o!CREATE TABLE s tudentinf o s id int NOT NULL auto_increment,name uarchar NOT NULL,age uarchai NOT

38、 NULL,s ex uarchar NOT NULL def ault M,tel bigint NOT NULL,time uarchar NOT NULL,PRIMARY KE s id),KEY index_name,KE index_student_inf o,KEY s tuinf o _.图6T 5查看添加索索引后的表格结构从图6T 1中可以看出,名称为timer的数据表添加成功,已经成功向student info数据表中添加.名称为timer的普通索引。说明:从功能上看,修改数据表结构添加索引与在已存在数据表中建立索引所实现功能大体相同,二 者均是在已经建立的数据表中添加或创建

39、新的索引。所以,用户在使用的时候,可以根据个人需求 和实际情况,选择适合的方式向数据表中添加索引。2.添加唯一索引与已存在的数据表中添加索引的过程类似,在数据表中添加唯一索引的命令结构如下所示:ALTER TABLE表名ADD UNIQUE INDEX索引名称(字段名称);其中,ALT E R语句一般是用来修改数据表结构的语句,ADD为添加索引的关键字;UN I Q UE是用来设 置索引唯一性的参数,该表中的字段名称既可以存在唯一性约束,也可以不存在唯一性约束。3.添加全文索引在MyS Q L中,为已经存在的数据表添加全文索引的命令如下:ALTER TABLE表名ADD FULLTEXT IN

40、DEX索引名称(字段名称);其中,ADD是添加的关键字,FULLT E XT用来设置索引为全文索引。操作的数据表类型必须为MylS AM 类型。字段类型同样必须为VARCHAR、CHAR、T E XT等类型。4.添加单列集引 与建立数据表时创建单列索引相同,用户可以设置单列索引。其命令结构如下:ALTER TABLE表名ADD INDEX索引名称(字段名称(长度);.同样,用户可以设置字段名称长度,以便优化查询速度。提高执行效率。5.添加多列索引添加多列索引与建立单列索引类似。其主要命令结构如下:ALTER TABLE表名ADD INDEX索引名称(字段名称1,字段名称2);使用ALT E R

41、修改数据表结构同样可以添加多列索引。与建立数据表时创建多列索引相同,当创 建多列索引时,用户必须使用第一字段作为查询条件,否则,索引不能生效。6.添加空间索引添加空间索引,用户需要应用SPATIAL参数作为约束条件。其命令结构如下:ALTER TABLE表名ADD SPATIAL INDEX索引名称(字段名称);其中,S P AT I AL用来设置索引为空间索引。用户要操作的数据表类型必须为MylS AM类型。并且 字段名称必须存在非空约束。否则将不能正常创建空间索引。该类别索引并不常用,所以,对于初 学者来说,这需要了解该索引类型即可。6.3删除索引在MyS Q L中,创建索引后,如果用户不

42、再需要该索引,则可以删除指定表的索引。因为这些已经 被建立且不常使用的索引,一方面可能会占用系统资源,另一方面也可能导致更新速度下降,这极 大地影响了数据表的性能。所以,在用户不需要该表的索引时,可以手动删除指定索引。其中删除 索引可以通过DROP语句来实现。其基本的命令如下:DROP INDEX index_name ON table_name;其中,参数index_name是用户需要删除的索引名称,参数table_name指定数据表名称,下面应 用示例向读者展示如同删除数据表中已经存在的索引,打开MyS Q L后,应用S HOW CRE AT E T ABLE语句 查看数据表的索引,其运行

43、结果如图6-16所示:!address!CREATE TABLE address id int NOT NULL auto_increnent,name varchar def ault NULL,addres s uarchai*def ault NULL,PRIMARY KEY,UNIQUE KEY addres s ENGINE=MvISAM DEFAULT CHARSET=utf 8:运行上述代码的结果如图6-17所示。iysql drop index address on address;uery OK,0 rows af f ected Records:0 Duplicates:0

44、 Warnings:0图6T 7删除唯一索引address在用户顺利删除索引后,为确定该索引是否已被删除,用户可以再次应用S HOW CRE AT E T ABLE语 句来查看数据表结构。其运行结果如图6-18所示。:address;CREATE TABLE address id int NOT NULL auto_increnent,name uarchar def ault NULL,addres s uarchar def ault NULL,PRIMARY KEY id)ENGINE=M9ISAM DEFAULT CHf iRSET=utf 8!图6T 8再次查看address数据表结

45、构.从图6-18可以看出,名称为“address”的唯一索引已经被删除。6.4综合实例使用ALT E R T ABLE语句创建全文索引全文索引与创建普通索引和唯一索引不同,全文索引创建只能作用在CHAR、VARCHAR.T E XT类型 的字段上。创建全文索引需要使用FULLT E XT参数进行约束,效果如图6-19所示。workinfo!CREATE TABLE workinfo id int NOT NULL AUTO_INCREMENT,name uai*chai*COLLATE utf8_unicode_ci NOT NULL,address uarchar COLLATE utf8u

46、nicode_ci DEFAULT NULL,tel varchar COLLATE utf8_unicode_ci DEFAULT NULL,PRIMARY KEY UNIQUE KEV index-id*KEY index-name Fame、10),FULLTEXT KEV index_ext address)ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode-ci!图6T 9使用alter table语句创建全文索引用修改数据表结果的方式添加全文索引。用ALT E R I N DE X语句在address字段上创建名为 ind

47、ex_ext的全文索引,本实例关键代码参考如下:ALTERlABLE workinfo ADD FULLTEXT INDEX index_ext(address);知销点梃落(1)索引是一种将数据库中单列或者多列的值进行排序的结构。应用索引,可以大幅度提高查询的.速度。.(2)MyS Q L的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。.(3)创建索引是指在某个表中至少一列中建立索引,以便提高数据库性能。其中,建立索引可以提 高表的访问速度。(4)在MyS Q L中,创建索引后,如果用户不再需要该索引,则可以删除指定表的索引。LN.1.MyS Q L的索引分为几种索引?2.如何创建唯一性索引?3.如何添加全文索引?行散

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服