SQL建表与查询实战:数据库作业答案详解

需积分: 10 1 下载量 164 浏览量 更新于2024-09-21 收藏 39KB DOC 举报
在《数据库原理》的第三次作业中,针对第二章的习题5,涉及了SQL语句的运用以及数据库表的创建和查询操作。首先,你需要使用SQL创建四个表格: 1. 学生表(sno, sname, status, city): 使用`creattables`命令,定义了字段类型,如`sno`为两位字符型,`sname`为六位字符型等。 2. 零件表(pno, pname, color, weight): `creattablep`用于创建该表,包含字段如零件号`pno`、零件名`pname`、颜色`color`和重量`weight`。 3. 工程表(jno, jname, city): `creattablej`定义了工程号`jno`、工程名`jname`和城市`city`。 4. 供应商零件表(sjp): `creattablespj`用于存储学生(sno)、零件(pno)和工程(jno)之间的关系,以及数量(qty)。 接下来是五道SQL查询问题: 1. 查询供应工程J1零件的供应商号码(SNO): 使用`select distinct sno from spj where jno = 'j1'`来筛选出所有为J1提供零件的供应商的唯一SNO。 2. 求供应工程J1零件P1的供应商号码(SNO): 添加条件`and pno = 'p1'`到第一个查询中,找出特定零件P1的供应商SNO。 3. 求供应工程J1零件为红色的供应商号码(SNO): 在`spj`和`p`表间联接,并使用`color = '红'`筛选红色零件,得到供应商SNO。 4. 求没有使用天津供应商生产的红色零件的工程号(JNO): 使用`not exist`子句,首先找出天津供应商(`s.city = '天津'`),然后确保这些零件未被任何工程使用。 5. 求至少用了供应商S1所供应的全部零件的工程号(JNO): 分两步:首先找到供应商S1供应的所有零件(`pnofromspj where sno = 's1'`),然后检查是否存在工程JNO没有使用这些零件(`not exist`子句嵌套查找),最后筛选出满足条件的工程号。 通过这些问题,你将深入理解如何使用SQL语言进行数据检索和关联查询,同时也展示了数据库设计和查询优化的基本技巧。在实际工作中,这种能力对于数据分析和业务报告至关重要。