假设某医院体检科有多种体检项目,其数据库中有用户关系 U(UID, NAME, BYEAR, SEX, , FLAG) ) 记录来检查的每个 用户的身份证号、姓名、出生年份、性别和用户类别, 关系 P( PID, TITLE, PRICE) )记录每种体检项目的编号、名称及其 费用, 关系 UP( UID,PID, CKDATE) )记录用户参加了某种体检项目的一次检查的日期 。假设数据库的函数 YEAR(UPDATE)和 MONTH( UPDATE) )分别计算日期数据的年份和月份,请分别用一条 SQL 语句完成下列数据操纵需求 。 • 查询 2020 年 3 月做过项目名为“核酸”检测的用户姓名、性别和出生年份 • 画出优化后的语法树
时间: 2024-02-23 11:02:15 浏览: 112
查询语句如下:
```
SELECT U.NAME, U.SEX, U.BYEAR
FROM U, P, UP
WHERE U.UID = UP.UID AND P.PID = UP.PID AND P.TITLE = '核酸'检测'
AND YEAR(UP.CKDATE) = 2020 AND MONTH(UP.CKDATE) = 3;
```
优化后的语法树如下:
```
SELECT
|
PROJECT
|
+---+---+---+
| | |
NAME SEX BYEAR
|
|
σ
|
+---+---+---+---+---+---+
| | | | | |
U P UP = AND AND
| |
UID PID
| |
= '核酸'检测
| |
CKDATE YEAR
|
2020
|
MONTH
|
3
```
阅读全文