MySQL 面试真题(带答案)

MySQL 场景面试题

目录

  1. 场景1:用户注册和登录系统
    • 1.1 数据库设计
    • 1.2 用户注册
    • 1.3 用户登录
  2. 场景2:订单管理系统
    • 2.1 数据库设计
    • 2.2 创建订单
    • 2.3 查询订单
  3. 场景3:博客系统
    • 3.1 数据库设计
    • 3.2 发布文章
    • 3.3 评论功能

场景1:用户注册和登录系统

1.1 数据库设计

设计一个简单的用户注册和登录系统,包含用户表 users,表结构如下:

CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

1.2 用户注册

用户注册时,需要将用户名、密码和邮箱存入数据库。使用如下 SQL 语句进行用户注册:

INSERT INTO users (username, password, email) 
VALUES ('test_user', 'password123', 'test_user@example.com');

假设在代码中,使用准备好的语句进行注册操作:

import mysql.connectordef register_user(username, password, email):conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test_db')cursor = conn.cursor()try:cursor.execute("INSERT INTO users (username, password, email) VALUES (%s, %s, %s)", (username, password, email))conn.commit()print("User registered successfully")except mysql.connector.Error as err:print("Error: {}".format(err))finally:cursor.close()conn.close()# Example usage
register_user('test_user', 'password123', 'test_user@example.com')

1.3 用户登录

用户登录时,需要验证用户名和密码。使用如下 SQL 语句进行验证:

SELECT * FROM users WHERE username = 'test_user' AND password = 'password123';

假设在代码中,使用准备好的语句进行登录验证:

def login_user(username, password):conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test_db')cursor = conn.cursor()cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))user = cursor.fetchone()if user:print("Login successful")else:print("Invalid username or password")cursor.close()conn.close()# Example usage
login_user('test_user', 'password123')

场景2:订单管理系统

2.1 数据库设计

设计一个简单的订单管理系统,包括订单表 orders 和订单详情表 order_items,表结构如下:

CREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL,order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,total_amount DECIMAL(10, 2) NOT NULL
);CREATE TABLE order_items (item_id INT AUTO_INCREMENT PRIMARY KEY,order_id INT NOT NULL,product_id INT NOT NULL,quantity INT NOT NULL,price DECIMAL(10, 2) NOT NULL,FOREIGN KEY (order_id) REFERENCES orders(order_id)
);

2.2 创建订单

创建订单时,需要在 orders 表中插入订单记录,并在 order_items 表中插入订单项记录。使用如下 SQL 语句进行插入:

INSERT INTO orders (user_id, total_amount) VALUES (1, 100.00);
INSERT INTO order_items (order_id, product_id, quantity, price) VALUES (LAST_INSERT_ID(), 101, 2, 50.00);

假设在代码中,使用事务进行创建订单操作:

def create_order(user_id, order_items):conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test_db')cursor = conn.cursor()try:cursor.execute("INSERT INTO orders (user_id, total_amount) VALUES (%s, %s)", (user_id, sum(item['quantity'] * item['price'] for item in order_items)))order_id = cursor.lastrowidfor item in order_items:cursor.execute("INSERT INTO order_items (order_id, product_id, quantity, price) VALUES (%s, %s, %s, %s)", (order_id, item['product_id'], item['quantity'], item['price']))conn.commit()print("Order created successfully")except mysql.connector.Error as err:conn.rollback()print("Error: {}".format(err))finally:cursor.close()conn.close()# Example usage
order_items = [{'product_id': 101, 'quantity': 2, 'price': 50.00},{'product_id': 102, 'quantity': 1, 'price': 100.00}
]
create_order(1, order_items)

2.3 查询订单

查询订单时,需要关联 orders 表和 order_items 表。使用如下 SQL 语句进行查询:

SELECT o.order_id, o.order_date, o.total_amount, i.product_id, i.quantity, i.price
FROM orders o
JOIN order_items i ON o.order_id = i.order_id
WHERE o.user_id = 1;

假设在代码中,进行查询订单操作:

def get_orders(user_id):conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test_db')cursor = conn.cursor()cursor.execute("""SELECT o.order_id, o.order_date, o.total_amount, i.product_id, i.quantity, i.priceFROM orders oJOIN order_items i ON o.order_id = i.order_idWHERE o.user_id = %s""", (user_id,))orders = cursor.fetchall()for order in orders:print(order)cursor.close()conn.close()# Example usage
get_orders(1)

场景3:博客系统

3.1 数据库设计

