石家庄有学校交做网站和优化的吗,青岛开发区人才网,公众号怎么创建,app网站开发价格MySQL 场景面试题
目录
场景1#xff1a;用户注册和登录系统 1.1 数据库设计1.2 用户注册1.3 用户登录 场景2#xff1a;订单管理系统 2.1 数据库设计2.2 创建订单2.3 查询订单 场景3#xff1a;博客系统 3.1 数据库设计3.2 发布文章3.3 评论功能
场景1#xff1a;用户…MySQL 场景面试题
目录
场景1用户注册和登录系统 1.1 数据库设计1.2 用户注册1.3 用户登录 场景2订单管理系统 2.1 数据库设计2.2 创建订单2.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_userexample.com);假设在代码中使用准备好的语句进行注册操作
import mysql.connectordef register_user(username, password, email):conn mysql.connector.connect(userroot, passwordpassword, host127.0.0.1, databasetest_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_userexample.com)1.3 用户登录
用户登录时需要验证用户名和密码。使用如下 SQL 语句进行验证
SELECT * FROM users WHERE username test_user AND password password123;假设在代码中使用准备好的语句进行登录验证
def login_user(username, password):conn mysql.connector.connect(userroot, passwordpassword, host127.0.0.1, databasetest_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(userroot, passwordpassword, host127.0.0.1, databasetest_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(userroot, passwordpassword, host127.0.0.1, databasetest_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(userroot, passwordpassword, host127.0.0.1, databasetest_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(userroot, passwordpassword, host127.0.0.1, databasetest_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 的详细场景面试题及解答涵盖了用户注册和登录系统、订单管理系统和博客系统的具体场景和代码实现供参考学习。