MySQL 插入数据

MySQL 表中使用 INSERT INTO 语句来插入数据。

你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。

语法

以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

									INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
								

参数说明:

  • table_name 是你要插入数据的表的名称。
  • column1 , column2 , column3 , ... 是表中的列名。
  • value1 , value2 , value3 , ... 是要插入的具体数值。

如果数据是字符型,必须使用单引号 ' 或者双引号 " ,如: 'value1', "value1"。

一个简单的实例,插入了一行数据到名为 users 的表中:

		INSERT INTO users (username, email, birthdate, is_active)
VALUES ('test', '[email protected]', '1990-01-01', true);
	
  • username : 用户名,字符串类型。
  • email : 邮箱地址,字符串类型。
  • birthdate : 用户生日, 日期类型。
  • is_active : 是否已激活,布尔类型。

如果你要插入所有列的数据,可以省略列名:

	INSERT INTO users
VALUES (NULL,'test', '[email protected]', '1990-01-01', true);

这里, NULL 是用于自增长列的占位符,表示系统将为 id 列生成一个唯一的值。

如果你要插入多行数据,可以在 VALUES 子句中指定多组数值:

	INSERT INTO users (username, email, birthdate, is_active)
VALUES
    ('test1', '[email protected]', '1985-07-10', true),
    ('test2', '[email protected]', '1988-11-25', false),
    ('test3', '[email protected]', '1993-05-03', true);

以上代码将在 users 表中插入三行数据。


通过命令提示窗口插入数据

以下我们将使用 INSERT INTO 语句向 MySQL 数据表 yssmx_tbl 插入数据

实例

以下实例中我们将向 yssmx_tbl 表插入三条数据:

实例

root@host# mysql - u root - p password;
Enter password: *******
mysql > USE yssmx;
DATABASE changed
mysql > INSERT INTO yssmx_tbl
    -> ( yssmx_title , yssmx_author , submission_date )
    -> VALUES
    -> ( "学习 PHP" , "云搜索MX教程" , NOW ( ) ) ;
Query OK , 1 ROWS affected , 1 warnings ( 0.01 sec )
mysql > INSERT INTO yssmx_tbl
    -> ( yssmx_title , yssmx_author , submission_date )
    -> VALUES
    -> ( "学习 MySQL" , "云搜索MX教程" , NOW ( ) ) ;
Query OK , 1 ROWS affected , 1 warnings ( 0.01 sec )
mysql > INSERT INTO yssmx_tbl
    -> ( yssmx_title , yssmx_author , submission_date )
    -> VALUES
    -> ( "JAVA 教程" , "yssmx.com" , '2016-05-06' ) ;
Query OK , 1 ROWS affected ( 0.00 sec )
mysql >

注意: 使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条 SQL 语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;

在以上实例中,我们并没有提供 yssmx_id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT (自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。实例中 NOW() 是一个 MySQL 函数,该函数返回日期和时间。

接下来我们可以通过以下语句查看数据表数据:

读取数据表:

select * from yssmx_tbl ;

输出结果:


使用 PHP 脚本插入数据

你可以使用 PHP 的 mysqli_query() 函数来执行 INSERT INTO 命令来插入数据。

该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

语法

	mysqli_query(connection,query,resultmode);
参数 描述
connection 必需。规定要使用的 MySQL 连接。
query 必需,规定查询字符串。
resultmode

可选。一个常量。可以是下列值中的任意一个:

  • MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
  • MYSQLI_STORE_RESULT(默认)

实例

以下实例中程序接收用户输入的三个字段数据,并插入数据表中:

添加数据

<?php $dbhost = ' localhost ' ; // mysql服务器主机地址 $dbuser = ' root ' ; // mysql用户名 $dbpass = ' 123456 ' ; // mysql用户名密码 $conn = mysqli_connect ( $dbhost , $dbuser , $dbpass ) ; if ( ! $conn ) { die ( ' 连接失败: ' . mysqli_error ( $conn ) ) ; } echo ' 连接成功<br /> ' ; // 设置编码,防止中文乱码 mysqli_query ( $conn , " set names utf8 " ) ; $yssmx_title = ' 学习 Python ' ; $yssmx_author = ' yssmx.com ' ; $submission_date = ' 2016-03-06 ' ; $sql = " INSERT INTO yssmx_tbl " . " (yssmx_title,yssmx_author, submission_date) " . " VALUES " . " (' $yssmx_title ',' $yssmx_author ',' $submission_date ') " ; mysqli_select_db ( $conn , ' yssmx ' ) ; $retval = mysqli_query ( $conn , $sql ) ; if ( ! $retval ) { die ( ' 无法插入数据: ' . mysqli_error ( $conn ) ) ; } echo " 数据插入成功 \n " ; mysqli_close ( $conn ) ; ?>

对于含有中文的数据插入,需要添加 mysqli_query($conn , "set names utf8"); 语句。

接下来我们可以通过以下语句查看数据表数据:

读取数据表:

select * from yssmx_tbl ;

输出结果: