在项目的早期阶段,偶学习了MySQL数据库的基础知识,包括创建、修改和删除表,以及查询和更新数据。偶注意到了MySQL数据库的数据类型,例如整数、字符串、日期和时间,这使得偶能够在偶的应用程序中存储和管理不同类型的数据。
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在实际开发过程中,偶还需要设计关系型数据库,以便将相关数据存储在同一位置并进行逻辑地组织。偶采用了关系型数据库设计的基本原则,包括将数据拆分到更小的表中,并使用外键建立表之间的关系。
CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `product_id` int(11) NOT NULL, `quantity` int(11) NOT NULL, `status` varchar(255) NOT NULL, `created_at` datetime NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `product_id` (`product_id`), CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
偶还使用MySQL数据库的函数和存储过程来实现更高级的操作,例如在数据库中执行计算、过滤和排序等运算。
CREATE PROCEDURE `add_order`(IN `user_id` INT, IN `product_id` INT, IN `quantity` INT) BEGIN DECLARE `product_price` DECIMAL(10, 2); SELECT `price` INTO `product_price` FROM `products` WHERE `id` = `product_id`; INSERT INTO `orders` (`user_id`, `product_id`, `quantity`, `status`, `created_at`) VALUES (`user_id`, `product_id`, `quantity`, 'pending', NOW()); UPDATE `users` SET `total_spent` = `total_spent` + (`quantity` * `product_price`) WHERE `id` = `user_id`; END
通过这个MySQL数据库的课设项目,偶对数据库的理解和应用得到了很大的提升。偶学习到了如何设计和管理关系型数据库,以及使用MySQL数据库的高级功能,例如函数和存储过程。偶相信这些经验将对偶在未来的项目中使用MySQL数据库非常有用。