精华内容
下载资源
问答
  • 上篇讲述了一下mysql索引的应用,本篇则主要针对索引命令进行一下总结,依旧拿employees为例说明。首先要知道索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持...

    上篇讲述了一下mysql索引的应用,本篇则主要针对索引命令进行一下总结,依旧拿employees为例说明。

    首先要知道索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换。MEMORY/HEAP存储引擎:支持HASH和BTREE索引。

    主键索引、唯一索引:

    主键和主键索引:

    主键一定是唯一性索引,唯一性索引并不一定就是主键。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。

    一个表中可以有多个唯一性索引,但只能有一个主键。

    主键列不允许空值,而唯一性索引列允许空值。

    索引可以提高查询的速度。

    创建主键索引:

    //为emp_no创建主键索引

    alter table employees add primary KEY(emp_no);

    创建唯一索引:

    //为test表中的seller_id字段添加唯一索引

    alter table test add unique index(seller_id);

    普通索引:

    MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

    //为first_name创建唯一索引

    alter table employees add index first_name (first_name);

    联合索引:

    又称复合索引;Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

    //为employees表中的birth_date, first_name, last_name创建联合索引

    alter table employees add index bd_fn_ln (birth_date, first_name, last_name);

    全文索引:

    全文索引只能适用于MyISAM引擎,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。全文索引其实就是根据某个关键字,全文搜索,比如有一个字段内容为“北京博物馆拍卖正在进行中……”,那么当输入“博物馆”几个关键字的时候,则会把该条记录搜索出来。

    开篇我们提到了INNODB引擎是支持BTREE索引的,也为我们下篇讲述索引原理买下伏笔。

    展开全文
  • 查看表中已经存在 index: show index from table_name;...唯一索引名:UDX_table_<column>_<column> 其中<table>是建立索引的表名,&a


    查看表中已经存在 index

    show index from table_name;
    

    索引命名规则

    普通索引名:IX_<table>_<column>_<column>
    唯一索引名:UN_<table>_<column>_<column>
    其中<table>是建立索引的表名,<column>是建立索引的字段名
    索引名限制在30个字符内。当索引名超过30字符时,可用缩写来减少索引名的长度,如description –> desc;information –> info;address –> addr等


    创建索引

    索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。

    使用ALTER TABLE语句创建索引

    // 创建普通索引
    alter table table_name add index index_name (column_list) ;
    
    // 创建唯一索引
    alter table table_name add unique index_name (column_list) ;
    
    // 创建主键索引
    alter table table_name add primary key index_name (column_list) ;
    

    其中包括普通索引、UNIQUE索引和PRIMARY KEY索引3种创建索引的格式,table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引。

    创建索引的示例如下:

    mysql> use tpsc
    Database changed
    mysql> alter table tpsc add index shili (tpmc ) ;
    Query OK, 2 rows affected (0.08 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    

    使用CREATE INDEX语句对表增加索引

    能够增加普通索引和UNIQUE索引两种。其格式如下:

    // 创建普通索引
    create index index_name on table_name (column_list) ;
    
    // 创建唯一索引
    create unique index index_name on table_name (column_list) ;
    

    说明:table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可省略。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。

    删除索引

    删除索引可以利用ALTER TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理。

    drop index index_name on table_name ;
    
    alter table table_name drop index index_name ;
    
    alter table table_name drop primary key ;
    

    其中,在前面的两条语句中,都删除了table_name中的索引index_name。而在最后一条语句中,只在删除PRIMARY KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

    如果从表中删除某列,则索引会受影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。

    删除索引的操作,如下面的代码:

    mysql> drop index shili on tpsc ;
    Query OK, 2 rows affected (0.08 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    该语句删除了前面创建的名称为“shili”的索引。
    
    展开全文
  • 简单的唯一索引:可以创建一个唯一索引的表。唯一的索引意味着两个行不能拥有相同的索引值。这里是语法来创建索引的表代码如下CREATE UNIQUE INDEX index_nameON table_name ( column1, column2,...);可以使用一个或...

    简单的唯一索引:

    可以创建一个唯一索引的表。唯一的索引意味着两个行不能拥有相同的索引值。这里是语法来创建索引的表

    代码如下

    CREATE UNIQUE INDEX index_name

    ON table_name ( column1, column2,...);

    可以使用一个或多个列上创建索引。例如,我们可以创建一个索引的使用在表tutorials_tbl的tutorial_author列上

    代码如下

    CREATE UNIQUE INDEX AUTHOR_INDEX

    ON tutorials_tbl (tutorial_author)

    可以创建一个简单的索引的表。只要省略UNIQUE关键字的查询创建一个简单的索引。简单的索引允许重复表中的值。

    如果你想在一列以降序索引值,可以在列名后添加保留字DESC:

    代码如下

    mysql> CREATE UNIQUE INDEX AUTHOR_INDEX

    ON tutorials_tbl (tutorial_author DESC)

    ALTER命令添加和删除索引:

    有四种类型的语句表添加索引:

    代码如下

    ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) :

    这条语句添加一个主键,这意味着索引值必须是唯一的,不能是NULL。

    代码如下

    ALTER TABLE tbl_name ADD UNIQUE index_name (column_list):

    这条语句创建一个索引,其值必须是唯一的(除NULL值,这可能会多次出现)。

    代码如下

    ALTER TABLE tbl_name ADD INDEX index_name (column_list):

    这增加了一个普通的索引,其中的任何值,可能会出现多于一次。

    代码如下

    ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):

    这将创建一个特殊的FULLTEXT索引,用于文本搜索的目的。

    下面是这个例子,在现有的表添加索引。

    代码如下

    mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

    可以删除任何INDEX通过使用DROP子句和使用ALTER命令。试试下面的例子上面创建的索引下降。

    代码如下

    mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

    可以删除任何INDEX通过使用DROP子句t和使用ALTER命令。试试下面的例子上面创建的索引x。

    ALTER命令来添加和删除PRIMARY KEY:

    您可以添加主键,以及在相同的方式中。但要确保主键这是NOT NULL的列上。

    这是在现有的表添加主键的例子。这将NOT NULL列,然后将其添加为一个主键。

    代码如下

    mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;

    mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

    可以使用ALTER命令删除主键如下:

    代码如下

    mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

    要删除索引,这不是一个PRIMARY KEY,所以必须指定索引的名称。

    显示索引信息:

    您可以使用SHOW INDEX命令,列出所有相关联的索引表。垂直格式输出(指定由 G)往往是有用的这句话,以避免长时间行重叠:

    试试下面的例子:

    代码如下

    mysql> SHOW INDEX FROM table_nameG

    ........

    加索引

    mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);

    例子:

    代码如下

    mysql> alter table employee add index emp_name (name);

    加主关键字的索引

    mysql> alter table 表名 add primary key (字段名);

    例子:

    代码如下

    mysql> alter table employee add primary key(id);

    加唯一限制条件的索引

    mysql> alter table 表名 add

    unique 索引名 (字段名);

    例子:

    代码如下

    mysql> alter table employee add unique emp_name2(cardnumber);

    查看某个表的索引

    mysql> show index from 表名;

    例子:

    代码如下

    mysql> show index from employee;

    删除某个索引

    mysql> alter table 表名 drop index 索引名;

    例子:

    代码如下

    mysql>alter table employee drop index emp_name;

    总结索引与优化

    1、选择索引的数据类型

    MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:

    (1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。

    (2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。

    (3)尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

    展开全文
  • MySQL数据库表可以创建、查看、重建和删除索引,索引可以提供查询速度。索引根据分类,分为普通...本文主要是对如何使用命令操作MySQL索引,包括创建索引、重建索引、查询索引、删除索引的操作。以下所列示例中的...

    MySQL数据库表可以创建、查看、重建和删除索引,索引可以提供查询速度。索引根据分类,分为普通索引和唯一索引;有新建索引、修改索引和删除。但是索引不是到处都可以创建,需要根据具体的条件。下面利用实例说明索引创建到销毁的过程,操作如下:

    43aab920faab44f36c3936f841c27d04.png

    熟悉使用MySQL命令可以方便灵活地执行各种数据库操作;本文主要是对如何使用命令操作MySQL索引,包括创建索引、重建索引、查询索引、删除索引的操作。以下所列示例中的 `table_name` 表示数据表名,`index_name` 表示索引名,column list 表示字段列表(如:`id`,`order_id`)。

    1、创建索引

    索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。以下命令语句分别展示了如何创建主键索引(PRIMARY KEY),联合索引(UNIQUE)和普通索引(INDEX)的方法。

    mysql>ALTER TABLE `table_name` ADD INDEX `index_name` (column list);

    mysql>ALTER TABLE `table_name` ADD UNIQUE `index_name` (column list);

    mysql>ALTER TABLE `table_name` ADD PRIMARY KEY `index_name` (column list);

    mysql>CREATE INDEX `index_name` ON `table_name` (column_list);

    mysql>CREATE UNIQUE INDEX `index_name` ON `table_name` (column_list);

    例如:

    mysql>ALTER TABLE `article` ADD INDEX `id`;//给article表增加id索引

    或者:

    mysql>ALTER TABLE `article` ADD INDEX (`id`,`order_id`);//给article表增加id索引,order_id索引

    2、重建索引

    重建索引在常规的数据库维护操作中经常使用。在数据库运行了较长时间后,索引都有损坏的可能,这时就需要重建。对数据重建索引可以起到提高检索效率。

    mysql> REPAIR TABLE `table_name` QUICK;

    3、查询数据表索引

    mysql> SHOW INDEX FROM `table_name`;

    4、删除索引

    删除索引可以使用ALTER TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:

    mysql>DROP index `index_name` ON `table_name` (column list);

    mysql>ALTER TABLE `table_name` DROP INDEX `index_name` (column list);

    mysql>ALTER TABLE `table_name` DROP UNIQUE `index_name` (column list);

    mysql>ALTER TABLE `table_name` DROP PRIMARY KEY `index_name` (column list);

    在前面的三条语句中,都删除了table_name中的索引index_name。而在最后一条语句中,只在删除PRIMARY KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引,因此也可不指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。如果从表中删除某列,则索引会受影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    展开全文
  • mysql 索引-【创建索引命令

    千次阅读 2018-08-10 09:48:45
    上篇讲述了一下mysql索引的应用,本篇则主要针对索引命令进行一下总结,依旧拿employees为例说明。 首先要知道索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只...
  • 本文主要是对如何使用命令操作MySQL索引,包括创建索引、重建索引、查询索引、删除索引的操作。以下所列示例中的 `table_name` 表示数据表名,`index_name` 表示索引名,column list 表示字段列表(如:`id`,`order_...
  • 一、索引基础:  MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧。下面是创建索引的命令:  > db.test.ensureIndex({"username":1}) ... 删除索引的命令是:  > db.test.dro
  • #创建普通索引 CREATE INDEX idx_user_name on u_user(name); #查看当前表的索引 SHOW INDEX FROM u_user; #删除索引 DROP INDEX idx_user_name ON u_user; ##########################ALTER命令#...#添加索引的值是必.
  • 下面的命令将当前记录指针定位到第6记录,哪个是不正确的命令(d).A.GOTO 6B.GO 6C.GO 5SKIPD.GO TOP +53. 设当前记录号是10,执行命令SKIP-2后,当前记录号变为(d).A.9B.7C.12D.84. 打开一个建立了结构复合索引的数据...
  • MySQL创建索引

    2021-01-19 11:06:23
    1. 索引分类 1.1 普通索引 ...创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复; 唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n); 在sql server中,
  • 它是一种特殊的唯一索引,不允许有空值。一般是在建表时候同时创建主键索引 3. 唯一索引: 与普通索引类似,不同就是:索引列值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值组合...
  • 一、索引基础 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得 更...删除索引的命令是: db.user.dropIndex({"username":1}) 在 MongoDB 中,我们同样可以创建复合索引,如: 数字 1
  • 5个常见类型,普通索引、唯一索引、主键索引、全文索引、覆盖索引 普通索引 是最基本索引,它没有任何限制 创建索引 // 直接创建索引 create index index_name on user(name); // 修改表结构方式添加索引 alter ...
  • 一、索引的概念 数据库索引是一个排序的列表,存储着索引值和这个值所对应的物理地址,相当于一本书的...通过创建唯一性索引保证数据表数据的唯一性 可以加快表与表之间的连接 在使用分组和排序时,可大大减少分组和
  • 注1:一张表主键只能有一个,可以有多个外键以及唯一索引 注2:Oracle数据库共有5个约束:主键、外键、非空、唯一、条件非空:这个列值不能为空(NOT NULL)唯一:这个列值在表中是唯一存在,不能重复,但可以...
  • 文章目录MySQL 索引单列索引组合索引创建索引索引底层索引的优缺点创建索引修改表结构(添加索引)创建表的时候直接指定删除索引的语法唯一索引创建索引修改表结构创建表的时候直接指定使用ALTER 命令添加和删除索引...
  • 索引

    2019-04-23 16:16:56
    它是一种特殊的唯一索引,不允许有空值。一般是在建表时候同时创建主键索引。 当然也可以用 ALTER 命令。记住:一个表只能有一个主键。 (2) 唯一索引 UNIQUE 唯一索引值必须唯一,但允许有空值。如果是组合...
  • 我们创建了一张表 table1,定义了三个唯一索引,其中有 cc,dd是非空唯一索引,bb是允许为空 插入了三条数据,我们可以通过_rowid(隐形字段)来查看记录主键字段值,会发现是dd这个字段作为了主键,所以选择主键...
  • 创建唯一索引7.重建索引 一. 索引介绍 索引就是为了加速查询的,MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧。下面是创建索引的命令: 二. 索引的操作 1. 创建索引 db.集合...
  • 索引 索引是关键字与数据关系映射,索引是一种数据结构B+Tree,这种...3.唯一索引 unique key 4.全文索引 fulltext key 创建索引 1.创建一张表,添加了主键索引 2.添加普通索引(alter table table_name add ...
  • 1.基本表的创建 create table 表名( [列级完整性约束条件] [, [列级完整性约束条件]]... [,] ); eg: create student(id int primary key, name varchar(20) not null , number varchar(10) unique); //...
  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。 ALTER TABLE tbl_name ADD INDEX index_name (column_list):
  • 一、索引 1.索引定义 索引是由数据库表中一列或者多列组合而成,...缺点:创建和维护索引的时间增加了; 3.索引分类 1,普通索引 这类索引可以创建在任何数据类型中; 2,唯一性索引 使用 UNIQUE 参数可以设...
  • 一、索引的概念 1.1、数据库索引 1.1.1、是一个排序的列表,存储着索引值和这个值所对应的物理地址,相当于一本书的目录 1.1.2、无须对整个表进行扫描,通过物理地址就可以找到所需数据 ...2.4、通过创建唯一性索引保
  • 索引就是一种特殊的查询表数据库的搜索引擎可以利用它加速对数据的检索就像书的目录不需要查询整本书就可以找到想要的数据优点:加快访问速度加强唯一性缺点:带索引的表在数据库中需更多的存储空间操作数据的命令需...
  • 索引类型 虽然MongoDB索引在存储结构上都是一样,但是根据不同应用...唯一索引创建时加上unique:true 选项即可,创建命令如下: db.users.ensureIndex({username: 1}, {unique: true}) 上面唯一索...
  • 视图是查询命令结果构成一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集合,并可以当作表来查询使用。1创建视图--格式:CREATE VIEW ...
  • 深入理解MySQL索引设计和优化原则

    千次阅读 多人点赞 2020-08-08 17:05:15
    唯一索引UNIQUE:唯一索引值必须唯一,但允许有空值。如果是组合索引,则列值组合必须唯一。 创建命令:ALTER TABLE table_name ADD UNIQUE (column); 普通索引INDEX:最基本索引,它没有任何限制。 创建...
  • 索引视图

    2018-06-16 10:36:51
    在视图上创建索引的另一个好处是:查询优化器开始在查询中使用视图索引,而不是直接在 FROM 子句中命令视图。这样一来,可从索引视图检索数据而无需重新编码,由此带来的高效率也使现有查询获益。在视图上创建的第...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 158
精华内容 63
关键字:

创建唯一索引的命令是