主要内容索引:一、实验名称二、实验目的三、实验内容四、实验注意事项五、实验数据描述六、实验步骤七、实验结果八、实验中出现的问题一、实验名称关系数据库创建二、实验目的*掌握并学会相对熟练使用SQLsever基础操作*复习关系数据库中数据的定义、更新和查询相关功能三、实验注意事项1、注意插入数据时数据字段的数据类型和长度,避免截断2、删除数据或修改数据时看是否有外键关联四、实验内容以奥斯卡提名的奖项和演员为数据库实体和联系,创建关系数据库,并导入数据,并构造相关数据查询解决相关问题。五、实验数据描述1.1936-2014年奥斯卡提名和获奖数据已以三个txt格式文档提供,它们是:categories、people、nominations。2.2014年至今的奥斯卡提名和获奖数据可在豆瓣上查看,其网址为https://movie.douban.com/awards/Oscar/nominees六、实验步骤步骤一:创建名为Oscar的数据库①右击“数据库”→新建数据库→令数据库名称为OSCAR②或通过CREATEDATEBASE语句创建步骤二:创建奖项关系、演员关系、提名关系奥斯卡提名数据库的实体和联系如上所示,基于上图创建categories、people和nominations关系。提名关系的关系模式为(id,year,catId,personId,title,characterName,won)。其中,每一行对应着演员people(id)的一项归类于categories(id)的提名。id为提名表的主键;won是一个bit型变量,其值为'1'当且仅当该项提名最终通过;否则为'0';characterName是演员在电影(title)中饰演的角色名。奖项关系只包含4类奖项:"BestActor","BestActress","BestSupportingActor","BestSupportingActress",即最佳男主角、最佳女主角、最佳男配角、最佳女配角。创建奖项关系、演员关系、提名关系有两种方法:一、①在第一步已经创建好的OSCAR数据库中右击”表”→新建表→设置列名、数据类型、是否为空值→将“ID”设为主键→在属性窗口将“ID”设为标识列→命名并保存此表。②另需在nominations表中将“personId”、“catId”设置为外键。(在nominations表中右击“键”→新建外键→保存)二、通过CREATETABLE语句创建,以people表为例,categroies和nominations表同理可得。步骤三:插入最新几年的提名和最终获奖数据在豆瓣上查看2014年至今的奥斯卡提名和获奖数据并整理成文档,将其插入到历史数据中,本实验是在EXCEL中实现插入新数据的环节,在插入数据时要注意主键(ID)唯一的原则。步骤如下:步骤四:导入数据右击数据库OSCAR→任务→导入数据→进入“SQLsever导入与导出向导”→设置相应的数据源→“编辑映射”中勾选”启用标识插入”(文件格式为.txt或.csv数据源为平面数据源、文件格式为xls等Excel格式的数据源为MicrosoftExcel)(步骤四与步骤三顺序可以调换,可在SQLsever中先导入历史数据再使用INSERT语句插入新数据)步骤五:构造SQL语句实现数据查询与分析①列出所有的奖项,结果的每一行由二元组(id(奖号),name(奖项名))组成,并按照奖项名排序(排序顺序为SQL语句默认的顺序)。②列出在1990年所有提名电影中独一无二的电影名字(title),按照字典序排列。③列出所有人中出现次数最多的名字(firstName)以及该名字出现的次数。结果的每一行由二元组(firstName,popularity(该名字出现的次数))组成。如果出现次数最多的名字不止一个,则按照字典序输出第一个。④超级电影:列出奥斯卡历史上提名次数最多的电影名字。结果的每一行由二元组(title(电影名),year(年份))组成。如果存在不止一个这样的电影,列出所有的结果,并按照电影名字排序。当提名次数最多的电影唯一时,SQL语句如上。但如果存在多个这样的电影,则需max函数和count函数的复合使用,来直接求得COUNT(*)的最大值。MAX函数无法直接查询COUNT(*),但是可以建立innerquery,再从中查询。运用在本题情况下SQL语句如下:(参考网址:https://blog.csdn.net/qin_ex/article/details/78279777)⑤列出2000-2002年之间提名最佳男主角中独一无二的姓氏(lastName),并按照字典序排序。⑥列出从未最终获奖演员中提名次数最多的演员。结果的每一行由三元组(firstName(名字),lastName(姓氏),num_count(提名次数))组成。如果...