R10-3 基于视图StuView查询。 分数 5 作者 李翔坤 单位 大连东软信息学院 从上题创建的视图StuView中查询年龄高于18岁的学生有哪些。 提示:请使用SELECT语句作答。 StuView 视图结构: create view StuView(No, Name, Age) as select Sno, sname, year(now())-year(birthdate) from Student; StuView 视图数据样例 StuView视图: 图片.png 输出样例: 图片.png
时间: 2025-06-25 16:13:23 浏览: 21
### 查询分析
在 SQL 中,通过 `WHERE` 子句可以实现条件过滤。对于视图 `StuView` 的查询操作,可以直接像对待普通表一样执行 SELECT 语句并附加条件[^1]。
给定的查询语句如下:
```sql
SELECT * FROM StuView WHERE Age > 18;
```
此语句的功能是从视图 `StuView` 中筛选出所有年龄大于 18 岁的学生记录[^2]。由于视图本质上是一个存储的查询结果集,因此该查询会基于视图定义中的逻辑动态计算符合条件的数据[^3]。
以下是完整的解释以及可能涉及的相关知识点:
#### 视图基础回顾
视图是一种虚拟表,其内容由查询定义而不是实际存储数据。创建视图时使用的查询决定了视图返回的内容和字段[^4]。例如,在引用中提到的视图 `StuView` 定义如下:
```sql
CREATE VIEW StuView(No, Name, Age) AS
SELECT Sno, sname, YEAR(NOW()) - YEAR(birthdate) AS Age
FROM Student;
```
在此定义中,`Age` 是通过当前年份减去出生年份动态计算得出的列[^4]。这意味着每次访问视图时都会重新计算学生的年龄。
#### 查询有效性验证
根据已知信息,给出的查询语句是有效的,并能够正确返回所需的结果。具体来说:
- **`SELECT *`**: 表示选择视图中的所有列。
- **`FROM StuView`**: 指定查询的目标为视图 `StuView`。
- **`WHERE Age > 18`**: 过滤条件,仅保留年龄大于 18 岁的记录[^1]。
需要注意的是,如果视图定义中有复杂的逻辑或者依赖于其他表,则最终结果可能会受到这些因素的影响。
#### 示例代码
为了进一步说明如何使用该查询,下面提供了一个简单的例子:
假设视图 `StuView` 返回以下数据:
| No | Name | Age |
|----|----------|-----|
| 1 | Alice | 20 |
| 2 | Bob | 17 |
| 3 | Charlie | 19 |
运行查询后得到的结果将是:
| No | Name | Age |
|----|----------|-----|
| 1 | Alice | 20 |
| 3 | Charlie | 19 |
这是因为在满足条件 `Age > 18` 后,只有两条记录被保留下来[^1]。
---
###
阅读全文
相关推荐


















