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);