MySQL插入数据之INSERT

1.插入及系统安全

可针对每个表或者每个用户,利用MySQL的安全机制禁止使用INSERT语句。

INSERT一般不会产生输出。

2.利用INSERT插入完整的行

表test

FieldTypeNullKeyDefaultExtra
idint(11)NOPRINULLauto_increment
namechar(50)NO NULL 
citychar(50)YES NULL 
schoolchar(50)YES NULL 

方法一:指定表名和插入到新行中的值。

INSERT INTO test VALUES(null, "john","beijing","daxue");

此方法对每个列必须提供一个值,各个列必须以它们在表定义中出现的次序填充。第一列id赋值为null,这是因为每次插入一个新行时,该列由MySQL自动增量。你不想给出一个值(这是MySQL的工作),又不能省略此列(必须给出每个列),所以指定一个NULL值(它被MySQL忽略,MySQL在这里插入下一个可用的id值)

方法二:指定列名,更安全不过更繁琐

INSERT INTO test (name,city,school) VALUES("jone","beijing","daxue");

在插入行时,MySQL将用VALUES列表中的相应的值填入列表中的对应项。因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序。其优点是,即使表的结构改变,此INSERT语句仍然能正确工作。

使用此种方法还可以省略列,省略的列必须满足一下某个条件。

(1)该列定义为允许NULL值(无值或者空值)

(2)在表定义中给出默认值。这表示如果不给出值,将使用默认值。

*一般不要使用没有明确给出列的列表的INSERT语句。不管使用哪种INSERT语法,都必须给出VALUES的正确数目。如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值,如果不这样,将产生一条错误消息,相应的行插入不成功。

*提高整体性能-----INSERT操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理的SELECT语句的性能。如果数据检索是最重要的(通常是这样),则可以通过在INSERT和INTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级,如下所示:

INSERT LOW_PRIORITY  INTO

这也适用于UPDATE和DELETE语句。


2.插入多个行

可以使用多条INSERT语句,甚至一次提交它们,每条语句用一个分号结束,如下所示:

INSERT INTO test(name,city,school) values("john","beijing","tsinghua");INSERT INTO test(name,city,school) VALUES("tom","shanghai","fudan");

或者,只要每条INSERT语句中的列名(和次序)相同,可以如下所示:

INSERT INTO test(name,city,school)  VALUES("john","beijing","tsinghua"),("tom","shanghai”,"fusan");

其中单条INSERT语句有多组值,每组值用一对圆括号括起来,用逗号分隔。


*提高INSERT的性能----MySQL用单条INSERT语句处理多个插入比使用多条INSERT语句快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值