精华内容
下载资源
问答
  • 在数据库的表定义中限制成绩属性列
    千次阅读
    2019-01-10 15:12:54

    一、选择题:

    1、在数据库系统中,保证数据及语义正确和有效的功能是 (  )

    A.并发控制  B.存取控制  C.安全控制  D.完整性控制     

    【答案:】D

    2、关于主键约束以下说法错误的是(  )

    A. 一个表中只能设置一个主键约束 B.允许空值的字段上不能定义主键约束

    C.允许空值的字段上可以定义主键约束 D.、可以将包含多个字段的字段组合设置为主键  

    【答案:】C

    3、在表或视图上执行除了(  )以外的语句可以激活触发器。

    A.Insert B. Delete C. Update D. Create         

    【答案:】D

    4、数据库的____是指数据的正确性和相容性。

    A.安全性 B.完整性 C.并发控制 D.恢复            

    【答案:】B

    5、在数据库的表定义中,限制成绩属性列的取值在0到100的范围内,属于数据的________约束。

    1. 实体完整性B、参照完整性C、用户自定义D、用户操作         
    2. 【答案:】C

    二、填空题

    1.数据库的完整性是指数据的  . ②__  

    【答案:】①实体完整性 ②参照完整性 用户定义完整性

    2实体完整性是指在基本表中,主属性不能取空值     

    【答案:】主属性不能取空值

    3、参照完整性是指在基本表中,     

    【答案:】外码可以是空值或者另一个关系主码的有效值

    4、为了保护数据库实体完整性,当用户程序对主码进行更新使主码值不惟一时,DBMS   

    【答案:】拒绝此操作

    更多相关内容
  • 学生成绩管理系统数据库设计.doc
  • 《(最新整理)学生成绩管理系统数据库设计》由会员分享,可在线阅读,更多相关《(最新整理)学生成绩管理系统数据库设计(18页珍藏版)》请人人文库网上搜索。1、完整)学生成绩管理系统数据库设计(完整)学生成绩管理...

    《(最新整理)学生成绩管理系统数据库设计》由会员分享,可在线阅读,更多相关《(最新整理)学生成绩管理系统数据库设计(18页珍藏版)》请在人人文库网上搜索。

    1、完整)学生成绩管理系统数据库设计(完整)学生成绩管理系统数据库设计编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)学生成绩管理系统数据库设计)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整)学生成绩管理系统数据库设计的全部内容。18JIANGXI AGRICULTURAL UNIVERSITY数据库课程设计报。

    2、告题目: 学生成绩管理系统数据库设计 学 院: 姓 名: 学 号: 专 业: 班 级: 指导教师: 二0一二 年 6 月目录一、需求分析31.1 需求概述31.2 功能简介3二、数据库设计32.1 确定联系集及E-R图32。2 画出E-R图42.3学生成绩管理系统总ER图5三、逻辑数据库设计阶段63.1 班级信息表(Class)73。2 学生信息表(Student)73。3 课程信息表(Course)83.4 成绩表(Score)8四、建表84。1 创建数据库84。2 创建数据表9五、数据库的运行和维护105.1 定义105。1.1 基本表的创建,建表语句105。1.2 基本表的删除115。2。

    3、 数据操作115.2.1 单表查询:115。2。2 连接查询115.2.3 操作结果集查询125。2.4 嵌套查询125。3 数据库更新操作135。3。1 插入数据135.3。2 修改数据135。3.3 删除数据135.4 为数据库建立索引145.4.1 索引的建立145.4.2 索引的删除145。5 数据库的安全性145.6 数据库的完整性155。6。1 实体完整性定义155。6。2 参照完整性定义15六、模式求精15七、总结16一、需求分析1。1 需求概述针对江西农大的成绩管理工作量大、繁杂,人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了。

    4、处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。1。2 功能简介能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。具体功能应包括:系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能. 二、数据库设计2.1 确定联系集及E-R图根据前面对系统进行的分析,已经初步了解了学生成绩管理系统的数据处理流程,找出与。

    5、系统有关的各个实体及其相互联系如下:、标示实体集:班级,课程,学生,成绩四个关系。、标示联系集:学生和班级:一个班由多个学生组成,一个学生只能归属于某个班;存在“归属的关系:N:1学生和课程:一个学生可以选修多门课程,一门课程提供给多个学生选修;存在“选修”的关系:N:M关系Score的主码是studentNo,courseNo,term显然同一个学生在同一个学期不允许修读同一门课程多次关系Course的priorCourse属性参照本关系的主码courseNo属性。这里假设一门课程最多只需要定义一门先修课程。、标示属性集:班级(班级编号,班级名称,所属学院,年级,班级人数)课程(课程号,课程。

    6、名,学分,课时数,先修课程)学生(学号,姓名,性别,出生日期,籍贯,所属班级)成绩(学号,课程号,开课学期,成绩)2。2 画出E-R图班级信息图如下:ClassclasstudentNoclassNameInstituteclassNumgrade图2-2-1班级实体集的E-R图学生信息图如下:StudentstudentNostudentNamesexclasstudentNonativebirthday图222学生实体集ER图课程信息图如下:CoursecourseNocourseNamecreditHourpriorCoursecourseHour图2-2-3课程实体集ER图成绩信息图如。

    7、下: ScorestudentNocourseNoscoreterm图224成绩实体集ER2.3学生成绩管理系统总E-R图根据上面对实体联系的分析,可以画出ER图如下:课程课程号课程名学时数学分先修课程选修归属学生成绩班级学号姓名性别班级人数数数年级所属学院班级名称班级编号成绩开课学期课程号学号出生日期籍贯N1NM1图225学生成绩管理系统总ER图三、逻辑数据库设计阶段逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本ER图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联。

    8、系转化为关系模式,如何确定这些关系模式的属性和码。设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下:课程信息表Class:(班级编号,班级名称,所属学院,年级,班级人数)学生信息表Student: (学号,姓名,性别,出生日期,籍贯,所属班级)课程信息表Course: (课程号,课程名,学分,课时数,先修课程)成绩表Score:(学号,课程号,开课学期,成绩)设计出E-R图后,可将ER图转换为数据库模式。本系统建立的数据库为“ScoreDB”,运行本系统时在库中所建立的表分别介绍如下:3.1 班级信息表(Class)字段名描述数据类型字段限制c。

    9、lassNo班级编号char(10)PrimarykeyclassName班级名称varchar(30)Not nullinstitute所属学院varchar(30)Not nullgrade年级smallintNot nullclassNum班级人数tinyintNot null3.2 学生信息表(Student)字段名描述数据类型字段权限studentNo学号char(10)Primarykey studentName姓名Varchar(30)Not null sex性别char(2)Not nullbirthday出生日期datetimeNot null native民族varchar。

    10、(30)Not nullclassNo所属班级varchar(30)Not null3。3 课程信息表(Course)字段名属 性数据类型字段权限courseNo课程号char(10)PrimarykeycourseName课程名varchar(30)Not nullcreditHour学分numericNot nullcourseHour课时数tinyintNot nullpriorCourse先修课程varchar(30)Not null3.4 成绩表(Score)字段名属 性数据类型字段权限studentNo学号char(10)PrimarykeycourseNo课程号char(10)P。

    11、rimarykeyterm开课学期char(10)Not nullscore成绩numericNot null四、建表4.1 创建数据库打开SQL工具“查询分析器”在查询窗口中键入下列SQL语句create database ScoreDB执行上述SQL语句即可新建一名为ScoreDB的数据库。4。2 创建数据表一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。数据表主要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。创建数据表的过程其实就是定义字段的过程。在此学生成绩管理系统中需要创建四个表,即班级信息表、学生信息表、课程信息表和成绩表。创建数据库后,为Sc。

    12、oreDB数据库添加数据表,步骤如下。新建查询窗口在查询窗口中键入下列SQL语句create table Class( /创建班级信息表classtudentNo char(10) primary key, /班级编号classtudentName varchar(30) not null, /班级名称institute varchar(30) Not null /所属学院grade smallint, Not null /年级classNum tinyint, Not null /班级人数) 执行上述SQL语句即可创建课程信息表相关表格create table Student( /创建学生信。

    13、息表studentNo char(10) primary key, /学号studentName varchar(30) not null, /姓名sex char(2) not null, /性别 birthday datetime not null, /出生日期native varchar(30) not null, /民族classtudentNo Char(10) not null, / /所属班级)执行上述SQL语句即可创建学生信息表相关表格create table Course( /创建教师信息表courseNo char(10) primary key, /课程号courseNa。

    14、me varchar(30) not null, /课程名creditHour numeric not null, /学分courseHour tinyint not null, /课时数priorCourse varchar(30) not null, /先修课程)执行上述SQL语句即可创建教师信息表相关表格create table Score( /创建成绩表studentNo char(10) primary key, /学号courseNo char(10) primary key, /课程号term char(10) not null, /开课学期score numeric not n。

    15、ull, /成绩)执行上述SQL语句即可创建成绩表相关表格五、数据库的运行和维护5。1 定义基本表的创建、修改及删除;索引的创建和删除.5。1.1 基本表的创建,建表语句create table Student( / 创建学生表 studentNo char(10) not null, studentName varchar(30) not null, sex char(2) not null, birthday datetime not null, native varchar(20) not null, classtudentNo Char(10) not null ,constraint。

    16、 studentPK primary key(StudentNO),constraint studentPK1 foreign key(classtudentNo)references class(classtudentNo)5。1。2 基本表的删除drop table Student5。2 数据操作5.2.1 单表查询:查询学号为“0800006”生的姓名select studentNamefrom Studentwhere studentNo= 0800006结果:5。2。2 连接查询查询学生的学号、姓名,所选课程的课程号、课程名和成绩Select Student.studentNo,St。

    17、udent.studentName,Class.classNo,Class。className,Score.scorefrom Student,Class,Score,CourseWhere Student.studentNo=Score.studentNo and Student.classNo=Class.classNo and Course.courseNo=Score。courseNo结果:5.2.3 操作结果集查询查询0700003号同学和0800002号同学共同选修的课程Select courseNoFrom ScoreWhere studentNo=0700003Intersec。

    18、tSelect courseNoFrom scoreWhere studentNo=0800002查询结果:5.2。4 嵌套查询查询选修了“CS0701”这门课的所有学生的学号、姓名、出生日期以及籍贯。Select studentNo,studentName,birthday,nativeFrom StudentWhere studentNo in(select studentNoFrom scoreWhere classNo=CS0701)查询结果:5.3 数据库更新操作5.3.1 插入数据向Student表中添加一项记录:姓名:叶问,学号:0800016,性别:男,出生年月:1992-6-。

    19、19,籍贯:南昌,班级编号:CP0802InsertInto Student(studentNo,studentName, sex,birthday,native,classNo)Values (0800016, 叶问, 男,1992-6-19, 南昌, CP0802结果:5。3.2 修改数据修改吴敏的学号为0800019Update StudentSet StudentNo=0800019Where StudentName=吴敏;5.3.3 删除数据删除所有金融学院学生的记录Delete from ClassWhere(institute=金融学院);5。4 为数据库建立索引5。4.1 索引。

    20、的建立create index studentNameSM on Student(studentName) 5。4.2 索引的删除drop index studentNameSM on Student(studentName)5。5 数据库的安全性所谓计算机系统安全性,是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件,软件及数据,防止其偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。为防止因用户非法使用数据库造成数据泄露、更改或破坏,必须采取一些安全性控制措施以保证数据库中数据的安全、可靠和正确有效。安全性控制的防范对象是非法用户和非法操作,防止他们对数据库数据的非。

    21、法存取.主要采用用户标识及鉴定,使用用户名或用户标识号来标明用户身份。用户想要对对数据库内容进行相关操作,必须申请一个用户名或用户标识号,每次登陆都必须输入该用户名以及相应正确的口令,然后系统对其进行验证,只有通过验证的用户方可对数据库进行操作.5.6 数据库的完整性5.6.1 实体完整性定义:在班级表Class中将classNo定义为主码。create table Class( /创建class表 classNo char(10) not null , className varchar(30) not null , institute varchar(30) Not null, grade。

    22、 smallint Not null, classNum tinyint null ,constraint ClassPK primary key(classNo) ) 5。6。2 参照完整性定义:在学生成绩表Score中将studentNo、courseNo定义为外码。create table Score(studentNo char(10) not null,courseNo char(10) not null,term char(10) not null,score numeric(5,1) default 0 not null,Check(Score between 0.0 and 1。

    23、00。0),Constraint ScorePK primary key(studentNo,courseNo),Constraint ScoreFK1 foreign key(studentNo)References Student(studentNo),Constraint ScoreFK2 foreign key(courseNo)References Course(courseNo)六、模式求精通常,如果能仔细分析用户的需求,并正确的识别出所有的实体集和联系集,有E-R图生成的数据库模式往往不需要太多的进一步模式求精。然而,如果一个实体集中的属性之间存在函数依赖(不包括主码的依赖关系)。

    24、,则需要根据函数依赖理论将其进行规范化。通过分析以上关系可知Course关系模式中存在一个对非主属性的函数依赖关系:courseName priorCourse,由此导致的问题是数据冗余,即每一个相同等级会员都需要存放priorCourse信息.该模式不满足BCNF范式。因此,需要对Course进行分解。依据BCNF可分解为一下两个模式:NewCourse1(classNo,courseName,creditHour,courseHour)NewCourse2 (courseName,priorCourse)七、总结本学生成绩查询系统主要参照课本,相对来说比较简单。但是由于主要以课本为依据,所。

    25、以整个设计做下来基本掌握了课本上数据库的基础操作。设计过程中我也遇到了一些问题,再向其他同学请教的过程中我收获了很多.(1)在设计表时应注意使用正确的字段类型.(2)在建表语句中,如果这个表的主键是多个属性的组合主键,则必须作为表级完整性进行定义.随着学生成绩管理类型的不断增加和成绩管理要求的不断提高,管理方面的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情。在这样的情况下有一个实用学生成绩管理系统是有其必然性的,如果能做出一个完善的学生成绩管理系统就使管理方面的工作量减少很多.总的来说,通过这次的数据库课程设计锻炼了我们的操作能力和让我们从实际上去分析一件事比较全面和对数据库设计有了更深的了解。

    展开全文
  • 实验一二数据库定义与管理报告.jsp
  • 学生成绩管理系统数据库设计.pdf学生成绩管理系统数据库设计.pdf学生成绩管理系统数据库设计.pdf学生成绩管理系统数据库设计.pdf学生成绩管理系统数据库设计.pdf学生成绩管理系统数据库设计.pdf学生成绩管理系统...
  • 文章目录0.前言1.思维导图2.基本更新—TABLE(1)插入数据—INSERT INTO① 插入元组② 插入子查询结果(2)修改数据—UPDATE SET① 修改某一个元组的值(3)删除数据 —DELETE① ...本片文章所用的表在此篇文章之
  • (1)理解并掌握数据库中的一些基本概念,包括:数据库定义、数据定义和数据类型等。 (2)理解并掌握关系型数据库标准SQL语言。 (3)掌握并熟练使用数据库的创建语句。 3.数据库完整性 (1)理解...

     数据库及数据库中表的建立实验  

    一、实验目的

    1.数据库的服务操作命令

    (1)熟悉上机环境MySQL以及Navicat。

    (2)掌握如何启动MySQL服务以及登录MySQL的方法。

    2.数据库、表的创建

    (1)理解并掌握数据库中的一些基本概念,包括:数据库的定义、数据表的定义和数据类型等。

    (2)理解并掌握关系型数据库标准SQL语言。

    (3)掌握并熟练使用数据库,表的创建语句。

    3.数据库完整性

    (1)理解关系数据库三类完整性约束的基本概念。

    (2)掌握实现实体完整性、参照完整性、用户自定义完整性的方法。

    4.数据库的安全性

    (1)掌握数据库安全性的概念。

    (2)MySql数据库的安全性需要通过账户管理来保证,掌握MySql提供的语句进行创建用户、删除用户和权限管理的操作。

    二、实验内容

    1.熟悉上机环境。

    2.建立学生-课程数据库

    其中包括以下三个表:

    学生表:Student(Sno,Sname,Ssex,Sage,Sdept)

    课程表:Course(Cno,Cname,Cpno,Ccredit)

    学生选课表:SC(Sno,Cno,Grade)

    Student

    学号Sno

    姓名Sname

    性别Ssex

    年龄Sage

    所在系Sdept

    201215121

    李勇

    20

    CS

    201215122

    刘晨

    19

    CS

    201215123

    王敏

    18

    MA

    201215125

    张立

    19

    IS

    Course

    课程号Cno

    课程名Cname

    先行课Cpno

    学分Ccredit

    1

    数据库

    5

    4

    2

    数学

     

    2

    3

    信息系统

    1

    4

    4

    操作系统

    6

    3

    5

    数据结构

    7

    4

    6

    数据处理

     

    2

    7

    PASCAL语言

    6

    4

    SC

    学号Sno

    课程号Cno

    成绩Grade

    201215121

    1

    92

    201215121

    2

    85

    201215121

    3

    88

    201215122

    2

    90

    201215122

    3

    80

    3.实现上述关系数据库的整体性约束。

    4.安全性控制——用户和权限控制:

    (1)创建名为xxxxxxxxxxx,密码为xxx的用户;

    (2)授予用户名为xxxxxxxxxxx,密码为xxx的用户使用所有数据库stu的所有权限,并允许他向其他人授予这些权限;

    (3)撤销用户xxxxxxxxxxx的所有权限;

    (4)将用户名为xxxxxxxxxxx的用户重命名为xxx;

    (5)删除用户名为xxx的用户。

    三、实验环境

    (1)Windows10系统

    (2)MySQL5.7

    (3)Navivcat MySQL:一个MySQL数据库服务器管理和开发工具。

    四、实验前准备

    (1)提前在自己的笔记本电脑上将实验所需环境安装好。

    下载MySQL5.7-->安装-->配置环境变量-->下载安装Navicat for MySQL。

    (2)理解并掌握数据库的基本概念。

    A.数据库(Database):是按照数据结构来组织、存储和管理数据的仓库,是存储在一起的相关数据的集合。

    B.数据库系统(DataBase System,DBS):是采用数据库技术的计算机系统,是由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(软件)5部分构成的运行实体。

    C.数据库管理系统(DataBase Management System,DBMS):是数据库管理系统的一个重要组成部分,是位于用户与操作之间的一层数据管理软件,负责数据库中的数据组织、数据操纵、数据维护和数据服务等。

    D.数据库常用对象:

    表:是包含数据库中所有数据的数据库对象,由行和列组成,用于组织和存储数据。

    字段:表中每列称为一个字段。

    (3)预习MySQL数据库的基本操作语句以及数据库完整性的实现方法。

    (4)预习数据库安全性控制的措施及实现。

    五、实验步骤及实验结果

    1、MySQL服务的操作命令(命令行输入):

    service mysql start|stop|restart|status

    start:启动服务

    stop:停止服务

    restart:重启服务

    status:查看服务状态

    (1)启动与关闭mysql服务器:

    启动:net start mysql

    退出:exit

    (2)连接服务器:

    mysql -uroot -pmysql

    2、数据库、表的创建

    (Navicat命令列界面,由于其环境限制,截图有一些不清晰)

    (1)查看当前服务器上管理的所有数据库:

    mysql>show databases; 

    (2)创建数据库:

    mysql>create database 库名; 

    数据库创建好后,可以使用show create database 库名;声明查看数据库 的定义。

    (3)选择数据库:

    mysql>use 库名;

    (4)查看当前选择的数据库:

    mysql> select database(); 

    (5)创建表

    注意:在创建表之前,应该先选择数据库。

    create table <表名>(

    字段名1,数据类型 [列级别约束条件] [默认值],

    字段名2,数据类型 [列级别约束条件] [默认值],

    .......

    );

    常见属性含义:

    PRIMARY KEY :主键;

    unique :唯一;

    not null/null :非空/空;

    AUTO_INCREMENT :自动加载;

    default :如果没有填写自动补写默认信息。

    A.表student

    a.创建:

    b.表结构

    B.表course

    a.创建

    b.表结构

    C.表SC

    a.创建:

    b.表结构:

    3、关系的完整性(Navicat命令列界面)

    (1)实体完整性——主键约束

    主键:能够唯一地标识表中地一条记录。

    要求:主键列的数据唯一,并且不允许为空。

    分类:单字段主键/多字段联合主键。

    A.单字段主键

    a.在定义列的同时指定主键:

    字段名 数据库类型 PRIMARY KEY [默认值]

    例:sno char(9) primary key, /*列级完整性约束条件,sno是主码*/

    b.在定义完所有列之后指定主键:

    [constraint <约束名>] primary key [字段名]

    例:primary key(sno)

    注意:

    如果发现主键设置错了,第一步,先删除主键:alter table student drop primary key;第二步,再增加主键:alter table student add primary key(sno);

    B.多字段联合主键

    primary key [字段1,字段2,......,字段n]

    例:PRIMARY KEY(sno,cno)

    (2)参照完整性——外键约束

    外键:一个表可以有一个或多个外键。其对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

    注意:定义外键后,不允许删除在另一个表中具有关联关系的行。

    作用:保持数据的一致性、完整性。

    主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表。

    从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表。

    A.创建外键:

    [CONSTRAINT <外键名> ] FOREIGN KEY 字段名1 [,字段名2,...]

    REFERENCES <主表名> 主键列1 [,主键列2,...]

    注意:一个表中不能有相同名称的外键。

    说明:参照表与被参照表可以是同一个表。

    外键:

    B.为已经添加好的数据表添加外键:

    alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

    例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id);

    (3)用户自定义完整性——以非空约束为例

    创建课程course信息表,并为其cname字段添加非空约束,代码如下:

    表的结构如下所示:

    4.安全性

    (1)创建用户CREATE USER:

    创建名为xxxxxxxxxxx,密码为xxx的用户:

    (2)权限授予GRANT:

    授予用户名为xxxxxxxxxxx,密码为xxx的用户使用所有数据库stu的所有权限,并允许他向其他人授予这些权限:

    (3)撤销权限REVOKE:

    撤销用户xxxxxxxxxxx的所有权限:

    (4)重命名用户RENAME USER:

    将用户名为xxxxxxxxxxx的用户重命名为xxx:

    (5)删除用户DROP USER:

    删除用户名为xxx的用户:

     

     

     

    展开全文
  • 3、参照教材82页例3.5、例3.6、例3.7分别建立Student、Course和SC,并录入数据库表中相应元组。 4、分别采用SQL编程模式和设计模式修改Course,为其增加一开课学期,数据类型自行定义。 5、为Course的...
  • 数据库实验一——数据库定义与操作语言实验一、实验题目二、实验内容和要求三、实验步骤(一)数据库定义实验(二)数据基本查询实验(三)数据高级查询实验(四)数据更新实验(五)视图(六)索引实验四、实验心得...

    一、实验题目

    数据库定义与操作语言实验

    二、实验内容和要求

    数据库定义与操作语言实验包含6 个实验项目,其中5 个必修实验项目, 1 个选修实验项目。其中实验项目1至5为设计型实验,实验项目6为验证型实验。
    六个实验的实验目的和内容如下:
    1.理解和掌握SQL DDL 语句的语法,特别是各种参数的具体含义和使用方法; 使用SQL 语句创建、修改和删除数据库、模式和基本表。
    2. 针对某个数据库设计各种单表查询SQL 语句、分组统计查询语句;设计单个表针对自身的连接查询,设计多个表的连接查询。
    3.针对自定义数据库,正确分析用户查询要求,设计各种嵌套查询和集合查询。
    4.针对自定义数据库设计单元组插入、批量数据插入、修改数据和删除数据等SQL语句。理解和掌握INSERT、UPDATE和DELETE语法结构的各个组成成分,结合嵌套SQL子查询,分别设计几种不同形式的插入、修改和删除数据的语句,并调试成功。
    5.针对给定的数据库模式,以及相应的应用需求,创建视图和带WITH CHECK OPTION的视图,并验证视图WITH CHECK OPTION选项的有效性。
    6.针对给定的数据库模式和具体应用需求,创建唯一索引、函数索引、复合索引等;修改索引;删除索引。设计相应的SQL查询验证索引有效性。

    三、实验步骤

    (一)数据库定义实验

    创建基本表时,为不同的列选择合适的数据类型,正确创建表级和列级完整性约束,如列值是否允许为空、主码和外码等。
    在这里插入图片描述
    这里创建了三个表,Student表中以Sno作为主码,Sname加上unique约束、Course表中Cno作为主码,Cname加上not null约束,同时引用本身的Cno(主码)为Cpno属性列(非主码)作为外码、表SC以Sno、Cno属性组作为主码,同时Sno引用自Student的主键Sno,Cno引用自Course表的主键Cno;
    数据库testdb与三个表都创建成功;
    在这里插入图片描述
    注意:数据完整性约束,可以在创建基本表时定义,也可以先创建表然后定义完整性约束。由于完整性约束的限制,被引用的表要先创建。

    (二)数据基本查询实验

    已经向三个表中填充了一些元组,可以进行基本的查询操作;
    实验重点:分组统计查询、单表自身连接查询、多表连接查询。
    2.1.查询指定列(投影)、选择 在这里插入图片描述

    2.2. 不带分组过滤条件 和 带分组过滤条件的分组统计查询
    在这里插入图片描述
    前者查询选修每门课程的选修人数,后者查询平均成绩大于等于80的学生学号与他的平均成绩,两者都用到了GROUPY BY分组查询,后者还用到HAVING过滤条件;
    在这里插入图片描述
    2.3. 两表连接 与 自身连接
    在这里插入图片描述
    两表连接查询student、sc表中Sno相同的并且将元组连接,而后者同样如此但却将相同的属性仅保留一个,从结果也可以看出;
    在这里插入图片描述
    2.4. 三表连接
    在这里插入图片描述
    可以看到,三表连接涉及到Student、Course、SC三个表,目的是将所有的学生信息查询出来,计算查询表示将查询的结果(某一列的值)经过计算得到新的值打印出来;
    在这里插入图片描述

    (三)数据高级查询实验

    针对自定义数据库,正确分析用户查询要求,设计各种嵌套查询和集合查询。
    实验难点:嵌套查询、相关子查询、多层EXIST嵌套查询。
    3.1. 相关子查询与不相关子查询
    相关子查询表示子查询的查询条件依赖于父查询,不相关子查询则相反;
    在这里插入图片描述
    第一个查询表示不相关子查询,第一步的查询确定刘晨所在的系名,第二部查询是查找所有在CS系中的学生,第一部查询嵌入到第二部查询中,先执行子查询再进行父查询;
    第二个查询是相关子查询,旨在找出每个学生查过他自己选修课程平均成绩的课程号;
    X是表SC的别名,用来表示SC的一个元组,内层循环是求一个学生所有选修课程平均成绩,至于是哪一个学生的平均成绩需要看x.Sno的值,与父查询相关;
    其中该语句的执行过程如下:
    ①外层查询中取出SC的一个元组x,将x的Sno传入内层查询
    ②执行内层查询,得到平均值,用该值代替内层查询,得到外层查询
    ③执行该外层查询
    (与刘晨同系学生)
    3.2. 谓词ANY查询 和 带EXISTS的查询
    子查询返回单值时可以用比较运算符,返回多值时要用ANY;
    EXISTS代表存在量词,带有该谓词的子查询不返回任何数据,只产生逻辑真或假。
    在这里插入图片描述
    前者为带ANY谓词的查询,查找非计算机系中比任意一个计算机系学生年纪小的学生姓名与学号。后者为带EXISITS的查询,查询所有选修了1号课程的学生。
    在这里插入图片描述
    3.3. 多层嵌套EXISTS 与 集合查询
    与EXISTS相对应的就是NOT EXISTS谓词,若内层查询结果为空,则外层的WHERE字句返回真值,否则返回假值。
    SLELE语句的查询结果是元组的集合,所以多个SELETE语句的结果可进行集合操作,包括并操作UNION、交操作INTERSET和差操作EXCEPT。
    注意,参加集合操作的各查询结果列数必须相同,对应项的数据类型也必须相同。
    在这里插入图片描述
    多层嵌套EXISTS查询,查询了全部课程的学生学号、姓名;它表达的语义为;不存在这样的课程y,学生201215122选修了y,而学生x没有选。
    集合UNION查询,查询了计算机科学系的学生与年龄不大于19岁学生的并集,简单的将两个SELETE查询结果并起来;
    在这里插入图片描述

    (四)数据更新实验

    熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改、删除操作。
    实验重点:插入、修改和删除数据的SQL。
    实验难点:与嵌套SQL子查询相结合的插入、修改和删除数据的SQL语句;利用一个表的数据来插入、修改和删除另外一个表的数据。
    4.1. 插入数据
    在这里插入图片描述
    插入操作比较简单,使用insert into语句即可;
    但需要注意的是:我们插入的信息需要满足各个表的约束条件,如UNIQUE、PRIMARY KEY条件等;
    在这里插入图片描述
    4.2. 与嵌套子查询相结合的插入
    在这里插入图片描述
    这里建立一个表dept_age用于存储各个系的平均年龄;
    然后使用与嵌套子查询相结合的插入方式对Student表按系分组求平均年龄,再把结果存入新表中;
    在这里插入图片描述
    4.3. 单条更新与批量更新数据
    在这里插入图片描述
    UPDATE语句用于修改指定表中的元组,SET自居给出的表达式的值用于取代相应的属性列值,省略WHERE则表示要修改表中所有元组。
    上面的语句中前者更新一条课程数据,将Cpno为8的元组的Cpno修改为2;
    后者省略where语句,将表中所有语句的Sage加1;
    在这里插入图片描述

    4.4.单条删除与批量删除
    在这里插入图片描述
    DELETE语句的功能是从指定的表中删除满足WHERE子句条件的所有元组,省略Where子句则表示删除表中全部元组,但表定义仍在。
    在这里插入图片描述
    在这里插入图片描述
    4.5. 带子查询的删除
    在这里插入图片描述
    子查询同样可以嵌套在DELETE语句中,用于构造执行删除操作的条件。
    上述语句为删除MBA系所有学生的选课记录。
    在这里插入图片描述
    注:对某个基本表中数据的增、删、改操作有可能会破坏参照完整性!

    (五)视图

    熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。
    实验重点:创建视图。
    实验难点:可更新的视图和不可更新的视图的区别, WITH CHECK OPTION的验证。
    5.1. 创建视图(带和不带检查选项)
    在这里插入图片描述
    与创建表的方法类似,关键字为CREATE VIEW;
    子查询可以是任意的SELECT语句,是可以包含ORDER BY子句和DISTINCT短语的;
    WITH CHECK OPTION表示对视图进行UPDATE、INSERT、DELETE操作时要保证更新、插入、删除的行满足视图定义中的谓词条件。
    第一个不带检查选项的视图是信息系学生的视图,忽略了IS_Student的列名,隐含了由子查询中三个列名组成。
    第二个带检查选项的视图是成年学生的学号、年龄组成的视图,当我们对视图数据进行更改时需要首先判断是否可行。
    在这里插入图片描述
    5.2. 验证WITH CHECK OPTION选项
    在这里插入图片描述
    我们从adult视图中删除一个元素,那么如果可以删除对应的表中的元组同样会删除;
    在这里插入图片描述
    删除失败!
    这里失败的原因在于student中的Sno 201215121已经被SC表引用作为SC表的外键了,因此不能删除;
    这里可以看出OPTION CHECK OPTION选项有效。
    5.3. 分组视图
    在这里插入图片描述
    用带有聚集函数和GROUPY BY字句查询来定义视图,这种视图成为分组视图。
    上述语句中,将学生的学号以及平均成绩定义为一个视图;
    AS语句中的SELECT语句的目标列平均成绩是通过作用聚集函数得到的,所以CREATE VIEW中必须明确定义组成S_G视图的各个属性列名。S_G是一个分组视图。
    在这里插入图片描述
    5.4. 可更新与不可更新视图
    由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。
    在这里插入图片描述
    前者将信息系学生视图IS_Student中学号为201215125的学生年龄改为19。
    在这里插入图片描述
    更新成功;
    而后一个更新是对视图S_G表中学号为201515121的学生平均成绩改为90;
    在这里插入图片描述
    可以看到,更新一个无法更新的表必然失败!
    关系数据库中,并不是所有视图都是可更新的,有些视图的更新不能唯一的有意义地转换成对相应基本表地更新。
    上面对S_G地更新无法转换成对基本表的更新,因为系统无法修改各科成绩使得平均成绩为90。

    5.5. 视图消解
    在这里插入图片描述
    视图消解就是指将对视图的操作转换成对基本表的操作。
    (视图)(表)
    两者结果相同,视图消解一致。

    (六)索引实验

    为了验证索引效果,要求实验数据集达到10万条记录以上的数据量,因此我在MySql官网中下载了employees数据库并且导入到我的本机Mysql中。
    在这里插入图片描述
    6.1.展示索引
    在这里插入图片描述
    通过SHOW函数来展示出当前表的索引;
    在这里插入图片描述
    此时有处于主键上的索引,类型为BTREE;
    6.2.唯一索引
    在这里插入图片描述
    通过指定UNIQUE字段来创建唯一索引,但是这里的emp_no并不是UNIQUE约束类型的,含有很多重复元素,因此无法创建成功:
    在这里插入图片描述
    6.3.简单索引和复合索引
    在这里插入图片描述
    简单索引就是在单列上进行创建的,而复合索引则是在两列或两列以上创建。
    在这里插入图片描述
    这里可以看到创建索引需要的时间很多,说明索引是需要消耗资源的。

    6.4.使用索引与不使用索引的对比
    在这里插入图片描述
    可以看到,这里通过ignore index字段来指示查询忽略主键,同时通过EXPLAIN来判断是否有使用索引;

    • 使用索引(EXPLAN语句查询是否使用索引)
      在这里插入图片描述

    • 不使用索引(ignore index)
      在这里插入图片描述
      可以看出,使用索引后速度是不使用索引的27倍左右,提高的效率百分比为276.3%;

    四、实验心得

    本次实验通过实践学习了书本上对于数据库的DDL语句的语法、使用SQL 语句创建、修改和删除数据库的语句,SQL 查询语句,SQL嵌套查询和集合查询等各种高级查询,SQL语句对数据库进行数据的插入、修改、删除操作,创建视图和带WITH CHECK OPTION的视图,尤其是掌握索引设计原则和技巧,能够创建合适的索引以提高数据库查询,收获巨大。
    不过碍于实验内容过多,最近太忙,不能非常完整的完成每一个实验所涉及的所有细节,比较遗憾,希望下次实验有充足的时间进行设计、修正。

    展开全文
  • 2.在数据库表定义中限制成绩属性列的取值0到100的范围内,属于数据的(  )约束。 编号 选项 A 实体完整性 B 参照完整性 C 用户自定义完整性 D 用户操作 3.有一个关系:学生(学号,姓名...
  • 实验2--数据库数据库表的建立.doc
  • 7.3.0 视图 视图(VIEW)也被称作虚,即虚拟的,是一组数据的逻辑表示,其本质是对应于一条SELECT...从数据库系统内部来看,视图是由一张或多张表的数据组成的,从数据库系统外部来看,视图就如同一张一样,对表
  • 掌握数据库设计基本方法及数据库设计工具; 掌握综合运用数据库原理、方法和技术进行数据库应用系统分析、设计和SQL实现关键功能的能力。 2、实验主要内容 掌握数据库设计基本步骤,包括数据库概念结构设计、逻辑...
  • 数据库原理实验授课计划与要求》
  • 学生成绩管理系统数据库设计说明.doc
  • 专题资料(2021-2022年)Server数据库表的创建与管理一.ppt
  • 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能 〇、本文所用数据库表格: 一、关系运算:         关系运算,数学名词,基本运算有两类:一类是传统的集合...
  • 数据库表的创建

    2015-01-04 22:35:09
    创建数据库,主要用于实验。欢迎下载。
  • 知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。 1、数据相关的一些概念 1.1 数据库里的数据是如何保存的? 数据库...
  • 数据库(三) 建立联系-外键

    千次阅读 2021-02-06 11:48:42
    1.理解之间建立关系的必要性比如我们建立了一张个人信息,把所有人的信息都存在这张表这张表有老师和他们所属的部门,并且不同的部门工作也是不同的所有数据存放一张表中的弊端1.组织结构不清晰2.浪费...
  • 高校学生成绩管理系统主要提供成绩管理和查询,系统框架分为五个模块,学生管理,课程管理,成绩管理,教师管理,系统管理:
  • 目录1.SQL概述2.数据定义与修改3.查询操作3.1简单查询3.2联接查询3.3嵌套查询 1.SQL概述 2.数据定义与修改 3.查询操作 3.1简单查询 3.2联接查询 3.3嵌套查询
  • 数据库中的所有行都具有一个非空且没有重复的主键值MSSQL通过唯一索引、PRIMARY KEY约束、UNIQUE约束、INDENTITY属性等来强制主键的唯一性域完整性又叫完整性,以保证数据的输入具有正确的数据类型、格式和...
  • 关系数据库 简介:提出关系模型的是美国IBM公司的E.F.Codd1970年提出关系数据模型E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, ...—从用户角度,关系模型数据的逻辑结构是一张二维
  • 数据库实验指导书数据库实验 实验3 管理数据库 实验4 用T-SQL创建实验6 数据的复制与恢复 实验8 常规数据查询 实验10 视图与索引 实验4 存储过程实验9数据库安全
  • 数据库原理与应用》(孟凡荣 闫秋艳)课后习题答案.doc
  • 关于数据库安全管理,深入理解数据库安全的概念。理解SQL Server 的安全体系框架。关于数据库安全管理,深入理解数据库安全的概念。理解SQL Server 的安全体系框架。
  • 第3章 数据库的创建和使用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,276
精华内容 5,710
关键字:

在数据库的表定义中限制成绩属性列