首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次批量更新整型类型的列 → 探究 UPDATE使用细节

还真支持,如下所示   楼主平时使用 UPDATE 的时候,基本没结合 ORDER BY ,也没尝试过结合 LIMIT   这次尝试让楼主对 UPDATE 产生了陌生的感觉,它的完整语法应该是怎样的...和 MERGE ,所以最常用的 InnoDB 是不支持的   使用场景很少,混个眼熟就好   IGNORE UPDATE 的修饰符之一,用来声明 SQL 执行时发生错误的处理方式   如果没有使用 IGNORE... , UPDATE 执行时如果发生错误会中止,如下所示 9002 更新成 9003 的时候,主键冲突,整个 UPDATE 中止, 9000 更新成的 9001 会回滚, 9003 ~ 9005 还未执行更新...  ORDER BY   如果大家对 UDPATE 的执行流程了解的话,那就更好理解了 UPDATE 其实有两个阶段: 查阶段 、 更新阶段   一行一行的处理,查到一行满足 WHERE 子句,就更新一行... NULL ,会直接报错,更新失败     2、非严格 SQL 模式下,对 NOT NULL 的字段设置 NULL ,会将字段值设置字段类型对应的默认值   关于字段类型的默认值,可查看:Data Type

91710
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)

A 的app_id, 在A用户原有的app_id 后,用CONCAT,拼接上查询出来的app_id_strs,并在两者之间用(,)逗号连接 扩展: 二、mysql中update和select结合使用 在遇到需要...update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样,在mysql中如下: update A inner join(select...和 select 结合使用进行数据更新,案例 现有两张表 inspect_danger 和 company 表,根据 company 表的 ID 和 inspect_danger 表的COMPANY_ID...七、mysql 往表中某个字段的字符串后追加字符串 update 表名 set 字段名=CONCAT(字段名,”需添加的值”)WHERE 条件; 例如: update np_order set...where 后指定条件 八、mysql 把select结果update更新到表中,从查询结果中更新数据 逻辑:两张表连接获取finishin的重量插入到sale.

6.5K30

MySQL 使用规范

一般操作 高峰期不进行DDL操作,不进行大表全表扫描; 进行更新或删除时,一万以下条数据最好使用 分批更新(计数 如 i 累加到500)(存储方式) 设计库 原则:不同业务按库划分 使用:innodb.../尽可能小的字段/命名规范 字段类型 Tinyint[UNSIGNED] - 无负整数 (从 0 到 255 的整型数据。...DECIIMAL - 精确数值,不是Float/Double int(3) - 后面的数字无意义 索引 index_表名_字段 联合索引字段建议超过5个 单表索引数量5个以内 使用自增id作为主键...编写sql update/delete 不使用limit,必须添加where 使用prepared、statement,提成性能,避免SQL注入 禁止使用 % 模糊查询(全表) 表中记录数 count...(*) 用 join 链接替代 嵌套查询 尽量不使用 hints 查询拒绝 select * ,避免对索引字段使用 函数或计算操作 where new_id = "123456" (where upper

63720

数据库字段及索引设计规范

限制每张表上的索引数量,建议单张表索引超过 5 个 索引并不是越多越好!索引可以提高效率,同样可以降低效率。 索引可以增加查询效率,但同样也会降低插入和更新的效率,甚至有些情况下会降低查询效率。...Innodb 是按照主键索引的顺序来组织表的 不要使用更新频繁的列作为主键,不适用多列主键(相当于联合索引) 不要使用 UUID,MD5,HASH,字符串列作为主键(无法保证数据的顺序增长) 主键建议使用自增...常见索引列建议 出现在 SELECT、UPDATE、DELETE 语句的 WHERE 从句中的列 包含在 ORDER BY、GROUP BY、DISTINCT 中的字段 并不要将符合 1 和 2 中的字段的列都建立一个索引...对于频繁的查询优先考虑使用覆盖索引 覆盖索引:就是包含了所有查询字段 (where,select,ordery by,group by 包含的字段) 的索引 覆盖索引的好处: 避免 Innodb 表进行索引的二次查询...索引 SET 规范 尽量避免使用外键约束 建议使用外键约束(foreign key),但一定要在表与表之间的关联键上建立索引 外键可用于保证数据的参照完整性,但建议在业务端实现 外键会影响父表和子表的写操作从而降低性能

1.1K20

MySQL设计表规范

UTF8 所有表和字段都需要添加注释 禁止在数据库中存储图片,文件等大的二进制数据 【通常存储于文件服务器,数据库只存储文件地址信息】 优先选择符合存储需要的最小的数据类型【能用整型就不要用字符串...】【ip字符串转换成整型】 避免使用text,blob类型,会大大降低SQL执行效率 避免使用ENUM类型,无法使用索引,查询效率低 尽可能把所有列定义为 NOT NULL【实在不行赋予默认值...2.所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 关于MySQL保留关键字 WHERE,INSERT,UPDATE,SET,SELECT https...MyISAM只支持表级锁,适用插入频繁,查询频繁的场景。 关于存储引擎 2....Innodb 行级锁,支持更高的并发 支持事务(ACID) 具有缓存功能,可缓存索引和数据,提高查询效率 支持在线热备份 【应用场景】 需要支持事务的业务(例如转账,付款) 高并发 数据读写及更新都比较频繁的场景

1.5K10

MySQL常用技巧

将IP存成UNSIGNED INT,SQL中用INET_ATON() 将IP地址转换成整型使用INET_NTOA()将其还原 使用固定长度的字段可以节省空间 字段长度尽可能短,以便优化速度。...但是要保证每个字段有足够的空间以满足需求 字符串字段:因为mysql默认区分大小写,如果字符串字段作为主键的话,需要将其改成bin类型,如 CREATE TABLE T( A VARCHAR...比如我们经常查询各个机型的日活,就可以将机型映射成整数存在DB中,以加快查询速度 查询 想看自己写的查询语句是否充分利用了数据库的索引,可以使用EXPLAIN,用法EXPLAIN querySQL 使用查询缓存...,不要使用 NOW() 、 RAND() 等 如果只需要一条数据的话,使用LIMIT 1 对搜索的字段建立索引 JOIN时,对连接字段使用相同的数据类型,并对字段建立索引 不要使用ORDER BY RAND...(),因为查询前,该查询会对表中每一行记录都执行RAND() 查询时尽量指定查询字段,避免使用SELECT *,以提高IO速度 使用 含有大量数据的DELETE或者INSERT时,使用分片,如DELETE

36210

一千行 MySQL 详细学习笔记(值得学习与收藏)

UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新条件] 字符集编码 -- MySQL、数据库、表、字段均可设置编码 -- 数据编码与客户端编码不需一致 SHOW VARIABLES...可以指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...如果指定了 on update 或 on delete:在删除或更新时,有如下几个操作可以选择: 1. cascade,级联操作。主表数据被更新(主键值更新),从表也被更新(外键值更新)。...- 不需要给子查询取别名。 - where子查询内的表,不能直接用以更新。...,会触发 before insert, before update, after update; 如果有重复记录但是没有发生更新,则触发 before insert, before update

2.8K20

1000行 MySQL 学习笔记,不怕你不会,就怕你不学!

UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新条件] 字符集编码 -- MySQL、数据库、表、字段均可设置编码 -- 数据编码与客户端编码不需一致 SHOW VARIABLES...可以指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...如果指定了 on update 或 on delete:在删除或更新时,有如下几个操作可以选择: 1. cascade,级联操作。主表数据被更新(主键值更新),从表也被更新(外键值更新)。...- 不需要给子查询取别名。 - where子查询内的表,不能直接用以更新。...,会触发 before insert, before update, after update; 如果有重复记录但是没有发生更新,则触发 before insert, before update

1.7K40

【收藏】一千行 MySQL 学习笔记

UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新条件] 字符集编码 -- MySQL、数据库、表、字段均可设置编码 -- 数据编码与客户端编码不需一致 SHOW VARIABLES...可以指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...如果指定了 on update 或 on delete:在删除或更新时,有如下几个操作可以选择: 1. cascade,级联操作。主表数据被更新(主键值更新),从表也被更新(外键值更新)。...- 不需要给子查询取别名。 - where子查询内的表,不能直接用以更新。...,会触发 before insert, before update, after update; 如果有重复记录但是没有发生更新,则触发 before insert, before update

1.9K20

1000行 MySQL 学习笔记,不怕你不会,就怕你不学!

UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新条件] 字符集编码 -- MySQL、数据库、表、字段均可设置编码 -- 数据编码与客户端编码不需一致 SHOW VARIABLES...可以指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...如果指定了 on update 或 on delete:在删除或更新时,有如下几个操作可以选择: 1. cascade,级联操作。主表数据被更新(主键值更新),从表也被更新(外键值更新)。...- 不需要给子查询取别名。 - where子查询内的表,不能直接用以更新。...,会触发 before insert, before update, after update; 如果有重复记录但是没有发生更新,则触发 before insert, before update

1.5K10

干货!超过500行的Mysql学习笔记

可以指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。 如果指定了 on update 或 on delete:在删除或更新时,有如下几个操作可以选择: 1. cascade,级联操作。...having 字段必须是查询出来的,where 字段必须是数据表存在的。 where 不可以使用字段的别名,having 可以。因为执行WHERE代码时,可能尚未确定列值。...- 不需要给子查询取别名。 - where子查询内的表,不能直接用以更新。...在登录的情况下 mysql -u用户名 -p密码 库名 /* 视图 */ ------------------ 什么是视图: 视图是一个虚拟表,其内容由查询定义。...insert, before update, after update; 如果有重复记录但是没有发生更新,则触发 before insert, before update 3.

1.2K60
领券