数据库实验报告之教学管理-建表10p
- 格式:docx
- 大小:83.28 KB
- 文档页数:4
点击
运行
之后,
对
“教学管理”数据库进行更新之后,发现数据库的用户表里面没有出现“教师档案”表,又
看了下实验书才知道忘记了在这个地方指定数据库了。
2.创建“课程信息”表
原来是我把SQL当成是C语言了,将最后一句改成“学时%8=0”之后,又发现了新的错误:
根据提示,将real后面的“(4)”删除之后,“课程信息”表创建成功!
3.创建的是“教学任务”表:
看了很久没看出毛病来,决定跟之前写过的SQL文件比对一下,终于发现自己的错误了!Check语句不合法。应该改成“学期int check(学期in('1','2'))”就OK啦。
4.创建“学生成绩”表:
平时成绩和期末成绩都是要精确到小数点后一位,而且对于后面“总成绩= 平时成绩*0.3 + 期末成绩*0.7”我不是很明白要怎么写。在百度看了一些,发现有跟我的问题差不多的,遂赶紧借鉴:
这里的平时成绩、期末成绩、总成绩都不能按照实验书里面写的用real型,因为real 型无法在定义中限制其位数,float和decimal型就可以,因此这里三个字段的类型全部应用该类型“decimal(3,1)”指有效位4位,小数点后一位。解决了小数点的问题之后,在定义的时候不能应用另外的一列,那将要怎么来实现“总成绩= 平时成绩*0.3 + 期末成绩*0.7”呢?翻了下书,查找了关于完整性的说明,发现可以利用constraint来解决这个问题!按照书上的说法,修改如下:
成功之后,就要建立学生选课表,在网上查找到有人对“课程ID”定义如下之后,我意识到自己之前做的有关“课程ID”的表都出现了一些错误
这里学生选课的(课程ID)是课程信息表中课程ID的外码,因为之前在课程信息表建立是这样子的:
造成两者之间长度不同。我觉得在预习实验教材的时候,有一个地方可以修改表的结构的,于是用企业管理器找到“课程信息”表中的“课程ID”试图从这里面进行修改:
但是修改之后刷新数据库,这个问题仍然存在!百度问问有类似的问题,网友解答如下:
可以修改的,只是限于不同的约束不能修改。缺省约束就可以修改,并且
不会出现错误。
主键约束、外键约束、唯一约束、检查约束~~~好像不能直接修改
最要原因是如果你要修改的这些约束所关系的表已经有数据,你修改的时
候数据库会自动检索,约束一旦改变表数据会出现不符合。在oracle里面
你如果直接用modify以上的约束将会出现SQL command not properly
因此我只能将原来的表删除,重新建立新的表。
(二)、修改表
所有的表建立成功之后,接下来的任务就是修改表了。主要是按照试验教程一步一步地做。
1.修改字段的“学生档案”表中“姓名”的数据类型varchar(16)成varchar(8);
2.为“学生成绩”表添加一个新的字段“总成绩”,类型是real,默认是NULL:
列名重复了,那么就改成,把问题解决了。
3.添加字段的取值范围
(三)、创建索引
完全是照搬书上面的例子的,不过由于我的粗心,还是有错误:
仔细一看,马上就发现了问题了!原是少了“index”!