SQL的插入语句insert


插入数据分为以下几种方式:


1. 插入完整的行;

2. 插入行的一部分

3. 插入某些查询的结果

4. 从一个表复制到另一个表


1. 插入完整的行,有两种方式:

   INSERT  INTO  Customers  VALUES ();                                   // 缺点:高度依赖表中列的定义次序,不能保证各列在下一次表结构变动后保持完全相同的次序。

   INSERT  INTO  Customers  ( 列名组 )  VALUES (  列值  );    // 缺点: 比较繁琐,但是更加安全,优点是 即使 表的结构改变,这条语句仍然能正确工作。


2. 插入行的一部分

   即 1 中的第二种方式,但要注意的是 省略的列是否允许为NULL值,在表中定义中给出的默认值等完整性约束条件。


3. 插入某些查询的结果

   INSERT  SELECT,是由一条INSERT语句和一条SELECT语句组成的,将SELECT语句的结果插入表中。

   INSERT通常只插入一行,要插入多行,必须执行多个INSERT语句,INSERT  SELECT是个例外,它可以用一条INSERT语句插入多行,不管SELECT语句返回多少行,都将被INSERT插入,其中的SELECT语句可以包含WHERE子句,过滤插入的数据。

   例如:想把另一表中的顾客列合并到Customers表中,不需要每次读取一行再将它用于INSERT插入,

   INSERT  INTO  Customers(

         列名组合

     )

    SELECT  列名组合   FROM  CustNew;   这里注意  不要从CustNew表中取出主键值,因为取出后的主键值会与Customer表的主键值重复,从而后续的INSERT 操作会失败,其中并且要保证 两个表的 列名组合中的各列的相对位置是否对应。


4. 从一个表复制到另一个表

   从一个表复制到另一个表其实可以使用上面的那种方法,但是上面的表需要首先建立一个表,而使用SELECT  INTO语句直接建立新表。

   可以使用SELECT  INTO语句会将数据复制到一个新表,与INSERT  SELECT的差别是 前者是导入数据,而后者是导出数据。    

  SELECT  *   INTO  CustCopy   FROM   Customers;  //  创建一个名为 CustCopy的新表,并把Customers表中的整体内容复制到新表,因为是 SELECT   *  ,如果想只复制部分的列,可以明确给出列名,而不是使用 *  通配符

  但是 MySql、MariaDBm、SQLite的格式有所变化,如下:

    CREATE   TABLE   CustCopy   AS   SELECT  *   FROM  Customers;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Penguinbupt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值