MySQL 插入数据(附带实例)
在 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, email 和 password_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,email和password_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 脚本插入数据,通常会使用 MySQLi 或 PDO 扩展。
实例:使用 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 中,插入数据可以通过多种方式实现:
- 基本的
INSERT INTO语句:插入单条或多条数据。 INSERT IGNORE:忽略重复键值,避免错误。ON DUPLICATE KEY UPDATE:在插入重复数据时执行更新。- 子查询插入:通过子查询将数据从一个表插入到另一个表。
- 通过 PHP 脚本插入数据:使用 MySQLi 或 PDO 扩展执行
INSERT INTO语句。
选择合适的插入方法,能够有效地管理和处理数据库中的数据。