MySQL插入语句解析
2016-08-02 23:46
344 查看
1.INSERT INTO
最常用简单的插入语句,可以有以下两种用法
1> INSERT INTO tb_user(id, name, age) VALUES (100022, 'Tom', 25); // 只给指定的列赋值
2> INSERT INTO tb_user VALUES (100022, 'Tom', 25); // 必须 给所有列赋值
注: INTO关键字可以省略
2. INSERT INTO ... SELECT
可以将查询结果插入表中
insert into t2same(name,age) select name, age from t2;
insert into t2same select id, name, age from t2;
注:1> 查询不能包含一个ORDER BY子句
2> INSERT语句的目的表不能出现在SELECT查询部分的FROM子句
3. INSERT IGNORE INTO
当插入数据时,如出现错误时(如重复数据)将不返回错误,只以警告形式返回。通常这也是我们使用IGNORE的目的,避免插入重复数据。
但是当有SQL语句语法错误时也不返回错误,所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。
重复数据的判断依据:主键列相同或者唯一索引列相同。
例:
4. REPLACE INTO
表示插入替换数据,目的表中有Primary Key,或者UNIQUE索引,如果表中已经存在数据,则用新数据替换,如果没有数据则效果同INSERT INTO.
在表中已存在和要插入相同数据时,REPLACE INTO 和 INSERT IGNORE INTO 二者作用正好相反。
5. ON DUPLICATE KEY UPDATE
当PRIMARY或者UNIQUE重复时,则执行UPDATE语句,在原有记录基础上,更新指定字段内容,其它字段内容保留。如UPDATE后为无用语句,如id=id,则同3功能相同。
例如,为了实现name重复的数据插入不报错,可使用一下语句:
INSERT INTO tb_user (name) VALUES ('Tom') ON DUPLICATE KEY UPDATE id = id
最常用简单的插入语句,可以有以下两种用法
1> INSERT INTO tb_user(id, name, age) VALUES (100022, 'Tom', 25); // 只给指定的列赋值
2> INSERT INTO tb_user VALUES (100022, 'Tom', 25); // 必须 给所有列赋值
注: INTO关键字可以省略
2. INSERT INTO ... SELECT
可以将查询结果插入表中
insert into t2same(name,age) select name, age from t2;
insert into t2same select id, name, age from t2;
注:1> 查询不能包含一个ORDER BY子句
2> INSERT语句的目的表不能出现在SELECT查询部分的FROM子句
3. INSERT IGNORE INTO
当插入数据时,如出现错误时(如重复数据)将不返回错误,只以警告形式返回。通常这也是我们使用IGNORE的目的,避免插入重复数据。
但是当有SQL语句语法错误时也不返回错误,所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。
重复数据的判断依据:主键列相同或者唯一索引列相同。
例:
CREATE TABLE tb_user ( id int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, id_no VARCHAR(20) NOT NULL UNIQUE, age int(3) ) INSERT INTO tb_user VALUES(1, 'Tom', 25); -- 下方两句既不会插入数据也不会报错 INSERT IGNORE INTO tb_user VALUES(1, 'Lucy', 18); INSERT IGNORE INTO tb_user VALUES(2, 'Tom', 18);
4. REPLACE INTO
表示插入替换数据,目的表中有Primary Key,或者UNIQUE索引,如果表中已经存在数据,则用新数据替换,如果没有数据则效果同INSERT INTO.
在表中已存在和要插入相同数据时,REPLACE INTO 和 INSERT IGNORE INTO 二者作用正好相反。
5. ON DUPLICATE KEY UPDATE
当PRIMARY或者UNIQUE重复时,则执行UPDATE语句,在原有记录基础上,更新指定字段内容,其它字段内容保留。如UPDATE后为无用语句,如id=id,则同3功能相同。
例如,为了实现name重复的数据插入不报错,可使用一下语句:
INSERT INTO tb_user (name) VALUES ('Tom') ON DUPLICATE KEY UPDATE id = id
相关文章推荐
- mysql 插入语句中,auto_increment的字段的写法
- MySQL插入多条记录和REPLACE语句
- MySQL插入语句insert性能优化
- 解析如何用SQL语句在指定字段前面插入新的字段
- MySQL 语句中有'号时用''代替能插入
- 解析mysql二进制日志处理事务与非事务性语句的区别
- MYSQL 插入语句
- 在linux下写的mysql无法插入,sql语句在复制中变'脏'了.
- 解析优化MySQL插入方法的五个妙招
- mysql中使用sql语句插入日期时间类型的写法
- php 获取mysql中插入的id 和 sql语句查看是否有重复
- mysql 存在则更新 不存在则插入 SQL语句
- mysql语句从一个表中查询出数据,再插入到另一张表中(表字段不一样)
- mysql 对取当前日期周一和周日语句的详细解析
- MySQL中用sql语句插入时期
- MySql 大数据量快速插入和语句优化
- MySQL 大数据量快速插入方法和语句优化分享
- MySql常用语句及无法插入中文问题解决
- 解析mysql二进制日志处理事务与非事务性语句的区别