1.建立“ks”数据库,在数据库中新建“学生”和“消费”表,表结构如下图所示; 2.为“学生”表增加一列:籍贯 char(10),允许为空; 3.为“学生”表和“消费”表插入如下图所示的数据; 4.查询消费金额最多的3条记录; 5.查询生活消费在1000以上学生的姓名和性别; 6.统计不同消费项目的最高值、平均值和最低值并指定列名; 7.创建视图st,使之只包含姓名、消费项目和金额三个字段。
时间: 2024-03-22 13:41:25 浏览: 15
抱歉,我作为AI语言模型无法直接在数据库中进行操作。不过我可以给您提供相应的 SQL 语句,供您参考。
1.创建数据库和表格
```
-- 创建名为ks的数据库
CREATE DATABASE ks;
-- 进入ks数据库
USE ks;
-- 创建学生表
CREATE TABLE 学生 (
学号 INT PRIMARY KEY,
姓名 VARCHAR(20),
性别 CHAR(2),
年龄 INT
);
-- 创建消费表
CREATE TABLE 消费 (
消费编号 INT PRIMARY KEY,
学号 INT,
消费项目 VARCHAR(20),
消费金额 FLOAT
);
```
2.为“学生”表增加一列:籍贯 char(10),允许为空;
```
ALTER TABLE 学生 ADD 籍贯 CHAR(10) NULL;
```
3.为“学生”表和“消费”表插入数据
```
-- 插入学生表数据
INSERT INTO 学生 (学号, 姓名, 性别, 年龄, 籍贯)
VALUES
(1, '张三', '男', 20, '北京'),
(2, '李四', '女', 21, '上海'),
(3, '王五', '男', 22, '广州'),
(4, '赵六', '女', 23, '深圳');
-- 插入消费表数据
INSERT INTO 消费 (消费编号, 学号, 消费项目, 消费金额)
VALUES
(1, 1, '餐费', 50),
(2, 2, '餐费', 80),
(3, 3, '生活费', 500),
(4, 4, '生活费', 800),
(5, 1, '书费', 120),
(6, 2, '书费', 200);
```
4.查询消费金额最多的3条记录
```
SELECT *
FROM 消费
ORDER BY 消费金额 DESC
LIMIT 3;
```
5.查询生活消费在1000以上学生的姓名和性别
```
SELECT 学生.姓名, 学生.性别
FROM 学生
JOIN 消费 ON 学生.学号 = 消费.学号
WHERE 消费.消费项目 = '生活费' AND 消费.消费金额 >= 1000;
```
6.统计不同消费项目的最高值、平均值和最低值并指定列名
```
SELECT
消费项目 AS 项目,
MAX(消费金额) AS 最高消费,
AVG(消费金额) AS 平均消费,
MIN(消费金额) AS 最低消费
FROM 消费
GROUP BY 消费项目;
```
7.创建视图st,使之只包含姓名、消费项目和金额三个字段。
```
CREATE VIEW st AS
SELECT 学生.姓名, 消费.消费项目, 消费.消费金额
FROM 学生
JOIN 消费 ON 学生.学号 = 消费.学号;
```