-- 创建一个新的数据库
CREATE DATABASE IF NOT EXISTS `example_db` DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 使用example_db数据库
USE `example_db`;
-- 创建一个用户表
CREATE TABLE `users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 向用户表中添加数据
INSERT INTO `users` (`username`, `email`) VALUES
('张三', 'zhangsan@example.com'),
('李四', 'lisi@example.com');
-- 创建另一个表, 与用户表相关联
CREATE TABLE `posts` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`content` TEXT NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `user_id_idx` (`user_id`),
CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 插入一些帖子
INSERT INTO `posts` (`user_id`, `title`, `content`) VALUES
(1, '第一篇帖子', '这是第一篇帖子的内容。'),
(2, '第二篇帖子', '这是第二篇帖子的内容。');
-- 查询用户ID为1的所有帖子
SELECT p.*
FROM `users` u
JOIN `posts` p ON u.id = p.user_id
WHERE u.id = 1;
-- 开始一个事务
START TRANSACTION;
-- 更新用户ID为1的用户的邮箱
UPDATE `users` SET `email` = 'newemail@example.com' WHERE `id` = 1;
-- 插入一条新帖子,关联到用户ID为1
INSERT INTO `posts` (`user_id`, `title`, `content`) VALUES (1, '新帖', '这是一个新的帖子。');
-- 提交事务
COMMIT;
-- 查询最近插入的记录的ID
SELECT LAST_INSERT_ID();
这个例子展示了如何创建数据库、表,以及如何使用外键、事务来管理数据的一致性和完整性。同时,它也演示了基本的SQL查询操作,包括插入、更新、连接查询以及事务处理。