`
xfbbsnet
  • 浏览: 93350 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mysql 添加字段、删除字段、调整字段顺序 转

 
阅读更多
添加字段:

alter table `user_movement_log`
Add column GatewayId int not null default 0 AFTER `Regionid` (在哪个字段后面添加)

删除字段:

alter table `user_movement_log` drop column Gatewayid

调整字段顺序:

ALTER TABLE `user_movement_log` CHANGE `GatewayId` `GatewayId` int not null default 0 AFTER RegionID

//主键

   alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);//增加一个新列

   alter table t2 add d timestamp;
alter table infos add ex tinyint not null default '0';//删除列

   alter table t2 drop column c;//重命名列

   alter table t1 change a b integer;
//改变列的类型

   alter table t1 change b b bigint not null;
alter table infos change list list tinyint not null default '0';
//重命名表

   alter table t1 rename t2;
   mysql> alter table tablename change depno depno int(5) not null;
加索引
mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]);
mysql> alter table tablename add index emp_name (name);加主关键字的索引

mysql> alter table tablename add primary key(id);加唯一限制条件的索引

mysql> alter table tablename add unique emp_name2(cardnumber);删除某个索引

   mysql>alter table tablename drop index emp_name;修改表:

增加字段:

   mysql> ALTER TABLE table_name ADD field_name field_type;修改原字段名称及类型:

   mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;删除字段:

   mysql> ALTER TABLE table_name DROP field_name;

在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。

   例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示。

SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3

   此查询结果应该为1000行,每行包含3个相等的值。在无索引的情况下处理此查询,必须寻找3个表所有的组合,以便得出与WHERE子句相配的那些行。而可能的组合数目为1000×1000×1000(十亿),显然查询将会非常慢。

   如果对每个表进行索引,就能极大地加速查询进程。利用索引的查询处理如下。

(1)从表t1中选择第一行,查看此行所包含的数据。

(2)使用表t2上的索引,直接定位t2中与t1的值匹配的行。类似,利用表t3上的索引,直接定位t3中与来自t1的值匹配的行。

(3)扫描表t1的下一行并重复前面的过程,直到遍历t1中所有的行。

   在此情形下,仍然对表t1执行了一个完全扫描,但能够在表t2和t3上进行索引查找直接取出这些表中的行,比未用索引时要快一百万倍。

   利用索引,MySQL加速了WHERE子句满足条件行的搜索,而在多表连接查询时,在执行连接时加快了与其他表中的行匹配的速度。

2.  创建索引
在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。

1.ALTER TABLE
ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。



ALTER TABLE table_name ADD INDEX index_name (column_list)

ALTER TABLE table_name ADD UNIQUE (column_list)

ALTER TABLE table_name ADD PRIMARY KEY (column_list)



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

2.CREATE INDEX
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索引。

3.索引类型
在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为PRIMARY KEY或UNIQUE索引。对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的组合不重复。

PRIMARY KEY索引和UNIQUE索引非常类似。事实上,PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。

下面的SQL语句对students表在sid上添加PRIMARY KEY索引。



ALTER TABLE students ADD PRIMARY KEY (sid)

4.  删除索引
可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。



DROP INDEX index_name ON talbe_name

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY



其中,前两条语句是等价的,删除掉table_name中的索引index_name。

第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

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


5.查看索引

mysql> show index from tblname;

mysql> show keys from tblname;

  · Table

  表的名称。

  · Non_unique

  如果索引不能包括重复词,则为0。如果可以,则为1。

  · Key_name

  索引的名称。

  · Seq_in_index

  索引中的列序列号,从1开始。

  · Column_name

  列名称。

  · Collation

  列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。

  · Cardinality

  索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。

  · Sub_part

  如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。

  · Packed

  指示关键字如何被压缩。如果没有被压缩,则为NULL。

  · Null

  如果列含有NULL,则含有YES。如果没有,则该列含有NO。

  · Index_type

  用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

  · Comment
分享到:
评论

相关推荐

    mysql添加字段语句

    mysql添加字段语句

    MySQL数据表添加字段

    在MySQL数据库管理中,添加字段是一项常见的操作,用于在已有的数据表中增加新的列来扩展数据表的结构。这通常发生在数据需求发生变化或者需要记录更多相关信息时。本篇文章将详细探讨如何在MySQL中添加字段,以及...

    mysql批量增加字段.txt

    MySQL批量对表增加指定字段,会快速实现批量字段的添加。写了2个存储存储过程,执行即可。方便快速!

    Oracle_Mysql_Sqlserver字段类型转换参考

    Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_...

    mysql添加字段.docx

    在MySQL数据库管理系统中,添加字段是数据库设计过程中的常见操作,用于扩展已存在的表格结构以满足新的需求。这里,我们将详细探讨如何在MySQL中添加字段,以及与这一过程相关的各种概念和技术。 首先,我们来看...

    mysql自增字段重排 mysql删除表后自增字段从1开始.pdf

    在MySQL数据库中,自增字段(AUTO_INCREMENT)是一种常见的特性,用于在插入新记录时自动为该字段生成唯一的序列编号。这个字段通常用于主键,确保每个记录的唯一性。以下是对MySQL自增字段相关知识点的详细说明: ...

    mysql修改语句 mysql语句用法,添加、修改、删除字段

    mysql修改语句 mysql语句用法,添加、修改、删除字段mysql语句用法,添加、修改、删除字段mysql语句用法,添加、修改、删除字段mysql语句用法,添加、修改、删除字段mysql语句用法,添加、修改、删除字段mysql语句用法,...

    mysql中添加字段insert

    在MySQL数据库管理中,对表结构进行操作是常见的任务,包括添加、修改和删除字段,以及调整字段顺序。以下是对这些操作的详细说明。 1. **添加字段**: 添加字段意味着向已存在的表中插入新的列。有两种方式来实现...

    mysql数据库字段复制

    MySQL数据库字段复制是一个常见的需求,尤其在数据迁移、备份或者多环境同步的场景下。PHP作为流行的服务器端脚本语言,常被用来处理这类任务。本文将深入探讨如何使用PHP来实现MySQL数据库字段的高效复制。 首先,...

    mysql字段加密

    MySQL 字段加密 MySQL 字段加密是将数据库字段类型设置为 varbinary 类型,并将加密盐设置为全局变量,以实现对敏感数据的保护。本文将详细介绍 MySQL 字段加密的实现步骤和相关知识点。 数据库字段类型 在 MySQL...

    mysql只取字段的中文内容

    mysql获取字段中内容

    mysql 数据字段导出工具 增加了注释字段导出

    在别人基础上修改了一下。 感性原作者的奉献 一起贡献都归功与原作者

    sql在一个表中添加字段并添加备注的方法

    1、加字段: alter table 表名 ADD 字段名 类型; eg: alter table sys_cwzd ...添加新字段: alter table bulletin add citycode varchar(6) not null default 0; # 城市代码 1.创建数据库时设置编码 create databa

    mysql 获取字段中数字的函数

    自己写的一个获取字符串字段中数字的函数,已测试通过可用。

    mysql添加字段说明及用法

    在MySQL中,可以使用ALTER TABLE语句来添加字段。ALTER TABLE语句是一种用于修改已有表格的SQL语句,可以用于添加、删除、修改表格中的字段等操作。

    自动读取mysql数据库字段并自动生成java属性和set和get方法

    在给定的标题"自动读取mysql数据库字段并自动生成java属性和set和get方法"中,我们可以理解这是一个自动化过程,它减少了开发者手动编写Java代码的工作量。该过程通常包括以下几个步骤: 1. **连接数据库**:首先,...

    解决CodeSmith不能读取MySql数据库字段说明的问题

    本文将深入探讨如何解决在使用CodeSmith时遇到的无法读取MySql数据库字段说明的问题。CodeSmith是一款强大的C#代码生成工具,它允许开发者自定义模板来快速生成代码,从而减少手动编写重复性代码的工作量。然而,在...

    Mysql的longblob字段插入数据问题解决

    在使用mysql的过程中,有个问题就是mysql的优化,mysql中longblob字段在5.5版本中默认的为1M。 想改变这个问题,需要注意几点: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2054817 > ...

    MySQL自增字段为何报错.pdf

    MySQL自增字段报错是指在MySQL数据库中,自增字段出现重复值或无法再添加新记录的错误情况。本文将详细介绍MySQL自增字段报错的原因、解决方案和相关经验总结。 一、MySQL自增字段报错的原因 MySQL自增字段报错的...

Global site tag (gtag.js) - Google Analytics