MySQL插入数据

来源:互联网 发布:奇米网络超碰在线视频 编辑:程序博客网 时间:2024/05/21 06:50

      最近在做一个项目,一直在折腾数据库,本来这块是我的弱项,项目做完了,小结一下。

 

    1. 插入单条数据,这个就比较简单了:

     INSERT INTO tableName VALUES(`col1`, `col2`,`col3`.... );

    这种比较简单,但是不安全,而且高度依赖表中列的次序,当表结构改变时,程序就很容易出问题。

    INSERT INTO tableName(col1, col2, col3...) VALUES(`col1`, `col2`,`col3`.... );

    这种就不会依赖表中列的次序,而起由tableName后边括号中的列的顺序决定的,即使最后表结构有变动,这条sql也能执行成功

 

    2. 插入多条数据,我在做这个项目的时候是一条一条的插入,大概是5000多条数据吧,用了大约25s左右,非常的慢,然后我改用一次插入多条数据,天啊,真的是见证奇迹的时刻,只用了不到1s就插入成功了,所以在插入大量数据的时候,千万不要忘了这种方法。

    INSERT INTO tableName(col1, col2, col3...) VALUE(`col11`, `col12`,`col13`.... ),(`col21`, `col22`,`col23`.... );

    还有一点,当时我在程序中使用字符串拼接的sql,所以要注意String的最大长度,String做多可以存放65534个字节(java),千万不要超了,否则会报错哦(这可是需要4G的内存才能存下的String,谁会用到啊 囧!~)。字符串的长度可以参考http://www.iteye.com/topic/43102 这篇文章。

 

    3. 插入检索数据,这个我还没有用到,今天在书中看到的,然后就好想拍大腿,这么强的方法我怎么才看到呢!~晚上努力的实践一下。

    INSERT INTO tableName(col1, col2, col3...) SELECT col21, col22, col23...FROM tableName2

    这条语句可以将tableName2中的所有表都导入到tableName中,这样在开发的时候就不用取出表在存入,方便了很多,select语句中是可以包含where字句过滤的。