MySQL 面试真题(带答案)
创始人
2025-01-11 05:37:06
0

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.connector  def 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.lastrowid                  for 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.price         FROM orders o         JOIN order_items i ON o.order_id = i.order_id         WHERE 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 的详细场景面试题及解答,涵盖了用户注册和登录系统、订单管理系统和博客系统的具体场景和代码实现,供参考学习。

相关内容

热门资讯

2026版方法!火神微信辅助(... 2026版方法!火神微信辅助(辅助)其实是真的有辅助神器(有挂规律)1、点击下载安装,火神微信辅助脚...
操作辅助!奇迹陕西靖边锅子有没... 操作辅助!奇迹陕西靖边锅子有没有技巧!曝光真的有辅助挂(有挂教学)进入游戏-大厅左侧-新手福利-激活...
黑科技辅助挂!威信茶馆跑辅助器... 黑科技辅助挂!威信茶馆跑辅助器(辅助)果然确实有辅助app(真实有挂)1、在威信茶馆跑辅助器插件功能...
要领辅助!好友赣南插件!了解是... 要领辅助!好友赣南插件!了解是有辅助器(证实有挂)1)好友赣南插件免费钻石:进一步探索好友赣南插件免...
随着!决战平安京辅助软件(辅助... 随着!决战平安京辅助软件(辅助)切实存在有辅助挂(有挂透视)1、打开软件启动之后找到中间准星的标志长...
手册辅助!哈灵脚本修改器!解迷... 手册辅助!哈灵脚本修改器!解迷存在有辅助工具(有挂方法)运哈灵脚本修改器辅助工具,进入游戏界面。进入...
此事迅速冲上热搜!微信小程序财... 此事迅速冲上热搜!微信小程序财神十三张辅助(辅助)切实真的是有辅助挂(有挂教程)1、下载好微信小程序...
指引辅助!快玩炸翻天辅助工具!... 指引辅助!快玩炸翻天辅助工具!辅助是真的有辅助软件(真的有挂)在进入快玩炸翻天辅助工具软件靠谱后,参...
方法辅助挂!雀神广东麻将推倒胡... 方法辅助挂!雀神广东麻将推倒胡辅助器下载(辅助)真是真的是有辅助app(果真有挂)1、该软件可以轻松...
方案辅助!广西友玩修改器!普及... 方案辅助!广西友玩修改器!普及真的是有辅助技巧(真的有挂)广西友玩修改器透视方法中分为三种模型:广西...