将一个表中字段的值复制到另一个表的字段中,

本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方

具体方法如下

使用SSMS数据库管理工具修改数据

首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='css',如果要拿这条数据的话需要些的sql是 SELECT * FROM award WHERE nickname = 'css'

一:update 表2 set (要插入的列名)= select 表1.某一列 from 表1 left jion 表2 on 表1和表2的关联 where .....  

修改任意一条或者多条都可以

1:打开数据库,选择数据表,右键点击-》编辑所有行(如未配置,点击编辑前200行)。

图片 1

2、编辑需要修改的数据-》编辑完成后,右键点击空白处-》选择执行SQL即可编辑成功。

图片 2

一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果我在nickname上建立索引,那么mysql只需要扫描一行数据及为我们找到这条nickname='css'的数据,是不是感觉性能提升了好多咧....

二:update 表1 set 表1.列=表2.列 from 表2 where 表2.id=表1.id 

使用T-SQL脚本修改数据

mysql的索引分为单列索引(主键索引,唯索引,普通索引)和组合索引.

三:update _a set 列=_b.列 from 表1 _a join 表2 _b on _a.id=_b.id

修改单表中一行单列或者多列数据

语法:update 表名 set 列名1=值,列名2=值 where 条件;

示例一:update test1  set age='21' where id='1';

示例结果:

图片 3

单列索引:一个索引只包含一个列,一个表可以有多个单列索引.

修改单表中多行一列或多列数据

语法:update top(数量) 表名 set 列名1=值,列名2=值2 where 条件;

示例:

update test1 set age='23' where id in ('1','2');

update test1 set age='22' where id between '3' and '4';

update test1 set age='23' where id>='5' and id <='6';

update top(2) test1 set age='23' where id>='5';

update test1 set age='23' where test1.id in (select top(2) id from test1 order by id desc);

示例结果:

图片 4

图片 5

组合索引:一个组合索引包含两个或两个以上的列,

多表关联修改表中数据

语法:update 表1 set 表1.列1=值,表1.列2=值 from 表1 as a,表2 as b where a.列名=b.列名;

示例:update test1 set test1.name='李华',test1.sex='女' from test1 as a,test2 as b where a.classid=b.id;

示例结果:

 图片 6

图片 7

本文使用的案例的表

总结:修改数据表数据,灵活组合修改数据列,数据源,查询条件是关键。

 

CREATE TABLE `award` (
   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
   `aty_id` varchar(100) NOT NULL DEFAULT '' COMMENT '活动场景id',
   `nickname` varchar(12) NOT NULL DEFAULT '' COMMENT '用户昵称',
   `is_awarded` tinyint(1) NOT NULL DEFAULT 0 COMMENT '用户是否领奖',
   `award_time` int(11) NOT NULL DEFAULT 0 COMMENT '领奖时间',
   `account` varchar(12) NOT NULL DEFAULT '' COMMENT '帐号',
   `password` char(32) NOT NULL DEFAULT '' COMMENT '密码',
   `message` varchar(255) NOT NULL DEFAULT '' COMMENT '获奖信息',
   `created_time` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
   `updated_time` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='获奖信息表';

(一)索引的创建

1.单列索引

1-1)    普通索引,这个是最基本的索引,

其sql格式是 CREATE INDEX IndexName ON `TableName`(`字段名`(length)) 或者 ALTER TABLE TableName ADD INDEX IndexName(`字段名`(length))

第一种方式 :

  CREATE INDEX account_Index ON `award`(`account`);

第二种方式: 

ALTER TABLE award ADD INDEX account_Index(`account`)

 

 

 

如果是CHAR,VARCHAR,类型,length可以小于字段的实际长度,如果是BLOB和TEXT类型就必须指定长度,

1-2)    唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样.但是他允许有空值,

其sql格式是 CREATE UNIQUE INDEX IndexName ON `TableName`(`字段名`(length)); 或者 ALTER TABLE TableName ADD UNIQUE (column_list)  

CREATE UNIQUE INDEX account_UNIQUE_Index ON `award`(`account`);

1-3)    主键索引,不允许有空值,(在B+TREE中的InnoDB引擎中,主键索引起到了至关重要的地位)

主键索引建立的规则是 int优于varchar,一般在建表的时候创建,最好是与表的其他字段不相关的列或者是业务不相关的列.一般会设为 int 而且是 AUTO_INCREMENT自增类型的

本文由澳门新葡亰平台官网发布于数据库,转载请注明出处:将一个表中字段的值复制到另一个表的字段中,

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。