MySQL中insert语句的使用与优化教程
MySQL表中使用INSERTINTOSQL语句来插入数据。
你可以通过mysql>命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。
语法
以下为向MySQL数据表插入数据通用的INSERTINTOSQL语法:
INSERTINTOtable_name(field1,field2,...fieldN) VALUES (value1,value2,...valueN);
如果数据是字符型,必须使用单引号或者双引号,如:"value"。
通过命令提示窗口插入数据
以下我们将使用SQLINSERTINTO语句向MySQL数据表runoob_tbl插入数据
实例
以下实例中我们将想runoob_tbl表插入三条数据:
root@host#mysql-uroot-ppassword; Enterpassword:******* mysql>useRUNOOB; Databasechanged mysql>INSERTINTOrunoob_tbl ->(runoob_title,runoob_author,submission_date) ->VALUES ->("LearnPHP","JohnPoul",NOW()); QueryOK,1rowaffected(0.01sec) mysql>INSERTINTOrunoob_tbl ->(runoob_title,runoob_author,submission_date) ->VALUES ->("LearnMySQL","AbdulS",NOW()); QueryOK,1rowaffected(0.01sec) mysql>INSERTINTOrunoob_tbl ->(runoob_title,runoob_author,submission_date) ->VALUES ->("JAVATutorial","Sanjay",'2007-05-06'); QueryOK,1rowaffected(0.01sec) mysql>
注意:使用箭头标记(->)不是SQL语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;)。
在以上实例中,我们并没有提供runoob_id的数据,因为该字段我们在创建表的时候已经设置它为AUTO_INCREMENT(自动增加)属性。所以,该字段会自动递增而不需要我们去设置。实例中NOW()是一个MySQL函数,该函数返回日期和时间。
使用PHP脚本插入数据
你可以使用PHP的mysql_query()函数来执行SQLINSERTINTO命令来插入数据。
该函数有两个参数,在执行成功时返回TRUE,否则返回FALSE。
语法
boolmysql_query(sql,connection);
参数:
sql:必需,规定要发送的SQL查询,注意、查询字符串不应以分号结束。
connection:可选,规定SQL连接标识符,如果未规定,则使用上一个打开的连接。
实例
以下实例中程序接收用户输入的三个字段数据,并插入数据表中:
<html> <head> <title>向MySQL数据库添加数据</title> </head> <body> <?php if(isset($_POST['add'])) { $dbhost='localhost:3036'; $dbuser='root'; $dbpass='rootpassword'; $conn=mysql_connect($dbhost,$dbuser,$dbpass); if(!$conn) { die('Couldnotconnect:'.mysql_error()); } if(!get_magic_quotes_gpc()) { $runoob_title=addslashes($_POST['runoob_title']); $runoob_author=addslashes($_POST['runoob_author']); } else { $runoob_title=$_POST['runoob_title']; $runoob_author=$_POST['runoob_author']; } $submission_date=$_POST['submission_date']; $sql="INSERTINTOrunoob_tbl". "(runoob_title,runoob_author,submission_date)". "VALUES". "('$runoob_title','$runoob_author','$submission_date')"; mysql_select_db('RUNOOB'); $retval=mysql_query($sql,$conn); if(!$retval) { die('Couldnotenterdata:'.mysql_error()); } echo"Entereddatasuccessfully\n"; mysql_close($conn); } else { ?> <formmethod="post"action="<?php$_PHP_SELF?>"> <tablewidth="600"border="0"cellspacing="1"cellpadding="2"> <tr> <tdwidth="250">TutorialTitle</td> <td> <inputname="runoob_title"type="text"id="runoob_title"> </td> </tr> <tr> <tdwidth="250">TutorialAuthor</td> <td> <inputname="runoob_author"type="text"id="runoob_author"> </td> </tr> <tr> <tdwidth="250">SubmissionDate[yyyy-mm-dd]</td> <td> <inputname="submission_date"type="text"id="submission_date"> </td> </tr> <tr> <tdwidth="250"></td> <td></td> </tr> <tr> <tdwidth="250"></td> <td> <inputname="add"type="submit"id="add"value="AddTutorial"> </td> </tr> </table> </form> <?php } ?> </body> </html>
在我们接收用户提交的数据时,为了数据的安全性我们需要使用get_magic_quotes_gpc()函数来判断特殊字符的转义是否已经开启。如果这个选项为off(未开启),返回0,那么我们就必须调用addslashes这个函数来为字符串增加转义。
义。
你也可以添加其他检查数据的方法,比如邮箱格式验证,电话号码验证,是否为整数验证等。
优化insert性能
mysql的insert语句语法
insertinto`table`(`field1`,`field2`)values('value1','value2');
提高insert性能的方法
1.一条sql语句插入多条数据
INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_0','content_0',0); INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_1','content_1',1);
可以写成
INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_0','content_0',0),('userid_1','content_1',1);