数据库火车票售票sql语句
时间: 2024-06-22 13:01:46 浏览: 13
在数据库中模拟火车票售票的过程,通常涉及到创建相关的表来存储乘客信息、车次信息和订单信息,然后编写SQL语句来执行增删查改的操作。这里是一个简化版的例子,假设我们有三个基本表:`passengers`, `trains`, 和 `tickets`。
1. 表结构示例:
```sql
CREATE TABLE passengers (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE trains (
id INT PRIMARY KEY,
train_number VARCHAR(10),
departure_time TIMESTAMP,
arrival_time TIMESTAMP,
capacity INT
);
CREATE TABLE tickets (
id INT PRIMARY KEY,
passenger_id INT,
train_id INT,
order_date TIMESTAMP,
status ENUM('pending', 'booked', 'cancelled') DEFAULT 'pending',
FOREIGN KEY (passenger_id) REFERENCES passengers(id),
FOREIGN KEY (train_id) REFERENCES trains(id)
);
```
2. 售票操作(购买新票):
```sql
INSERT INTO tickets (passenger_id, train_id, order_date)
VALUES (?, ?, CURRENT_TIMESTAMP)
ON DUPLICATE KEY UPDATE status = 'booked';
```
这里的`?`代表待插入的乘客ID和车次ID。
3. 查询库存:
```sql
SELECT t.train_number, p.name, t.capacity - COUNT(t2.id) AS available_seats
FROM trains t
JOIN tickets t2 ON t.id = t2.train_id AND t2.status = 'pending'
GROUP BY t.id;
```
这将显示每个车次剩余可用座位数。
4. 取消订单:
```sql
UPDATE tickets
SET status = 'cancelled'
WHERE id = ? AND status = 'booked';
```
这里的`?`是需要取消的订单ID。
相关问题--:
1. 如何查询某个乘客的所有未取消订单?
2. 如何更新订单状态为已支付?
3. 如何删除已取消的订单记录?
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)