数据库系统概论第三章学习通作业(建表、查询、修改、删除、视图)

设有3个关系:

S(S#,SNAME,SEX,AGE)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

试用SQL语句完成下列大题1~4的任务:

用数据定义语言DDL定义上述三个表,请为每个属性定义适当的数据类型,宽度(和精度),每个表上的主键、外键以及完整性约束。

1,把这个sql文件导入本地,桌面建一个XX.sql文件,用记事本打开,把这个复制进去。然后用语句导入到自己的本地数据库,这里用的是mysql,Navicat

/*
Navicat MySQL Data Transfer
Date: 2022-03-15 21:34:47
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `c`
-- ----------------------------
DROP TABLE IF EXISTS `c`;
CREATE TABLE `c` (
  `c` int(11) NOT NULL,
  `cname` varchar(255) DEFAULT NULL,
  `teacher` varchar(255) NOT NULL,
  PRIMARY KEY (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of c
-- ----------------------------
INSERT INTO `c` VALUES ('1', 'java', 'LIU');
INSERT INTO `c` VALUES ('2', 'python', 'LI');
INSERT INTO `c` VALUES ('3', 'html', 'XU');

-- ----------------------------
-- Table structure for `s`
-- ----------------------------
DROP TABLE IF EXISTS `s`;
CREATE TABLE `s` (
  `s` int(11) NOT NULL AUTO_INCREMENT,
  `sname` varchar(255) NOT NULL,
  `sex` varchar(10) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`s`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of s
-- ----------------------------
INSERT INTO `s` VALUES ('1', 'WANG', 'male', '20');
INSERT INTO `s` VALUES ('2', 'ZHANGYU', 'male', '24');
INSERT INTO `s` VALUES ('3', 'ZHAO', 'female', '18');
INSERT INTO `s` VALUES ('4', 'YI', 'male', '25');
INSERT INTO `s` VALUES ('5', 'FANG', 'female', '21');
INSERT INTO `s` VALUES ('6', 'ZHANGFRI', 'female', '18');

-- ----------------------------
-- Table structure for `sc`
-- ----------------------------
DROP TABLE IF EXISTS `sc`;
CREATE TABLE `sc` (
  `s` int(11) NOT NULL,
  `c` int(11) DEFAULT NULL,
  `grade` float DEFAULT NULL,
  KEY `s` (`s`),
  KEY `c` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of sc
-- ----------------------------
INSERT INTO `sc` VALUES ('1', '1', '80');
INSERT INTO `sc` VALUES ('1', '2', '88');
INSERT INTO `sc` VALUES ('2', '1', '79');
INSERT INTO `sc` VALUES ('2', '2', '81');
INSERT INTO `sc` VALUES ('3', '3', '86');
INSERT INTO `sc` VALUES ('4', '2', '85');
INSERT INTO `sc` VALUES ('4', '3', '87');
INSERT INTO `sc` VALUES ('5', '1', '95');
INSERT INTO `sc` VALUES ('3', '1', '82');
INSERT INTO `sc` VALUES ('1', '3', '77');
INSERT INTO `sc` VALUES ('4', '1', '66');
INSERT INTO `sc` VALUES ('6', '1', '78');

在1题的基础是,用SELECT语句完成下列查询。

(1)检索LIU老师所授课程的课程号和课程名;

(2)检索年龄大于23的男同学的学号和姓名;

(3)检索学号为S3的学生所学课程的课程名与任课老师;

(4)检索至少选修LIU 老师所授课程中一门课程的女学生的姓名;

(5)检索WANG同学不学课程的课程号;

(6)检索至少选修2门课的学生的学号;

(7)检索全部学生都选修的课程的课程号和课程名;

(8)检索选修课程包含LIU老师所授全部课程的学生的学号;

(9)检索所有姓张的学生;

(10)查询每个学生的平均成绩;

(11)查询平均成绩大于等于80分的学生的学号和姓名。

(12)查询平均成绩第一名的学生的学号和姓名。

1、select c,cname from C where teacher='LIU';
	+---+-------+
	| c | cname |
	+---+-------+
	| 1 | java  |
	+---+-------+
2、 select s,sname,sex,age from S where sex='male' and age>23;
	+---+-------+------+-----+
	| s | sname | sex  | age |
	+---+-------+------+-----+
	| 2 | ZHANG | male |  24 |
	| 4 | YI    | male |  25 |
	+---+-------+------+-----+
3、 select cname,teacher from SC join C on SC.c=C.c and SC.s=3;
	+-------+---------+
	| cname | teacher |
	+-------+---------+
	| java  | LIU     |
	| html  | XU      |
	+-------+---------+
4、select distinct sname,sex,cname from S,SC,C where sex='female' and teacher='LIU';
	+-------+--------+-------+
	| sname | sex    | cname |
	+-------+--------+-------+
	| ZHAO  | female | java  |
	| FANG  | female | java  |
	+-------+--------+-------+
5、select c from C where not exists(select * from S,SC where S.s=SC.s and SC.c=C.c and sname='WANG');
	+---+
	| c |
	+---+
	| 3 |
	+---+
6、 select s from SC group by s having count(*)>1;
	+---+
	| s |
	+---+
	| 1 |
	| 2 |
	| 3 |
	| 4 |
	+---+
7、select c,cname from C where not exists(select * from S where not exists(select * from SC where s=S.s and c=C.c));
	+---+-------+
	| c | cname |
	+---+-------+
	| 1 | java  |
	+---+-------+
8、select  distinct s,c,grade from SC x where not exists(select * from C where teacher='LIU' and not exists(select * from SC y where y.s=x.s and x.c=c.c));
	+---+------+-------+
	| s | c    | grade |
	+---+------+-------+
	| 1 |    1 |    80 |
	| 2 |    1 |    79 |
	| 5 |    1 |    95 |
	| 3 |    1 |    82 |
	| 4 |    1 |    66 |
	| 6 |    1 |    78 |
+---+------+-------+
9、 select sname from S where sname like 'ZHANG%';
	+----------+
	| sname    |
	+----------+
	| ZHANGYU  |
	| ZHANGFRI |
	+----------+
10、select avg(grade),s from SC group by s;
	+-------------------+---+
	| avg(grade)        | s |
	+-------------------+---+
	| 81.66666666666667 | 1 |
	|                80 | 2 |
	|                84 | 3 |
	| 79.33333333333333 | 4 |
	|                95 | 5 |
	|                78 | 6 |
	+-------------------+---+
11、select S.s,sname,avg(grade) from S join SC on S.s=SC.s group by s having avg(grade)>=80;
	+---+---------+-------------------+
	| s | sname   | avg(grade)        |
	+---+---------+-------------------+
	| 1 | WANG    | 81.66666666666667 |
	| 2 | ZHANGYU |                80 |
	| 3 | ZHAO    |                84 |
	| 5 | FANG    |                95 |
	+---+---------+-------------------+
12、select avg(grade),SC.s,sname from SC,S where SC.s=S.s group by s limit 1;
	+-------------------+---+-------+
	| avg(grade)        | s | sname |
	+-------------------+---+-------+
	| 81.66666666666667 | 1 | WANG  |
	+-------------------+---+-------+

(1)请创建选修LIU老师所带课程的学生视图,视图包括:学号、姓名、性别、课程号、课程名、成绩。

(2)创建所有男生的视图。

(3)创建所有学生的选课视图,视图包括:学号、姓名、性别、课程号、课程名、成绩。

(4)创建学生平均成绩的视图,视图包括:学号、姓名和平均成绩。

1、create view LIU_student as select sf.Sno,sf.SNAME,sf.SEX,kc.Cno,kc.CNAME,cj.grade from s sf join sc cj on sf.Sno=cj.Sno join c kc on kc.Cno=cj.Cno where kc.teacher='LIU'

2、create view LIU_student as select sf.Sno,sf.SNAME,sf.SEX,kc.Cno,kc.CNAME,cj.grade from s sf join sc cj on sf.Sno=cj.Sno join c kc on kc.Cno=cj.Cno where sf.SEX='男'

3、create view LIU_student as select sf.Sno,sf.SNAME,sf.SEX,kc.Cno,kc.CNAME,cj.grade from s sf join sc cj on sf.Sno=cj.Sno join c kc on kc.Cno=cj.Cno 

4、create view avg_student as select sf.Sno,sf.SNAME,ROUND(avg(cj.grade)) from s sf LEFT join sc cj on sf.Sno=cj.Sno GROUP BY sf.Sno

整理的自己的作业题,有不合适的 语句欢迎同学们一起交流一下。一起进步。

<think>好的,我现在要解决用户在IAR编译器中遇到的错误:“incomplete type is not allowed”。首先,我需要理解这个错误的含义和常见原因。根据我的知识库,这个错误常发生在代码中使用了未完全定义的类型,比如结构体或联合体声明了但未定义,或者前向声明了某个类型但没有提供完整的定义。 首先,我应该检查用户代码中是否有结构体或联合体的声明但没有定义的情况。比如,如果有一个结构体声明为`struct MyStruct;`,但没有后续的完整定义,那么在需要该结构体大小或成员的地方,编译器就会报这个错误。这时候,需要用户补全结构体的定义,包括成员变量。 其次,检查是否在头文件中只声明了类型而没有包含定义。例如,如果在头文件中使用前向声明,但在使用该类型的源文件中没有包含实际的定义头文件,这也会导致错误。此时,需要确保在使用类型的地方包含了正确的头文件,或者将前向声明替换为完整的定义。 另外,还要考虑typedef的问题。如果用户使用了typedef创建别名,但原始类型未完全定义,同样会引发错误。例如,`typedef struct MyStruct MyType;`之后,如果尝试使用MyType但MyStruct尚未定义,就会出错。需要确保在使用typedef之前,原始类型已经被完整定义。 此外,数组声明中的类型不完整也是一个常见原因。比如声明数组时,如果元素类型未完全定义,编译器无法确定数组的大小,导致错误。需要检查数组声明中的类型是否已经完整定义。 可能还有其他情况,比如在C和C++混合编程时,如果没有正确使用extern "C",或者在头文件中遗漏了必要的包含,也可能导致类型不完整。需要用户检查这些方面。 接下来,我需要将这些可能的原因整理成清晰的解决步骤,并给出具体的代码示例,帮助用户理解如何修改。同时,根据用户提供的引用内容,虽然引用[1]和引用[2]是关于其他错误的,但用户可能希望看到类似的结构,即分点说明解决方案,并引用相关资源。 最后,生成相关问题,帮助用户进一步了解可能相关的编译错误,比如类型未定义、前向声明问题等。这样用户可以有更全面的认识,预防其他类似错误的发生。</think>### IAR编译器错误'incomplete type is not allowed'解决方案 该错误表示代码中使用了**未完全定义的类型**,编译器无法确定其内存布局或成员信息。以下是具体原因及解决方法: #### 1. 结构体/联合体未定义完整 若声明了结构体但未定义成员,在实例化时会报错: ```c struct MyStruct; // 前向声明不完整 struct MyStruct var; // 错误:使用未完成类型 ``` **解决方案**:补全类型定义 ```c struct MyStruct { int id; char name[20]; }; ``` #### 2. 头文件包含缺失 当跨文件使用类型时,需确保定义可见: ```c // file.h struct Data; // 前向声明 // file.c struct Data { // 实际定义 int value; }; ``` **解决方案**:在使用该类型的文件中包含定义头文件 ```c #include "file.c" // 包含实际定义 ``` #### 3. typedef别名问题 使用typedef时原始类型必须完整: ```c typedef struct Node NodeT; // 前向声明 NodeT* ptr; // 允许指针声明 NodeT instance; // 错误:不完整类型 ``` **解决方案**:先完成类型定义再typedef ```c struct Node { int data; struct Node* next; }; typedef struct Node NodeT; ``` #### 4. 数组声明不完整 数组元素类型必须完全定义: ```c struct Element; struct Element arr[10]; // 错误:元素类型未定义 ``` **解决方案**: ```c struct Element { int type; float value; }; struct Element arr[10]; // 合法 ``` #### 调试建议 1. 在IAR工程中搜索错误行号定位问题代码 2. 使用Go to Definition功能追踪类型定义 3. 检查所有头文件包含链 4. 确认没有循环依赖的头文件 编译器需要知道类型的完整信息才能: - 计算sizeof大小 - 分配内存空间 - 访问成员变量 - 进行类型对齐 [^1]: 类似类型转换错误可参考浮点转整型的类型适配问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java+每天进步亿点点

一起学习一起进步一起高薪

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值