MySql插入记录时判断】的更多相关文章

我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录. 这样的逻辑固然可以通过两条sql语句完成. SELECT COUNT(*) FROM xxx WHERE ID=xxx; if (x == 0) INSERT INTO xxx VALUES; else UPDATE xxx SET ; 但是这样操作在性能上有所损失, 代码结构感觉有点丑陋.其实Mysql提供了可以在一个SQL语句中完成上述逻辑的…
我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录. 这样的逻辑固然可以通过两条sql语句完成. SELECT COUNT(*) FROM xxx WHERE ID=xxx; if (x == 0) INSERT INTO xxx VALUES; else UPDATE xxx SET ; 但是这样操作在性能上有所损失, 代码结构感觉有点丑陋. 其实MySQL提供了可以在一个SQL语句中完成上述逻辑…
SqlServer中是这样: ) ,@title,@searchKeys,@serviceIntervalSecond,@sleepMillisecondPerSearch) ELSE UPDATE Setting SET Title=@title,SearchKeys=@searchKeys,ServiceIntervalSecond=@serviceIntervalSecond, SleepMillisecondPerSearch=@sleepMillisecondPerSearch MyS…
将字段设置成timestamp类型,同时默认值设置成 CURRENT_TIMESTAMP.…
MySQL 插入数据时,中文乱码问题的解决(转) 当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员工!'); 出现乱码时,可以使用语句 show variables like 'character%'; 来查看当前数据库的相关编码集. 从上图中可以看到 MySQL 有六处使用了字符集,分别为:client .co…
MySQL 插入数据时,中文乱码问题的解决  原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员工!'); 出现乱码时,可以使用语句 show variables like 'charac…
Mysql插入数据时提示:ERROR 1366 (HY000): Incorrect string value: ‘\xE5\x8F\xB0\xE5\xBC\x8F…’ fo 分析如下: 首先通过语句查看: show create table  tdb_goods_cates ;  发现如下所示:12   然后通过语句修改数据表编码:alter table tdb_goods_cates  default character set utf8;  但是修改后仍然出现错误. 我们再次查看编码:sh…
有时候插入记录之后需要使用到插入记录的主键,通常是再查询一次来获取主键,但是MyBatis插入记录时可以设置成返回主键id,简化操作,方法大致有两种. 对应实体类: public class User { private int userId; private String userName; private int userAge; } 对应DAO类: public interface UserMapper { int save(User user); } 方法一.使用useGenerated…
转: mysql insert时几个操作DELAYED .IGNORE.ON DUPLICATE KEY UPDATE的区别 博客分类: mysql基础应用   mysql insert时几个操作DELAYED .IGNORE.ON DUPLICATE KEY UPDATE的区别 zccst整理 一.DELAYED的使用 使用延迟插入操作 DELAYED调节符应用于INSERT和REPLACE语句.当DELAYED插入操作到达的时候,服务器把数据行放入一个队列中,并立即给客户端返回一个状态信息,…
近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱码,一般有两种情况: 数据库本身设置 连接数据库时,jdbc的编码设置 对于第一种情况,可以查看自身的mysql设置: show variables like '%character%' 我的问题是第二种情况,需要在mybatis的配置文件中设置, 之前我的连接字段是: <!-- 1. 数据源 :…
在终端,mysql -u root -p 登录: show variables like 'character%'; 来查看当前数据库的相关编码集. client 为客户端使用的字符集. connection 为连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字符集设置. database 为数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置. results 为数据库给客户端返回时使用的字符集设定,如果没有指明…
1.错误描述 com.mysql.jdbc.exception:jdbc4.MySQLSyntaxErrorException:Unknown column 'man' in 'field list' 2.错误原因 数据库表中的字段:sno     sname    sage     ssex 插入数据时:          sno     sname    sage     man          本来是想插入ssex这个字段的值为"man",结果将man弄成了ssex字段名 3.…
我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录. 这样的逻辑固然可以通过两条sql语句完成. SELECT COUNT(*) FROM xxx WHERE ID=xxx; if (x == 0) INSERT INTO xxx VALUES; else UPDATE xxx SET ; 但是这样操作在性能上有所损失, 代码结构感觉有点丑陋. 官方文档如下: MySQL provides many…
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员工!'); 出现乱码时,可以使用语句 show variables like 'character%'; 来查看当前数据库的相关编码集. 从上图中可以看到 MySQL 有六处使用了字符集,分别为:client .connection.database.results…
最近想玩一下.net dapper,然后在nuget包中搜索看到了 Dapper.SimpleCRUD ,然后我等好奇心重的小骚年,内心又开始跃跃欲试. 使用sqlserver数据库时没有遇到问题,既然sqlserver没有什么问题,那mysql会怎样呢? 好奇害死猫,那就试了一下吧,oh shit!对方不想和你说话,并抛了一个异常给你. 异常的大概意思是说:哥们你的sql语句有语法错误 异常如下: 幸亏这个异常中指出了错误的地方,sql语句中的表名与字段名竟然有中括号,这个东西在sqlserv…
1.第一种:INSERT [INTO] tbl_name[ (col_name, ... ) ]  {VALUES | VALUE}({expr |default}, ... ), (...), ... 如果为自动编号的字段赋值的话,可以采用NULL或者DEFAULT让其采用默认的递增的形式来实现. INSERT users VALUES(DEFAULT, 'Tom', '123', 25, 1); INSERT users VALUES(NULL, 'John', '456', 3*7-5,…
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员工!'); 出现乱码时,可以使用语句 show variables like 'character%'; 来查看当前数据库的相关编码集. 从上图中可以看到 MySQL 有六处使用了字符集,分别为:client .connection.database.results…
1 环境: MySQL Server 6.0  命令行工具 2 问题 :  插入中文字符数据出现如下错误: ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern ame' at row 1 3 当时环境: mysql> insert into user(id , username , birthday, sex, address) values(' , ' 李四 -' , 'male' ,…
一.insert insert tb_name [(col_name,......)] {values | value} ({expr | default } ....... ) , ( ... ) , ... 可以加入表达式.默认值.空值.函数 并且可以一次插入多条记录 二.子查询 insert tb_name set col_name={expr | default },...... 三.将查询到的结果插入数据表中 insert tb_name [(col_name,...)] select…
使用命令行方式登陆到MySQL服务器, 建立一个数据库,数据库编码设为UTF-8.此时,如果直接在命令行窗口使用insert语句插入中文,就遇到类似 ERROR 1406 (22001): Data too long for column 'name' at row 1 错误.乍一看,是字段长度引起的问题,但是实际是字符编码的问题.可是尝试以下解决方法:      1.在Linux中,使用终端方式登陆MySQL服务器,运行以下命令: set names utf8;            该命令将…
这个问题,原因是UTF-8编码有可能是两个.三个.四个字节.Emoji表情或者某些特殊字符是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去. 我的解决方案是这样的 1.在mysql的安装目录下找到my.ini,作如下修改: [mysqld] character-set-server=utf8mb4 [mysql] default-character-set=utf8mb4 修改后重启Mysql 2. 将已经建好的表也转换成utf8mb4 命令:alter table TABL…
1. 利用insert ignore into语句去重 mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'J', 'T'); Query OK, row affected (0.00 sec) mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'J', 'T'); Query OK, rows…
SELECT\n" + " '',\n" + " '{0}',\n" + " '{1}',\n" + " '{2}'\n" + "FROM\n" + " DUAL\n" + "WHERE\n" + " NOT EXISTS (\n" + " SELECT\n" + " 字段0\n" + "…
Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 第…
1.在连接数据库的时候请注意, 最使用连接连接数据库的时候,必须在后面追加上编码的设置:useUnicode=true&characterEncoding=UTF-8,如下图所示. 参考连接:https://blog.csdn.net/qq_27760433/article/details/76121783…
插入记录时,影响插入速度的主要是索引.唯一性校验.一次插入记录条数等.根据这些情况,可以分别进行优化,本节将介绍优化插入记录速度的几种方法. 一.对于MyISAM引擎表常见的优化方法如下:     1.禁用索引.对于非空表插入记录时,MySQL会根据表的索引对插入记录建立索引.如果插入大量数据,建立索引会降低插入记录的速度.为了解决这种情况可以在插入记录之前禁用索引,数据插入完毕后在开启索引.禁用索引的语句为: ALTER TABLE tb_name DISABLE KEYS;  重新开启索引的…
项目中遇到存储的时间戳与真实时间相差14小时的现象,以下为解决步骤. 问题 CREATE TABLE `incident` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `recovery_time` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_IN…
错误提示为:你插入的记录与数据表中原有记录的主键重复了(Duplicate).所以插入失败 mysql主键设置成auto_increment时,进行并发性能测试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY'解决方法:在my.cnf的[mysqld]片段中加入设置innodb_autoinc_lock_mode=0同一时候注意调大jdbc的活跃链接数,如设置 jdbc.maxActive=300,由于设置innodb_autoinc_lock_mode=…
今天遇到一个问题,用Python往MySQL插入数据时,若数据中包含中文会报类似下面的错误: ERROR 1366: Incorrect string value: '\xE4\xB8\xAD\xE5\x9B\xBD' for column 'tname' at row 1 但若之间在MySQL命令行中插入,就不会报错. 后来找到解决办法: 步骤1: 在 MySQL 的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以解决乱码问题.在这个配置文件中 [mysql] 与客户端配置相…