使用INSERT语句插入新数据

语法:INSERT [INTO] tbl_name [(col_name,...)] VALUES (pression,...),…
      INSERT [INTO] tbl_name SET col_name=expression, ...

让我们开始利用 INSERT 语句来增加记录,这是一个 SQL 语句,需要为它指定希望插入数据行的表或将值按行放入的表。INSERT 语句具有几种形式:

可指定所有列的值:

例如:

shell> mysql –u root –p
mysql> use mytest;
mysql> insert into worker values(“tom”,”tom@yahoo.com”);

“INTO”一词自 MySQL 3.22.5 以来是可选的。(这一点对其他形式的 INSERT 语句也成立。)VALUES 表必须包含表中每列的值,并且按表中列的存放次序给出。(一般,这就是创建表时列的定义次序。如果不能肯定的话,可使用 DESCRIBE tbl_name 来查看这个次序。)

使用多个值表,可以一次提供多行数据。

Mysql>insert into worker values(‘tom’,’tom@yahoo.com’),(‘paul’,’paul@yahoo.com’);

有多个值表的INSERT ... VALUES的形式在MySQL 3.22.5或以后版本中支持。

可以给出要赋值的那个列,然后再列出值。这对于希望建立只有几个列需要初始设置的记录是很有用的。

例如:

mysql>insert into worker (name) values (‘tom’);

自 MySQL 3.22.5 以来,这种形式的 INSERT 也允许多个值表:

mysql>insert into worker (name) values (‘tom’), (‘paul’);

在列的列表中未给出名称的列都将赋予缺省值。

自 MySQL 3.22 .10 以来,可以 col_name = value 的形式给出列和值。

例如:

mysql>insert into worker set name=’tom’;

在 SET 子句中未命名的行都赋予一个缺省值。

使用这种形式的 INSERT 语句不能插入多行。

一个expression可以引用在一个值表先前设置的任何列。例如,你能这样:

mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);

但不能这样:

mysql> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);

使用INSERT…SELECT语句插入从其他表选择的行

当我们在上一节学习创建表时,知道可以使用select从其它表来直接创建表,甚至可以同时复制数据记录。如果你已经拥有了一个表,你同样可以从select语句的配合中获益。

从其它表中录入数据,例如:

mysql>insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;

你也可以略去目的表的列列表,如果你每一列都有数据录入。

mysql>insert into tbl_name1 select col3,col4 from tbl_name2;

INSERT INTO ... SELECT语句满足下列条件:

查询不能包含一个ORDER BY子句。

INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。(问题是SELECT将可能发现在同一个运行期间内先前被插入的记录。当使用子选择子句时,情况能很容易混淆)

使用replace、replace…select语句插入

REPLACE功能与INSERT完全一样,除了如果在表中的一个老记录具有在一个唯一索引上的新记录有相同的值,在新记录被插入之前,老记录被删除。对于这种情况,insert语句的表现是产生一个错误。

REPLACE语句也可以褐SELECT相配合,所以上两小节的内容完全适合REPALCE.。

应该注意的是,由于REPLACE语句可能改变原有的记录,因此使用时要小心。

MySQL insert插入的更多相关文章

  1. mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

    [CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问 ...

  2. MySQL INSERT插入条件判断:如果不存在则插入

    摘要: 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入.如果使用一条INSERT语句实现呢? 普通的 INSERT INTO 插入: INSERT INTO card(ca ...

  3. mysql insert插入新形式,再也不需要拼接多重insert啦

    注意一下,不能省略表中的任何字段.包括自增id.而且字段的顺序必须和插入表一致 原理是“表插表” INSERT INTO prod_attr select A.* from ( SELECT AS p ...

  4. mysql insert插入的3种方法

    测试表student的字段 1.插入一条数据 INSERT INTO student(sid,sname,sage,ssex) VALUES(1,"wangdali",18,0); ...

  5. mysql 数据库插入语句之insert into,replace into ,insert ignore

    近期才发现mysql的插入语句竟然有如此多的使用方法,这里拿来分享一下. ①关于insert into : insert into table_name values(); insert into t ...

  6. MySQL使用INSERT插入多条记录

    MySQL使用INSERT插入多条记录,应该如何操作呢?下面就为您详细介绍MySQL使用INSERT插入多条记录的实现方法,供您参考. 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语 ...

  7. MySQL之插入数据(添加数据)-INSERT

    基本语法: INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句. 1.INSERT...VLAUES语句 INSERT VLAUES的语法格式如下 ...

  8. MySQL update语句和insert插入语句写法完全不一样啊,不要搞混

    1.mysql update 语句: update user set name = 'xiaoming',age = 18 where uid = 3000; 更新记录时update操作也不需要写ta ...

  9. mysql 数据插入insert

    mysql> select * from user; +------+----------+-----------+ | id | name | address | +------+------ ...

随机推荐

  1. 在.h和.cpp中包含头文件的区别

    1.在.h中包含头文件,是为了声明一系列这个头文件的变量等,可能会产生重复包含的问题: 2.在.cpp中包含头文件只是为了实现这个头文件或者使用其中的方法,不会有重复包含的问题,所以尽量在源文件中包含 ...

  2. IEnumerable的一些基本方法

    在说明用法之后,先要弄点数据. class Product { public int ID { get; set; } public string Name { get; set; } public ...

  3. Struts2 hibernate spring 概念总结

    Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

  4. 【P2405】方格取数问题加强版(费用流)

    考虑如何建图.还是老样子先拆点,然后把每两个点之间连接两条边,一条流量为1,费用为-点权,处理是否走这个点.一条流量无限,没有费用,因为哪怕一个点选过了,它的地方还是可以重复走过去的. 然后把经由一个 ...

  5. ML 神经网络 NeuralNetworks

    神经网络 Neural Networks 1 为什么要用神经网络? 既然前面降了逻辑回归,为什么还需要神经网络呢?前面我们制定在非线性分类问题中,也可以使用逻辑回归进行分类,不过我们的特征变量就变成了 ...

  6. mysqldump 用法汇总

    mysql mysqldump 只导出表结构 不导出数据 复制代码代码如下: mysqldump --opt -d 数据库名 -u root -p > xxx.sql  备份数据库  复制代码代 ...

  7. Spring初学之注解方式配置bean

    直接看代码: UserController.java package spring.beans.annotation.controller; import org.springframework.be ...

  8. Spring初学之Spel初配

    Spel又时候可以方便我们为bean的属性赋值,如下配置文件就是常用的一些使用: <?xml version="1.0" encoding="UTF-8" ...

  9. poj 1061 青蛙的约会 扩展欧几里德

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K       Description 两 只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们 ...

  10. Python中的exec、eval的区别

    通过exec可以执行动态Python代码,类似Javascript的eval功能: 而Python中的eval函数可以计算Python表达式,并返回结果: (exec不返回结果,print(eval( ...