设计一个简单的博客系统,包括文章表 posts 和评论表 comments,表结构如下:

CREATE TABLE posts (post_id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL,content TEXT NOT NULL,author_id INT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE comments (comment_id INT AUTO_INCREMENT PRIMARY KEY,post_id INT NOT NULL,user_id INT NOT NULL,comment TEXT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (post_id) REFERENCES posts(post_id)
);

3.2 发布文章

发布文章时,需要在 posts 表中插入记录。使用如下 SQL 语句进行插入:

INSERT INTO posts (title, content, author_id) VALUES ('My First Post', 'This is the content of my first post.', 1);

假设在代码中,进行发布文章操作:

def create_post(title, content, author_id):conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test_db')cursor = conn.cursor()try:cursor.execute("INSERT INTO posts (title, content, author_id) VALUES (%s, %s, %s)", (title, content, author_id))conn.commit()print("Post created successfully")except mysql.connector.Error as err:print("Error: {}".format(err))finally:cursor.close()conn.close()# Example usage
create_post('My First Post', 'This is the content of my first post.', 1)

3.3 评论功能

用户可以对文章进行评论,需要在 comments 表中插入记录。使用如下 SQL 语句进行插入:

INSERT INTO comments (post_id, user_id, comment) VALUES (1, 2, 'This is a comment.');

假设在代码中,进行评论操作:

def add_comment(post_id, user_id, comment):conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test_db')cursor = conn.cursor()try:cursor.execute("INSERT INTO comments (post_id, user_id, comment) VALUES (%s, %s, %s)", (post_id, user_id, comment))conn.commit()print("Comment added successfully")except mysql.connector.Error as err:print("Error: {}".format(err))finally:cursor.close()conn.close()# Example usage
add_comment(1, 2, 'This is a comment.')

以上是关于 MySQL 的详细场景面试题及解答,涵盖了用户注册和登录系统、订单管理系统和博客系统的具体场景和代码实现,供参考学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/871126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅析Kafka Streams消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

【三维AIGC】扩散模型LDM辅助3D Gaussian重建三维场景

标题&#xff1a;《Sampling 3D Gaussian Scenes in Seconds with Latent Diffusion Models》 来源&#xff1a;Glasgow大学&#xff1b;爱丁堡大学 连接&#xff1a;https://arxiv.org/abs/2406.13099 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何…

WebSocket 常见的错误

一、连接相关错误 &#xff08;一&#xff09;连接超时 原因&#xff1a;在规定的时间内无法成功建立与服务器的 WebSocket 连接。示例&#xff1a;如果网络状况不佳&#xff0c;或者服务器响应缓慢&#xff0c;导致在客户端设置的连接超时时间内未能完成连接建立的握手过程&am…

在 WebSocket 连接建立之前进行身份验证时,token 应该如何存储

在 WebSocket 连接建立之前进行身份验证时,token 的存储方式有以下几种常见选择: 一、客户端存储 (一)本地存储(LocalStorage) 在现代浏览器中,可以使用 LocalStorage 来存储 token。LocalStorage 是一种键值对形式的存储,数据会一直存储在浏览器中,直到被手动清除或…

Spring Security学习笔记(一)Spring Security架构原理

前言&#xff1a;本系列博客基于Spring Boot 2.6.x依赖的Spring Security5.6.x版本 Spring Security中文文档&#xff1a;https://springdoc.cn/spring-security/index.html 一、什么是Spring Security Spring Security是一个安全控制相关的java框架&#xff0c;它提供了一套全…

海外ASO:iOS与谷歌优化的相同点和区别

海外ASO是针对iOS的App Store和谷歌的Google Play这两个主要海外应用商店进行的优化过程&#xff0c;两个不同的平台需要采取不同的优化策略&#xff0c;以下是对iOS优化和谷歌优化的详细解析&#xff1a; 一、iOS优化&#xff08;App Store&#xff09; 1、关键词覆盖 选择关…

Xcode应用安全堡垒:全方位安全性测试指南

标题&#xff1a;Xcode应用安全堡垒&#xff1a;全方位安全性测试指南 在数字化时代&#xff0c;应用安全是开发者和用户共同关注的焦点。Xcode&#xff0c;作为iOS和macOS应用开发的基石&#xff0c;提供了一系列的工具和功能来确保应用的安全性。本文将详细介绍如何使用Xcod…

用node.js写一个简单的图书管理界面——功能:添加,删除,修改数据

涉及到的模块&#xff1a; var fs require(‘fs’)——内置模块 var ejs require(‘ejs’)——第三方模块 var mysql require(‘mysql’)——第三方模块 var express require(‘express’)——第三方模块 var bodyParser require(‘body-parser’)——第三方中间件 需要…

【TB作品】51单片机,MSP430单片机,STM32单片机,万年历

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tabBB08J2二年级口袋开发板学年任务 一、 万年历 任务要求&#xff1a; 制作一个万年历&#xff0c;具有显示时间、日期、温度、湿度、闹钟功能。 1、OLED显示屏上显示日期和时钟&#xff08;显示到秒&#xff0c;时间可走动&…

Python实现音频均衡和降噪

使用librosa库来读取音频文件&#xff0c;音频处理是一个复杂过程&#xff0c;这里只是简单的进行降噪和均衡。 import librosa import soundfile as sf def improve_audio_quality(input_file, output_file): # 读取音频文件 audio, sample_rate librosa.load(input_…

打造你的智能家居指挥中心:基于STM32的多协议(zigbee、http)网关(附代码示例)

1. 项目概述 随着物联网技术的蓬勃发展&#xff0c;智能家居正逐步融入人们的日常生活。然而&#xff0c;市面上琳琅满目的智能家居设备通常采用不同的通信协议&#xff0c;导致不同品牌设备之间难以实现互联互通。为了解决这一难题&#xff0c;本文设计了一种基于STM32的多协…

ant design form动态增减表单项Form.List如何进行动态校验规则

项目需求&#xff1a; 在使用ant design form动态增减表单项Form.List时&#xff0c;Form.List中有多组表单项&#xff0c;一组中的最后一个表单项的校验规则是动态的&#xff0c;该组为最后一组时&#xff0c;最后一个表单项是非必填项&#xff0c;其他时候为必填项。假设动态…

力扣题解(最长等差数列)

1027. 最长等差数列 给你一个整数数组 nums&#xff0c;返回 nums 中最长等差子序列的长度。 回想一下&#xff0c;nums 的子序列是一个列表 nums[i1], nums[i2], ..., nums[ik] &#xff0c;且 0 < i1 < i2 < ... < ik < nums.length - 1。并且如果 seq[i1] -…

docker inspect 如何提取容器的ip和端口 网络信息?

目录 通过原生Linux命令过滤找到IP 通过jq工具找到IP 使用docker -f 的过滤&#xff08;模板&#xff09; 查找端口映射信息 查看容器内部细节 docker inspect 容器ID或容器名 通过原生Linux命令过滤找到IP 通过jq工具找到IP jq 是一个轻量级且灵活的命令行工具&#xf…

(视频演示)基于OpenCV的实时视频跟踪火焰识别软件V1.0源码及exe下载

本文介绍了基于OpenCV的实时视频跟踪火焰识别软件&#xff0c;该软件通过先进的图像处理技术实现对实时视频中火焰的检测与跟踪&#xff0c;同时支持导入图片进行火焰识别。主要功能包括相机选择、实时跟踪和图片模式。软件适用于多种场合&#xff0c;用于保障人民生命财产安全…

OpenGL笔记二之glad加载opengl函数以及opengl-API(函数)初体验

OpenGL笔记二之glad加载opengl函数以及opengl-API(函数)初体验 总结自bilibili赵新政老师的教程 code review! 文章目录 OpenGL笔记二之glad加载opengl函数以及opengl-API(函数)初体验1.运行2.重点3.目录结构4.main.cpp5.CMakeList.txt 1.运行 2.重点 3.目录结构 01_GLFW_WI…

力扣 150题 逆波兰表达式求值 记录

题目描述 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意&#xff1a;有效的算符为 、-、* 和 / 。 每个操作数&#xff08;运算对象&#xff09;都可以是一个整数或者另一个表达式…

Python-PLAXIS自动化建模技术与典型岩土工程

有限单元法在岩土工程问题中应用非常广泛&#xff0c;很多软件都采用有限单元解法。在使用各大软件进行数值模拟建模的过程中&#xff0c;您是否发现GUI界面中重复性的点击输入工作太繁琐&#xff1f;从而拖慢了设计或方案必选进程&#xff1f; 搭建自己的Plaxis模型&#xff…

【ceph】ceph-mon重新选举的情况

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

Oracle数据文件扩容

1、增加数据文件扩容 ALTER TABLESPACE app_data ADD DATAFILE D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF SIZE 30G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED; ALTER database datafile /ora/oradata/radius/undo.dbf resize 32G; alter tablespace sysaux add …