MySQL 插入数据(附带实例)
                           
天天向上
发布: 2025-02-18 00:15:09

原创
464 人浏览过

在 MySQL 中,插入数据通常使用 INSERT INTO 语句。通过该语句,你可以将数据插入到数据库表中。以下是几种常见的 插入数据 的方法及其实例。

1. 基本的 INSERT INTO 语法

基本语法

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • table_name:目标表的名称。
  • (column1, column2, column3, ...):插入数据的列名。
  • (value1, value2, value3, ...):对应列的值。

2. 简单的插入数据

实例:插入单条记录

假设你有一个 users 表,包含 user_id, username, emailpassword_hash 字段,以下是插入一条数据的 SQL 语句:

INSERT INTO users (username, email, password_hash)
VALUES ('john_doe', 'john@example.com', 'hashed_password');
  • 在这个例子中,user_id 字段没有插入,因为它是 AUTO_INCREMENT 类型,MySQL 会自动生成该字段的值。

3. 插入多条记录

实例:插入多条记录

你也可以一次性插入多条记录。以下是插入多条数据的例子:

INSERT INTO users (username, email, password_hash)
VALUES 
    ('alice_smith', 'alice@example.com', 'hashed_password_1'),
    ('bob_jones', 'bob@example.com', 'hashed_password_2'),
    ('carol_williams', 'carol@example.com', 'hashed_password_3');
  • 通过在 VALUES 后面使用逗号分隔的多组值,可以一次性插入多条记录。

4. 插入数据时使用 DEFAULT 关键字

如果你希望某一列使用默认值,可以使用 DEFAULT 关键字。例如,假设 created_at 列的默认值是当前时间,你可以使用以下语句:

实例:使用默认值插入

INSERT INTO users (username, email, password_hash, created_at)
VALUES ('david_lee', 'david@example.com', 'hashed_password', DEFAULT);
  • 如果列定义了默认值,使用 DEFAULT 关键字会自动使用该默认值。

5. 插入数据时省略列名

当你插入数据时,可以省略列名,前提是你为所有列提供了值,并且值的顺序与表中列的顺序一致。

实例:省略列名插入

INSERT INTO users
VALUES (NULL, 'emma_davis', 'emma@example.com', 'hashed_password');
  • 在此例中,user_id 列使用 NULL,因为它是 AUTO_INCREMENT 列,MySQL 会自动生成该值。

6. 使用 INSERT IGNORE

INSERT IGNORE 语句在插入数据时,如果出现重复主键或唯一约束的错误时,不会抛出错误,而是跳过该条记录。

实例:使用 INSERT IGNORE

INSERT IGNORE INTO users (username, email, password_hash)
VALUES ('john_doe', 'john@example.com', 'hashed_password');
  • 如果用户名或邮箱已经存在,插入将被忽略,不会导致错误。

7. 使用 ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE 语句在插入数据时,如果遇到重复的主键或唯一索引,可以选择更新已有记录。

实例:使用 ON DUPLICATE KEY UPDATE

INSERT INTO users (user_id, username, email, password_hash)
VALUES (1, 'john_doe', 'john@example.com', 'hashed_password')
ON DUPLICATE KEY UPDATE username = VALUES(username), email = VALUES(email), password_hash = VALUES(password_hash);
  • 如果 user_id 已经存在,MySQL 会更新该用户的 username, emailpassword_hash

8. 插入数据时使用子查询

你还可以通过子查询插入数据,从一个表中选择数据并插入到另一个表中。

实例:通过子查询插入数据

INSERT INTO archive_users (username, email)
SELECT username, email
FROM users
WHERE created_at < '2023-01-01';
  • 这个查询将从 users 表中选择符合条件的数据,并将其插入到 archive_users 表中。

9. 使用 PHP 插入数据

如果你通过 PHP 脚本插入数据,通常会使用 MySQLiPDO 扩展。

实例:使用 PHP MySQLi 插入数据

<?php
// 创建连接
$connection = mysqli_connect("localhost", "username", "password", "database_name");

// 检查连接
if (!$connection) {
    die("Connection failed: " . mysqli_connect_error());
}

// 插入数据
$sql = "INSERT INTO users (username, email, password_hash) 
        VALUES ('lucas_brown', 'lucas@example.com', 'hashed_password')";

if (mysqli_query($connection, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}

// 关闭连接
mysqli_close($connection);
?>

总结

在 MySQL 中,插入数据可以通过多种方式实现:

  1. 基本的 INSERT INTO 语句:插入单条或多条数据。
  2. INSERT IGNORE:忽略重复键值,避免错误。
  3. ON DUPLICATE KEY UPDATE:在插入重复数据时执行更新。
  4. 子查询插入:通过子查询将数据从一个表插入到另一个表。
  5. 通过 PHP 脚本插入数据:使用 MySQLi 或 PDO 扩展执行 INSERT INTO 语句。

选择合适的插入方法,能够有效地管理和处理数据库中的数据。

发表回复 0

Your email address will not be published. Required fields are marked *