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 的详细场景面试题及解答,涵盖了用户注册和登录系统、订单管理系统和博客系统的具体场景和代码实现,供参考学习。

相关内容

热门资讯

透视项目!wepoker免费脚... 透视项目!wepoker免费脚本弱密码,wejoker辅助软件(透视)一直真的是有脚本脚本(哔哩哔哩...
透视手筋!We poker辅助... 透视手筋!We poker辅助器下载,wepoker破解工具(透视)竟然有脚本方法(哔哩哔哩)1、W...
透视绝活儿!来玩app破解,约... 透视绝活儿!来玩app破解,约局吧辅助器(透视)好像真的是有透视方法(哔哩哔哩)1、很好的工具软件,...
透视手筋!aapoker辅助插... 透视手筋!aapoker辅助插件工具,aapoker怎么选牌(透视)真是是真的透视工具(哔哩哔哩)1...
透视经验!wepoker安装教... 透视经验!wepoker安装教程,红龙poker辅助(透视)好像是真的透视脚本(哔哩哔哩)1、每一步...
透视绝活儿!德普之星透视,德普... 透视绝活儿!德普之星透视,德普之星私人局透视(透视)都是真的有透视技巧(哔哩哔哩)1、下载好德普之星...
透视手段!智星德州辅助译码插件... 透视手段!智星德州辅助译码插件靠谱吗,菠萝辅助器免费版的特点(透视)都是真的是有脚本教程(哔哩哔哩)...
透视手筋!如何下载德普之星辅助... 透视手筋!如何下载德普之星辅助软件,德普之星的辅助工具介绍(透视)其实有脚本方法(哔哩哔哩)1、金币...
透视绝活儿!哈糖大菠萝辅助器,... 透视绝活儿!哈糖大菠萝辅助器,红龙poker辅助工具(透视)切实有脚本app(哔哩哔哩)1、这是跨平...
透视策略!wepoker的辅助... 透视策略!wepoker的辅助器,wepoker私人局透视教程(透视)本来是真的透视插件(哔哩哔哩)...