数据库原理及应用实验报告 7
数据库原理及应用实验报告
数据库原理及应用实验报告数据库原理及应用实验报告一、引言数据库是计算机科学中的重要概念,它是用于存储、管理和检索大量有组织数据的系统。
数据库的应用广泛,从个人电脑上的简单数据文件到大型企业级数据仓库,都离不开数据库的支持。
本实验报告将介绍数据库的原理和应用,并通过实际实验来验证其有效性。
二、数据库原理1. 数据库的定义和特点数据库是一个有组织的数据集合,它具有持久性、共享性、独立性和可变性等特点。
持久性指数据可以长期保存;共享性指多个用户可以同时访问和使用数据库;独立性指数据库的逻辑结构和物理结构相互独立;可变性指数据库可以随时更新和修改。
2. 数据库管理系统(DBMS)数据库管理系统是用于管理数据库的软件,它提供了数据定义、数据操纵、数据控制和数据查询等功能。
常见的DBMS有MySQL、Oracle和SQL Server等。
3. 数据库模型数据库模型是用于描述数据库的结构和组织方式的概念模型。
常见的数据库模型有层次模型、网络模型和关系模型等。
其中,关系模型是最为常用的模型,它使用表格来表示数据,表格中的每一行表示一个记录,每一列表示一个属性。
三、数据库应用实验为了验证数据库的应用效果,我们进行了以下实验。
1. 数据库设计首先,我们根据实际需求设计了一个简单的学生信息管理系统。
该系统包含了学生的基本信息、课程信息和成绩信息。
2. 数据库创建在MySQL数据库中,我们创建了一个名为"student"的数据库,并在其中创建了三张表格,分别是"student_info"、"course_info"和"score_info"。
3. 数据库插入通过SQL语句,我们向数据库中插入了一些样本数据,包括学生的姓名、学号、课程名称和成绩等信息。
4. 数据库查询为了验证数据库的查询功能,我们编写了一些SQL查询语句,如查询某个学生的所有成绩、查询某门课程的平均成绩等。
数据库技术与应用实验报告
数据库技术与应用实验报告一、实验目的本次实验的主要目的是深入了解数据库技术的基本原理和应用,通过实际操作掌握数据库的创建、管理、数据操作以及查询优化等方面的技能。
同时,培养解决实际问题的能力,提高对数据库系统的综合运用水平。
二、实验环境本次实验使用的软件环境为 MySQL 数据库管理系统,操作系统为Windows 10。
三、实验内容与步骤(一)数据库创建1、打开 MySQL 客户端,使用以下命令创建数据库:```sqlCREATE DATABASE database_name;```其中,`database_name` 为自定义的数据库名称。
2、使用以下命令选择创建的数据库:```sqlUSE database_name;```(二)表的创建1、根据实验要求,设计表结构,包括字段名、数据类型、约束条件等。
例如,创建一个名为`students` 的表,包含`id`(整数类型,主键)、`name`(字符串类型)、`age`(整数类型)字段,使用以下命令:```sqlCREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```(三)数据插入1、使用`INSERT INTO` 语句向表中插入数据。
例如,向`students` 表中插入一条记录:```sqlINSERT INTO students (id, name, age) VALUES (1, '张三', 20);```(四)数据查询1、使用`SELECT` 语句进行简单查询,获取表中的数据。
例如,查询`students` 表中所有记录:```sqlSELECT FROM students;```2、使用条件查询,获取符合特定条件的数据。
例如,查询年龄大于 18 岁的学生记录:```sqlSELECT FROM students WHERE age > 18;```(五)数据更新1、使用`UPDATE` 语句更新表中的数据。
《数据库原理及应用》实验报告
《数据库原理及应用》实验报告SQL语句部分总成绩:实验一熟悉SQL SERVER,数据定义实验实验一成绩:一、实验目的1、利用查询分析器创建数据库2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作二、实验步骤及内容在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生课程数据库5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
7、删除表S的“年龄”属性列。
8、删除S姓名列的唯一值约束。
9、修改SC表成绩属性列为精确数字型。
10、在表S上,按“Sno”属性列的唯一值方式建立索引。
11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。
三、实验结果:1.创建学生课程数据库create database Studend;(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage smallint,Sdept char(20),);3.创建课程关系表C :课程号课程名先行课学分Cno Cname Cpno ccreditcreate table C(Cno char(4)primary key,Cname CHAR(40),Cpno char(4),Ccredit SMALLINT,);4.创建课程关系表SC :学号课程号成绩Sno Cno grade create table SC(Sno char(9),Cno char(4),Grade smallint,);5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
alter table S add Sbirthday datetime;7、删除表S的“年龄”属性列。
数据库原理及应用实验报告 7
实验成绩《数据库系统原理及应用》实验报告七专业班级: 计算机科学与技术学号: 201116910233姓名: 范晓曈指导教师: 苏小玲2013年11 月28 日实验七名称:SQL Server触发器和游标一、实验内容及要求(使用教材建立的student、course和sc表实现)1、创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
任务2:限制每个学期所开设的课程总学分在20~30范围内。
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)任务4:限制不能删除有人选的课程2.创建满足下述要求的游标任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。
任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。
任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。
要求按教材11-21所示样式显示结果数据。
二、实验目的掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。
三、实验步骤创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
create trigger tri_limitedepton student after insert,updateasIF EXISTS(SELECT*FROM INSERTEDWHERE sdept!='计算机'and sdept!='信息管理系'and sdept!='数学系'and sdept!='通信')ROLLBACKinsert into studentvalues(001,'一','女','通信工程系','1991-01-01','JA V A','5.0')任务2:限制每个学期所开设的课程总学分在20~30范围内。
数据库原理与应用实验报告
《数据库原理及应用》
实验报告
一、实验目的
掌握多表连接查询的方法
二、实验要求
三、实验结果
1、采用自然连接的方法,列出每个学生及其班级的详细情况。
2、采用自连接的方法,查找不同课程成绩相同的学生的学号、课程和成绩。
3、采用复合条件连接方法,查找选修了“汇编语言”课程且成绩在70分以上的学生的学号/姓名/课程名/成绩。
4、查找每个学生的基本情况以及班级情况。
5、查找选修了课程编号为“2”的课程且成绩在60分以上的学生的姓名和成绩。
6、查找选修了“汇编语言”课程且成绩在70分以上的学生的学号/姓名/课程名/成绩。
7、查找不同课程成绩相同的学生的学号/课程号/成绩。
8、采用左外连接,查找200001班所有学生的学号/姓名以及他们选修的课程号,同时也列出该班没选课的学生的学号/姓名。
9、采用右外连接,查找所有学生的学号/姓名以及他们选修的课程号,同时也列出没选课的学生的学号/姓名。
10、使用子查询来查询学生“张小强”所在的班级。
11、查找选修了课程号为13的课程的学生情况。
12、查找200001班没选修课程号为13的课程的学生情况。
13、创建表stu,包括学号/姓名/性别/家庭住址,然后将student_info表中相应字段信息全部插入到stu中,最后显示插入的记录。
14、将200001边的全体学生的成绩加10分。
15、删除没选修任何一门课的学生的信息。
数据库应用基础实验报告7
数据库应用基础实验报告
实验七存储过程创建与应用
班级 2009123 学号 2009 姓名
一、实验目的
使学生理解存储过程的概念, 掌握创建存储过程的使用、执行存储过程和查看、修改、删除存储过程的方法。
二、实验内容
(1)利用SQL Server ManagementStudio创建存储过程book_db, 要求实现如下功能: 在“图书信息系统”数据库中查询书名中包含“数据库”3个字的图书的图书编号和名称;调用存储过程book_db;
(2)利用SQL命令窗口创建名为proc_exp的带参存储过程, 要求实现: 从图书表中返回指定图书编号的图书的所有信息。
调用存储过程proc_exp, 输入图书编号, 显示图书的所有信息。
(3)修改存储过程proc_exp, 为按照图书的书名精确匹配查找图书信息。
(4)删除刚刚创建的book_db和proc_exp两个存储过程。
三、问题讨论
1. 相比在本地存储SQL程序, 使用存储过程有什么优点?
答:1, 允许标准组件式编程;2, 能够实现较快的执行速度;3, 减少网络流量;4, 可以作为一种安全机制来充分利用。
2. 触发器的作用是什么?
答: 触发器的作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。
数据库原理及应用实验报告
数据库原理及应用实验报告一、实验目的通过本次实验,深入理解数据库的原理与应用,掌握数据库的基本操作和常见应用场景。
二、实验内容1.数据库的基本概念与原理:关系型数据库与非关系型数据库的区别,数据库的组成要素,关键概念解释等。
2. 数据库的设计与建模:根据需求设计数据库的ER图,熟悉数据库建模工具的使用,如Eclipse、PowerDesigner等。
3.数据库语言与操作:学习SQL语言,包括数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)等,通过SQL语句对数据库进行增删改查操作。
4.索引的使用与优化:了解数据库索引的原理和作用,学习索引的创建、使用和优化技巧,提高数据库查询性能。
5.数据库的备份与恢复:掌握数据库的备份与恢复的方法,学会使用数据库备份工具进行数据的完整备份和恢复操作。
三、实验步骤1.确定数据库需求,设计ER图。
2.使用数据库建模工具创建数据库表,定义字段和关系。
3.使用SQL语句创建数据库和表结构。
4.插入数据并进行增删改查操作,验证数据库的正常使用。
5.创建索引并对查询语句进行优化,提高查询性能。
6.使用数据库备份工具进行数据备份,测试数据的完整恢复。
四、实验结果与分析本次实验中,我选择了一个简单的学生管理系统作为实验的对象。
首先,根据需求设计了ER图,确定了数据库表的结构和关系。
然后使用数据库建模工具创建了对应的数据库表。
接下来,使用SQL语句对数据库进行了初始化和插入数据,并通过增删改查操作验证了数据库的正常使用。
在插入大量数据后,使用索引对查询语句进行了优化,提高了查询性能。
最后,使用数据库备份工具对数据进行了完整备份,并进行了测试恢复操作,确保数据的可靠性和完整性。
通过本次实验,我深入了解了数据库的基本概念与原理,掌握了数据库的设计与建模技巧。
同时,我也学会了使用SQL语言进行数据库的增删改查操作,并掌握了索引的使用和优化方法。
数据库的备份与恢复操作也让我加深了对数据库安全性的认识。
数据库原理及应用实践报告
数据库原理及应用实践报告1 数据库功能描述基本实现学生信息的管理,包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。
2 数据库设计2.1 系统需求分析通过设计一个简单学生成绩管理系统来方便成绩的管理,主要内容是能够在学生表、教师表、班级表、课程表、成绩表等添加记录;能够查询到学生基本情况、全局情况(浏览表)、按学生查询、课程浏览、多项组合查询等功能;能够统计按个人统计成绩、按单科成绩统计成绩等;能够修改课程信息、学生信息、成绩信息等。
最后通过主表单或顶层表单的菜单等方法将各模块表单合理地连接,形成完整的系统。
整个系统中包含四个功能模块:添加模块、查询模块、统计模块、修改模块。
2.2 数据库逻辑结构设计3 数据库实施3.1 数据库架构图3.2 数据表生成脚本初始数据录入脚本学生数据表如表1所示。
表1学生数据表(student.dbf)字段名类型宽度索引索引名索引类型索引表达式学号字符型10 升序学号主索引学号姓名字符型8性别字符型 2出生日期日期型8班级字符型 4 升序班级普通索引班级表2班级数据表(classes.dbf)字段名类型宽度小数位索引索引名索引类型索引表达式班级字符型 4 升序班级主索引班级年级x 字符型 2专业字符型10系代码字符型 1学制字符型 1类型字符型 4表3教师数据表(teacher.dbf)表4课程数据表(course.dbf)表5 学习成绩数据表(score.dbf)3.3初始录入脚本4 应用程序设计表一:登录用户名和密码存放在数据表中,使用时不能连续输入错误3次的登录表单。
步骤为:1、首先在项目管理器的界面中选择创建一个表单,命名为:登陆.Scx2、在空白表单界面上用常用工具绘制相应控件,属性如下图所示:表单中对象的属性设置其中需要在表单的数据环境中添加密码表。
密码表设有两个字段,YHM和MM。
3、为对象添加代码。
在form1的load事件中添加public nn=0Command1的click事件locate for alltrim(mm.yhm)==alltrim(bo1.value)if found()if alltrim(thisform.text1.value)==alltrim(mm.mm)thisform.releasedo form 主控表单.scxelsemessagebox('你输入的密码不正确,请重新输入',48,'登录信息')thisform.text1.value=''n=n+1if n=3messagebox('登录失败!',16,'提示信息')quitendifendifelsemessagebox('对不起,你不是合法用户')endifCommand2的click事件bo1.value=''thisform.text1.value=''Command3的click事件answer=messagebox('确认退出吗?',1+32+0,'确认退出')if answer=1thisform.releasequitendif表二:以表单向导开发信息录入新表单。
《数据库原理及应用》实验报告带答案
实验课程:数据库原理及应用学号:学生姓名:班级:年月日实验1 创建和维护数据库一、实验目的(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。
(2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。
(3)了解手工配置MySQL 5.5 的方法。
(4)掌握MySQL 数据库的相关概念。
(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。
(6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。
二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;(3)1~2人为1小组,实验过程中独立操作、相互学习。
三、实验内容及步骤(1)在Windows 平台下安装与配置MySQL 5.5.36 版。
(2)在服务对话框中,手动启动或者关闭MySQL 服务。
(3)使用Net 命令启动或关闭MySQL 服务。
开始--运行--cmd--输入“net start mysql”回车,启动成功;输入“net--stop--mysql”回车,停止。
(4)分别用Navicat 工具和命令行方式登录MySQL。
①打开Navicat for MySQL,文件--新建连接--确定。
②开始--运行--cmd,输入mysql -h hostname(如果服务器在本机,可以输入localhost或127.0.0.1)user -p 回车后,系统会提示“Enter password”,输入配置的密码就可以登录上了。
(5)创建数据库。
①使用Navicat 创建学生信息管理数据库gradem。
②使用SQL 语句创建数据库MyDB。
①打开Navicat for MySQL,文件--新建连接--常规(设置连接名MySQL,主机名localhost)。
②使用Windows命令行方式登录MySQL,然后输入CREATE DATABASE mydb;回车,显示Query OK, 1 row affected (0.00 sec)创建成功。
《数据库原理及应用》实验报告 创建数据库和表
《数据库原理及应用》实验报告创建数据库和表题目:创建数据库和表学生姓名:XXXX1(《数据库原理及应用》实验报告一、实验目的在了解SQL Server 数据库的逻辑结构,物理结构,基本数据类型,以及表的结构特点的基础上,学会在“对象资源管理器”中创建数据库和表,重点学会使用T-SQL语句创建数据库和表。
二、实验内容按照题目要求创建一数据库,并按要求在该数据库内创建相应数据表。
在创建过程中需分别使用界面方式创建和命令方式创建。
实验题目创建用于企业管理的员工管理数据库YGGL,其逻辑文件初始大小10MB,最大50MB,自动增长,按5%比例增长,日志文件初始大小2MB,最大5MB,按1MB增长,数据库和事务日志的逻辑文件名和物理文件名采用缺省值,另在该数据库内创建3个数据表,Employees表,Departments表,Salary表,具体表结构见课本P-283页所给出三个表格。
实验准备首先明确创建数据库的用户必须是系统管理员或者是被授予使用CREATEDATABASE语句的用户;其次创建过程中必须确定数据库名,所用者,数据库大小和存储其文件;最后根据表的结构按要求创建表;三、实验程序使用T-SQL语句创建数据库YGGL:CREATE DATABASE YGGL ON (NAME='YGGL_Data',FILENAME='C:\\Program Files\\Microsoft SQLServer\\MSSQL.1\\MSSQL\\Data\\YGGL.mdf', SIZE=10MB, MAXSIZE=50MB, FILEGROWTH=10% ) LOG ON (NAME='YGGL_Log',FILENAME='C:\\Program Files\\Microsoft SQLServer\\MSSQL.1\\MSSQL\\Data\\YGGL_Log.ldf', SIZE=2MB, MAXSIZE=5MB, FILEGROWTH=1MB ) GO使用T-SQL语句创建Employees表:USE YGGL GOCREATE TABLE Employees( EmployeeID char(6)NOT NULL PRIMARY KEY, Name char(10)NOT NULL, Education char(4)NOT NULL, Birthday datetime NOT NULL, Sex bit NOT NULL DEFAULT 1,2WorkYear tinyint NULL, Address varchar(40)NULL, PhoneNumberchar(12)NULL, DepartmentID char(3)NOT NULL, ) GO使用T-SQL语句创建Departments表:USE YGGL GOCREATE TABLE Departments( DepartmentID char(3)NOT NULL PRIMARY KEY, DepartmentName char(20)NOT NULL, Note char(100)NULL ) GO使用T-SQL语句创建Salary表:USE YGGL GOCREATE TABLE Salary( EmployeeID char(6)NOT NULL PRIMARY KEY, InCome float NOT NULL, OutCome float NOT NULL ) GO四、实验结果实验通过编写程序最终获得一新的数据库以及在该库内的三个空表如下图:Employees表Departments表Salary表3五、实验总结这学期是第一次接触SQL Server,在最初的学习过程中对SQL Server环境不是很熟悉,在课堂上学习了有关它的基本的数据类型,空值的概念,数据库的基本概念以及和数据表的相关知识,在未进行上机实验之前主要对理论知识进行掌握,但感觉不是很明白,当开始进行上机实验后,按照老师课上讲的基本操作在结合课本的相关知识,能在老师和同学的帮助下完成实验内容,我感觉很充实。
数据库原理与应用实验报告
数据库原理与应用实验报告《数据库原理与应用实验报告》一、实验目的本次实验旨在通过数据库原理与应用的实验,加深对数据库概念、结构、设计和应用的理解,掌握数据库的基本操作和SQL语言的应用。
二、实验内容1. 数据库的创建与管理2. 数据库表的设计与创建3. 数据库表的增删改查操作4. SQL语句的应用三、实验步骤1. 创建数据库在MySQL中创建一个名为“student”的数据库。
2. 创建表在“student”数据库中创建一个名为“student_info”的表,包括学生ID、姓名、性别、年龄等字段。
3. 插入数据向“student_info”表中插入若干条学生信息数据。
4. 查询数据使用SQL语句查询“student_info”表中的数据,并进行条件查询、排序、分组等操作。
5. 更新数据使用SQL语句更新“student_info”表中的数据。
6. 删除数据使用SQL语句删除“student_info”表中的数据。
四、实验结果通过本次实验,我们成功创建了一个名为“student”的数据库,并在其中创建了一个名为“student_info”的表。
我们通过SQL语句对表中的数据进行了增删改查操作,并取得了预期的实验结果。
五、实验总结通过本次实验,我们深入了解了数据库的基本概念和操作,掌握了SQL语句的应用,提高了对数据库原理与应用的理解和掌握程度。
这将为我们今后的数据库应用和开发工作奠定坚实的基础。
六、实验感想通过本次实验,我们对数据库的重要性有了更深刻的认识,也意识到了数据库在各行各业中的广泛应用。
我们将继续学习和探索数据库技术,不断提升自己的数据库应用能力,为今后的工作打下坚实的基础。
《数据库原理与应用》实验报告
一、实验目的1、使用企业管理器和T-SQL 语句创建和管理数据库。
2、熟练掌握使用企业管理器和T-SQL 语句创建、修改和删除表。
3、熟练掌握使用企业管理器和T-SQL 语句插入、修改和删除表数据。
4、牢记SELECT语句的基本语法格式;5、熟练掌握使用SQL语句进行单表查询,尤其要熟练掌握GROUP BY子句、HAVING子句和集聚函数;6、牢记SELECT语句的基本语法格式;7、熟练掌握使用SQL 标准语句和T-SQL 扩展语句进行连接查询。
8、熟练掌握IN子查询9、熟练掌握比较子查询和EXISTS子查询二、实验内容实验一1、利用企业管理器创建产品销售数据库CPXS。
Create datebase CPXS;2、CPXS数据库包含如下三个表:1、CP(产品编号,产品名称,价格,库存量)产品CREATE TABLE CP(产品编号 CHAR(6) NOT NULL,产品价格 CHAR(30) NOT NULL,价格 FLOAT(8),库存 INT)2、XSS(客户编号,客户名称,地区,负责人,电话)销售商CREATE TABLE XSS(客户编号 CHAR(6) NOT NULL,客户名 CHAR(30) NOT NULL,地区 CHAR(10),负责人 CHAR(8),电话 CHAR(12))3、CPXSB(产品编号,客户编号,销售日期,数量,销售额)产品销售表CREATE TABLE CPXSB(产品编号 CHAR(6),客户编号 CHAR(6),销售日期 DATETIME,数量 INT,销售额 FLOAT(8))4、用T-SQL语句向CP表插入如下记录:INSERT INTO cp VALUES("200001","柜式空调",3000,200);INSERT INTO cp VALUES("200002","微波炉",1000,100);INSERT INTO cp VALUES("200003","抽油烟机",1200,50)5、用T-SQL语句向CP表中增加“产品简介”列,varchar(50),允许为NULL 。
数据库原理及应用实践报告
数据库原理及应用实践报告一、引言数据库是现代计算机科学领域中一种重要的数据结构,广泛应用于各个领域的信息管理和数据处理中。
数据库的原理和应用实践对于科学家和工程师来说都是必备的知识。
本报告主要介绍数据库的原理和一些常见的应用实践。
二、数据库的原理1.数据库的定义数据库是一个用于存储和管理数据的集合。
它提供了一种统一的方式来组织和访问数据,使得数据的存储和检索更加高效和方便。
2.数据库的特点数据库具有以下几个特点:(1)数据持久性:数据库中的数据是持久存储的,即使系统崩溃或断电,数据也不会丢失。
(2)数据共享性:数据库可以被多个用户共享,不同的用户可以对数据进行并发访问和操作。
(3)数据独立性:数据库中的数据与程序和存储介质无关,可以独立于具体的应用程序进行操作。
(4)数据安全性:数据库提供各种机制来保证数据的安全性,如用户权限管理、数据加密等。
3.数据库的模型数据库根据数据的组织方式可以分为不同的模型,常见的数据库模型有层次模型、网络模型和关系模型。
关系模型是最常用的模型,它将数据组织成表格的形式,便于理解和操作。
4.数据库的查询语言数据库查询语言是用户与数据库之间进行交互的一种方式,常见的查询语言有结构化查询语言(SQL)。
SQL提供了一种简单而强大的方式来操作数据库,包括数据的插入、查询、更新和删除等操作。
三、数据库的应用实践数据库在各个领域都有广泛的应用,下面介绍一些常见的应用实践:1.企业管理系统企业管理系统是一种集成了多个管理模块的系统,包括人力资源管理、财务管理、供应链管理等。
数据库作为企业管理系统的核心组件之一,负责存储和管理各种业务数据,支持各个模块之间的数据共享和协作。
2.社交网络社交网络是一种基于互联网的交流和分享平台,如Facebook、微博等。
数据库在社交网络中起到存储用户信息、关系网络等功能,支持用户之间的信息交流和关系管理。
3.电子商务数据库在电子商务中扮演着重要的角色,用于存储和管理商品信息、订单信息、用户信息等。
数据库原理与应用实验7(二版)
数据库原理与应用实验7(二版)实验七 T-SQL数据库多表查询一、实验目的及要求本实验主要目的是让学生掌握从多个表中查询数据的方法,并能根据业务要求书写出各种查询语句。
具体要求有:●掌握基于多个表的查询●掌握等值查询●掌握各种连接查询使用●掌握子查询●掌握相关子查询概念和使用●要求每个实验内容都要有结果。
●要求尽量为实验内容给出不同的实现方式。
二、实验原理及背景知识1、了解SQL中子查询和连接查询概念。
详情参考第一篇第三章。
2、理解关系代数中连接运算和除法运算的概念及原理。
3、实验前需要了解所使用的数据库中表的结构。
4、实验前需要在stuManage数据库中输入模拟数据。
5、内连接的实现可有用INNER JOIN或WHERE AND来实现,二者雷同,本实验主要使用WHERE AND 进行连接。
三、实验内容及步骤Ⅰ:基本实验内容(一)输入下面的查询语句,执行后验证实验结果1、查询每个学生的学号、姓名、性别、专业名称等信息SELECT sno,sname,ssex,mname,dnameFROM student sINNER JOIN Major m ON s.mno=m.mnoINNER JOIN department d ON d.dno=m.dno2、查询每个学生的学号、姓名、性别、专业名称等信息SELECT sno,sname,ssex,mname,dnameFROM student s,major m,department dWHERE s.mno=m.mno AND d.dno=m.dno3、查询每个学生的学号、姓名及不及格课程门数SELECT skc.sno AS ‘学号’,sname AS ‘姓名’,COUNT(*) AS ‘没有及格的门数’FROM skc,student AS sWHERE grade<60 AND s.sno=skc.snoGROUP BY skc.sno,sname4、查询学生的学号、姓名及不及格课程名称SELECT skc.sno AS ‘学号’,sname AS ‘姓名’,/doc/c715745487.html,ame AS‘不及格课程’FROM student s,skc,kaike k,course cWHERE skc.grade<60 AND skc.sno=s.sno AND skc.kno=k.kno AND /doc/c715745487.html,o=/doc /c715745487.html,o5、查询计算机科学与技术专业每个班级的学生人数SELECT LEFT(s.sno,7), COUNT(*) AS 人数FROM student s,major mWHERE m.mname=‘计算机科学与技术’ AND s.mno=m.mnoGROUP BY LEFT(s.sno,7)6、查询选修了开课号为0324091007的这门课,且成绩比该课程的平均分高的同学及其成绩SELECT s.sno,sname,gradeFROM student s,skcWHERE st.sno=skc.sno AND kno=0324091007’AND grade>=(SELECT AVG(grade) FROM skc WHEREkno=‘0324091007’ )7、查询同时选修了0324091007和0312091006这两个开课号课程的学生SELECT sno,snameFROM studentWHERE EXISTS(SELECT *FROM skcWHERE skc.sno=student.sno AND kno=‘0324091007’ )AND EXISTS(SELECT *FROM skcWHERE skc.sno=student.sno AND kno=‘0312091006’ )8、查询没有选修kno=‘0312091006’这门课程的学生信息SELECT sno,snameFROM studentWHERE NOT EXISTS(SELECT *FROM skcWHERE student.sno=skc.sno AND kno=‘0312091006’ )9、查询0817101班同学所选的课程的开课号及平均成绩SELECT skc.kno,AVG(skc.Grade ) as ‘平均分’FROM student s,skcWHERE s.sno=skc.sno AND s.sno like ‘0817101%’GROUP BY skc.kno10、选修了全部所开课程的学生名SELECT sno,snameFROM studentWHERE NOT EXISTS(SELECT *FROM kaikeWHERE not EXISTS(SELECT *FROM skcWHERE student.sno=skc.sno AND skc.kno=kaike.kno ) )(二)输入下面查询语句,然后运行,根据结果思考并记录其功能1、SELECT sname,sbirthFROM studentWHERE ssex =(SELECT ssexFROM studentWHERE sname=‘刘卫平’ )功能:_________________________________________________2、SELECT sno,sname,ssexFROM studentWHERE student.sno IN(SELECT snoFROM skcWHERE kno IN (‘0324091007’,’0324051013’) )功能:____________________________________________________3、SELECT kno,gradeFROM skcWHERE sno =‘100212201’ AND grade >ANY(SELECT grade FROM skcWHERE sno =‘100212208’ )功能:___________________________________________________4、SELECT DISTINCT s.sno,sname,mnameFROM student AS s,major AS m,skcWHERE s.mno=m.mno AND s.sno=skc.sno AND grade<60功能:___________________________________________________5、SELECT sno,sname,mnameFROM student AS s, major AS mWHERE s.mno=m.mno AND s.sno IN(SELECT DISTINCT snoFROM skcWHERE grade<60 )功能:___________________________________________________6、SELECT student.sno,sname,gradeFROM student, skcWHERE student sno = skc. sno AND grade BETWEEN 80 AND 90功能:___________________________________________________7、SELECT student. sno,sname,gradeFROM studentINNER JOIN skc ON student. sno = skc. SnoINNER JOIN kaike ON kaike. kno = skc.knoINNER JOIN corses ON /doc/c715745487.html,o=/doc /c715745487.html,o AND cname=‘C语言程序设计’功能:___________________________________________________8、SELECT snameFROM sWHERE NOT EXISTS(SELECT * FROM skc,kaike k, Teacher tWHERE skc.kno=k.kno AND k.tno=t.tno AND t.tName=‘李明’ AND SKC.sno=s.sno) 功能:___________________________________________________9、SELECT sno,snameFROM studentWHERE EXISTS(SELECT *FROM skcWHERE student.sno=skc.sno AND kno IN(SELECT knoFROM kaike AS kkWHERE /doc/c715745487.html,o=(SELECT cnoFROM courseWHERE cname=‘数据结构’ )))功能:___________________________________________________(三)阅读并分析下面查询语句,根据其功能,补全语句之后进行验证1、查询选修课程名称为计算机网络的学生学号和姓名SELECT sno,snameFROM student sWHERE sno_____(SELECT snoFROM skc,kaike k,course cWHERE_____________________AND cname=’计算机网络’)2、列出“010101”号课成绩比“010102”号课成绩高的所有学生的学号及其两门课课的成绩SELECT sc1.sno ,_____________________FROM skc sc1,skc sc2WHERE /doc/c715745487.html,o=’010101’AND /doc/c715745487.html,o=’010102’AND sc1.sno=sc2.snoAND _____________________3、列出既学过“计算机网络”号课程,又学过“金融学”号课程的所有学生姓名SELECT s.sno,s.snameFROM student sWHERE sno IN (SELECT sc.snoFROM skc,kaike k,course cWHERE skc.kno=k.kno AND /doc/c715745487.html,o=/doc /c715745487.html,o AND /doc/c715745487.html,ame IN(’计算机网络’,’金融学’)GROUP BY snoHAVING_____________________4、列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩SELECT s.sname, AVG(a.grade)FROM s,skc aWHERE s.sno=a.sno AND s.sno IN(SELECT snoFROM skc bWHERE b.grade_________GROUP BY snoHAVING COUNT(*)>=2 )GROUP BY _____________________5、查询选修全部课程的学生姓名(另外一种方法)SELECT sno,snameFROM student sWHERE sno IN(SELECT sno FROM skcRIGHT JOIN kaike ONskc.kno=kaike.knoGROUP BY snoHAVING COUNT(*)=_____________________)6、查询选修课程超过4门的学员学号和性别SELECT sno,ssexFROM student sWHERE sno IN(SELECT snoFROM skcGROUP BY ________HAVING COUNT(DISTINCT kno)> __________Ⅱ:高级实验内容根据下面的要求,写出其SQL语句,然后在查询分析器中运行该语句,并根据得到的结果验证语句的正确性。
《数据库原理及应用》标准实验报告
实验报告课程名称:数据库原理及应用学院: 信息与软件工程学院专业:软件工程指导教师:张宁学生姓名:朱旻实验成绩:日期:2014年月日电子科技大学信息与软件工程学院电子科技大学实验报告一、实验一:Oracle数据库管理系统软件安装、环境配置与使用二、实验室名称:信软楼304实验室实验时间:2014/11/17三、实验目的通过对Oracle数据库DBMS软件安装与配置使用实验,使学生掌握典型企业级数据库管理软件的安装使用方法,了解数据库管理工具的用途和使用技巧。
要求学生能够正确安装Oracle企业数据库管理系统,并对系统配置进行有效地设置,搭建Oracle企业数据库管理系统运行管理环境,能够对数据库系统服务进行启停控制。
四、实验原理了解Oracle企业数据库产品的技术特点、软件版本、软件功能组件、软件硬件环境要求等技术文档。
按照Oracle数据库产品安装指南的过程步骤,逐步完成在本机Oracle数据库管理系统安装。
五、实验内容在Windows7或WindowsXP或Windows2000操作系统环境下,安装Oracle数据库管理系统软件,搭建数据库管理系统运行环境。
具体实验内容如下:1)Oracle数据库管理系统软件安装2)Oracle数据库管理系统环境配置3)Oracle数据库管理系统服务启停4)Oracle数据库管理系统工具使用5)Oracle数据库系统基本对象操作在实验计算机上,完成上述Oracle数据库管理系统软件安装、配置操作,并进行基本的数据库访问操作。
同时记录实验过程的规划、操作、运行结果界面等数据,撰写本实验报2告。
六、实验设备及环境“数据库原理及应用”实验所涉及的硬件设备为pc计算机、服务器以及网络环境,pc 计算机与服务器在同一局域网络。
操作系统: Windows7或WindowsXP或Windows2000数据库DBMS:Oracle七、实验步骤采用课程实验平台提供的Oracle安装版本进行数据库管理系统安装和配置管理,其步骤如下:1)了解系统安装的软硬件环境要求,进行本机操作系统环境准备,并确定安装目录、用户账号和权限。
实验七:数据库原理与应用实验报告
(6)使用NUION关键字实现多表连接;
(7)表或查询别名的使用;
(8)使用SQL Server的统计函数;
(9)使用COMPUTE和COMPUTE BY子句;
(10)使用嵌套查询等;
实验内容
1.实验方案设计(可省略)源自2.实验内容与关键SQL语句、实验结果等
习题2.1
习题2.2
数据库原理与应用
实验报告
实验项目名称:SQL语言—SELECT查询操作
实验日期:2016/4/25
姓名:郑昌阳
学号:084314145
班级:软件14
成绩:
信息技术学院计算机软件与理论教研室
南京中医药大学
实验概述:
1.实验目的
表或视图数据的各种查询(与统计)SQL命令操作,具体分为:
(1)了解查询的概念和方法;
习题4.17
3.疑难与未解决的问题
1、部分代码需要思考一会儿才能够理解;
2、读题不仔细,导致花费较长时间检查;
4.实验体会(含已碰到的问题和解决方法)
3、编写程序时有些语句不懂,通过看书本学会了;
4、巩固加深理解了如何创建数据库;
5、巩固加深理解了表的嵌套、连接等使用方法;
教师评语及成绩
附加题
1.
2.
3.
(2)掌握SQL Server集成管理器查询子窗口中执行SELECT操作的方法;
(3)掌握SELECT语句在单表查询中的应用;
(4)掌握SELECT语句在多表查询中的应用;
(5)掌握SELECT语句在复杂查询中的使用方法;
2.实验要求
(1)在SQL Server Management Studio的查询子窗口中(要以具有相应操作权限的某用户登录)执行如下命令创建数据库。需要说明的是不同数据库系统其创建数据库的命令或方法有所不同;
数据库原理实训实验报告
一、实验背景随着信息技术的飞速发展,数据库技术在各行各业的应用越来越广泛。
为了让学生更好地理解和掌握数据库原理,提高数据库应用能力,我们开展了数据库原理实训实验。
本次实验旨在通过实际操作,让学生熟悉数据库的基本概念、结构、操作方法以及应用技巧,培养学生的实践能力和创新意识。
二、实验目的1. 熟悉数据库的基本概念、结构、操作方法以及应用技巧。
2. 掌握数据库设计、创建、操作、查询、维护和安全性管理的基本操作方法和技巧。
3. 提高学生的实践能力和创新意识。
三、实验内容本次实验主要分为以下几个部分:1. 数据库设计2. 数据库创建3. 数据表操作4. 数据查询5. 数据库维护6. 数据库安全性管理四、实验步骤1. 数据库设计首先,我们需要设计一个数据库。
根据实验要求,我们设计了一个学生信息管理系统数据库,包含学生表、课程表、成绩表和教师表。
以下是数据库设计的基本步骤:(1)确定数据库主题:学生信息管理系统(2)分析数据需求:根据需求分析,确定学生信息管理系统需要存储的数据,包括学生基本信息、课程信息、成绩信息和教师信息。
(3)设计数据结构:根据数据需求,设计学生表、课程表、成绩表和教师表的结构,包括字段名、字段类型、字段长度、约束等。
2. 数据库创建完成数据库设计后,我们需要创建数据库。
以下是创建数据库的基本步骤:(1)打开数据库管理工具,如MySQL、SQL Server等。
(2)在工具中创建一个新的数据库,命名为“学生信息管理系统”。
(3)根据数据库设计,在新建的数据库中创建相应的数据表。
3. 数据表操作创建数据表后,我们需要对数据表进行操作,包括插入、修改、删除和查询数据。
(1)插入数据:使用INSERT语句插入数据。
(2)修改数据:使用UPDATE语句修改数据。
(3)删除数据:使用DELETE语句删除数据。
(4)查询数据:使用SELECT语句查询数据。
4. 数据查询数据查询是数据库操作中非常重要的一环。
《数据库原理及应用》实验
《数据库原理及应用》实验数据库原理及应用实验,是一门重要的计算机专业实验课程,主要培养学生对数据库原理的理解和应用技能的掌握。
本文将从实验目的、实验内容、实验过程、实验结果及总结等方面进行详细阐述。
一、实验目的通过本次实验,旨在使学生掌握以下内容:1.理解数据库原理及基本概念;2.了解关系型数据库系统的基本架构;3.掌握数据库的创建、查询和修改等操作;4.熟悉数据库的安全性和完整性保护机制;5.了解数据库在实际应用中的作用和意义。
二、实验内容本次实验主要包含以下几个方面内容:1.数据库的创建和表的设计:通过SQL语句创建数据库和相关表,包括表的字段、数据类型和约束等;2.数据的插入和查询:通过SQL语句向表中插入数据,并进行查询操作;3.数据的修改和删除:通过SQL语句对表中的数据进行修改和删除操作;4.数据库的安全性和完整性保护:通过用户权限控制和数据完整性保护等机制,保障数据库的安全性和完整性。
三、实验过程1.创建数据库和表:根据实验要求,使用SQL语句创建数据库和相关表,定义表的字段、数据类型和约束等;2.插入和查询数据:使用SQL语句向表中插入数据,并进行查询操作,验证数据的插入和查询功能;3.修改和删除数据:使用SQL语句对表中的数据进行修改和删除操作,验证数据的修改和删除功能;4.用户权限和数据完整性保护:设置用户权限,限制用户对数据库的访问和修改权限,同时设置数据完整性保护机制,保障数据的完整性和一致性。
四、实验结果通过实验,我们成功创建了数据库和相关表,插入、查询、修改和删除数据的功能也得到了验证。
同时,对数据库的安全性和完整性保护也进行了相关设置,确保了数据的安全和完整性。
五、实验总结在本次实验中,我们对数据库原理及应用进行了实际操作,通过SQL语句进行数据库的创建、查询和修改等操作。
同时,通过设置用户权限和数据完整性保护机制,提高了数据库的安全性和完整性。
通过本次实验,我深刻理解了数据库的重要性和应用价值,对数据库的设计和操作也有了更深入的认识。
数据库原理及应用实训报告
实训报告第一部分:实训目的通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力,能够独立完成数据库的功能的设计和开发。
第二部分:实训准备安装有SQL SERVER 2005以上版本的软件的计算机。
第三部分:实训要求1.画出所给任务中表的E-R图2.实训部分(全部使用T-SQL语句完成以下实验内容)第四部分:实训内容(步骤及程序)E-R图实验1 数据库操作1.创建数据库:操作1.1:创建一个test数据库,其主数据文件逻辑名test_data,物理文件名test_data.mdf,初始大小10MB,最大尺寸为无限大,增长速度1MB;数据库日志文件逻辑名称为test_log,物理文件名为test_log.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为10%。
create database test数据库on(name='test_data',filename='D:\课程设计\数据库\test_data.mdf',size=10mb,filegrowth=1mb,maxsize=unlimited)log on(name='test_log',filename='D:\课程设计\数据库\test_log.ldf',size=1mb,filegrowth=10%,maxsize=5mb)go2.查看数据库属性:操作1.2:使用T-SQL语句查看数据库test属性exec sp_helpdb test数据库go3.删除数据库:操作1.3:使用T-SQL语句删除数据库testdrop database test数据库go实验2 表操作1.创建表:操作2.1:创建学生表:use test数据库gocreate table student(st_id nvarchar(9)not null primary key, st_nm nvarchar(8)not null,st_sex nvarchar(2),st_birth datetime,st_score int,st_date datetime,st_from nchar(20),st_dpid nvarchar(2),st_mnt tinyint)go操作2.2:创建课程信息表:use test数据库gocreate table couse(cs_id nvarchar(4)not null primary key, cs_nm nvarchar(20)not null,cs_tm int,cs_sc int)go操作2.3:创建选课表:use test数据库gocreate table slt_couse(cs_id nvarchar(4)not null,st_id nvarchar(9)not null,score int,sltdate datetime)goalter table slt_couseadd constraint fk_cs_idforeign key(cs_id)references couse(cs_id)goalter table slt_couseadd constraint fk_st_idforeign key(st_id)references student(st_id)go操作2.4:创建院系信息表:use test数据库gocreate table dept(dp_id nvarchar(2)not null,dp_nm nvarchar(20)not null,dp_drt nvarchar(8),dt_tel nvarchar(12))go2.修改表结构:(1)向表中添加列:操作2.5:为“dept”表添加“dp_count”列(数据类型为nvarchar,长度为3,允许为空)use test数据库goalter table deptadd dp_count nvarchar(3)go(2)修改列数据类型:操作2.6:修改“dept”表的“dp_count”列数据类型为intuse test数据库goalter table deptalter column dp_count intgo(3)删除表中指定列:操作2.7:删除“dept”表的“dp_count”列use test数据库goalter table deptdrop column dp_countgo3.删除表操作2.8:删除“dept”表use test数据库godrop table deptgo4.向表中输入数据记录操作2.9:分别向“student”表、“couse”表、“slt_couse”表、“dept”表中输入数据记录use test数据库goinsert studentvalues('000000001','小二','男','1991-01-01','89','2011-09-01','广东','10','1')insert studentvalues('000000002','小三','男','1991-01-02','79','2011-09-01','广东','12','1')insert studentvalues('000000003','小四','女','1991-01-03','69','2011-09-01','广东','8','1')insert studentvalues('000000004','小六','男','1991-04-01','59','2011-09-01','广东','13','1')insert studentvalues('000000005','小七','男','1991-01-11','89','2011-09-01','广东','11','1')Gouse test数据库goinsert cousevalues('0001','计算机网络','72','2')insert cousevalues('0002','c语言程序设计','72','2')insert cousevalues('0003','SQL数据库','72','2')insert cousevalues('0004','计算机导论','72','2')insert cousevalues('0005','高级数学','72','2')Gouse test数据库goinsert slt_cousevalues('0001','000000001','72','2011-10-12') insert slt_cousevalues('0002','000000002','92','2011-10-12') insert slt_cousevalues('0003','000000003','62','2011-10-12') insert slt_cousevalues('0004','000000004','82','2011-10-12') insert slt_cousevalues('0005','000000005','52','2011-10-12')use test数据库goinsert deptvalues('8','艺术系','王大仁','12345768')insert deptvalues('9','建筑系','李小仁','12645678')insert deptvalues('10','信息系','李大仁','12349878')insert deptvalues('13','管理系','王小仁','16345678')insert deptvalues('12','外语系','王小明','14512678')go实验3 数据完整性1.空值约束( NULL )操作3.1:将student表中的st_sex列属性更改为NOT NULL use test数据库goalter table studentalter column st_sex nvarchar(2)not nullgo2.默认值约束( DEFAULT )操作3.2:将student表中的st_from列默认值设置为“陕西省”use test数据库goalter table studentadd constraint df_fromdefault'陕西省'for st_fromgo3.默认值对象操作3.3:创建默认值对象df_today为当前日期,并将其绑定到slt_couse表中的sltdate列,然后取消绑定,最后删除默认值对象df_today。
数据库原理及应用实验报告
数据库原理及应用实验报告引言:数据库是一种专门用于管理和存储数据的软件系统。
它可以高效地组织、存储、管理和访问大量的数据,并且具备数据的可靠性和一致性。
在数据库原理及应用的实验中,我们学习了数据库的基本原理和操作以及实际应用。
实验目的:1.了解数据库的基本原理和概念;2.了解数据库的设计和管理方法;3.学习使用SQL语言进行数据库的操作;4.进行数据库的实际应用实验。
实验内容:本次实验主要分为两个部分,第一部分是数据库的原理和概念学习,第二部分是实际应用实验。
第一部分:数据库原理和概念学习1.数据库基本概念:数据库、数据、数据模型等;2.关系数据库模型:表、列、行、主键、外键的概念及关系模型的基本组成;3.ER图:实体、属性、关系的概念及其在数据库设计中的应用;4.数据库的设计:数据模型设计和规范化的原理和方法;5.数据库查询语言(SQL):SQL基本语法、查询、插入、更新和删除等操作。
第二部分:实际应用实验1.数据库环境的搭建:安装数据库系统、创建数据库、创建表等操作;2.SQL语言的应用:使用SQL语言进行数据库的查询、插入、更新、删除等操作;3.数据库设计与管理:根据实际需求设计数据库表结构,并进行数据的插入、查询等操作;4.数据的导入和导出:将已有数据导入数据库或将数据库中的数据导出到外部文件。
实验步骤:1.搭建数据库环境:根据实验要求选择合适的数据库系统,安装并配置好相关环境;2.创建数据库和表结构:使用SQL语言创建数据库和相应的表结构;3.插入数据:使用SQL语言插入初始数据,保证数据库中有足够的数据进行后续操作;4.查询数据:使用SQL语言进行数据库的查询操作,通过不同的查询条件获取所需的数据;5.更新和删除数据:使用SQL语言进行数据库中数据的更新和删除操作,保证数据的一致性和完整性;6.数据的导入和导出:根据实验需求将外部数据导入数据库或将数据库中的数据导出到外部文件进行备份。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验成绩
《数据库系统原理及应用》
实
验
报
告
七
专业班级: 计算机科学与技术
学号: 201116910233
姓名: 范晓曈
指导教师: 苏小玲
2013年11 月28 日
实验七名称:SQL Server触发器和游标
一、实验内容及要求
(使用教材建立的student、course和sc表实现)
1、创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
任务2:限制每个学期所开设的课程总学分在20~30范围内。
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)
任务4:限制不能删除有人选的课程
2.创建满足下述要求的游标
任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。
任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。
任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。
要求按教材11-21所示样式显示结果数据。
二、实验目的
掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。
三、实验步骤
创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
create trigger tri_limitedept
on student after insert,update
as
IF EXISTS(SELECT*FROM INSERTED
WHERE sdept!='计算机'and sdept!='信息管理系'
and sdept!='数学系'and sdept!='通信')
ROLLBACK
insert into student
values(001,'一','女','通信工程系','1991-01-01','JA V A','5.0')
任务2:限制每个学期所开设的课程总学分在20~30范围内。
create trigger tri_limit
on course after insert,update
as
if exists(select sum(credit)from course
where semester in(select semester from inserted)having sum(credit)not between 20 and 30 )
print'你所插入的课程所在学期的总学分不在~30这个范围内'
Rollback
insert into Course
values('C007','0007','007','JA V A',3,2)
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)
create trigger tri_count
ON SC after INSERT
as
if(select count(*)from sc where sno=(select sno from inserted))>4
begin
print'选课超过限额'
rollback
End
insert into sc
values(201116910231,'C005','2013.09.01',85,75)
任务4:限制不能删除有人选的课程
create trigger tri_Deletekc
ON course AFTER DELETE
AS
IF EXISTS(SELECT*FROM sc join DELETED d on o=o)
BEGIN
PRINT'不能删除有学生选的课程'
ROLLBACK
END
delete from course where cno='C001'
2.创建满足下述要求的游标
任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。
declare@name varchar(200),@dept varchar(200),@sscore varchar(10)--声明存放结果
集的变量
declare java_cursor cursor for--声明游标
select s.sname,s.sdept,sc.sscore
from student s join sc on s.sno=sc.sno
join course c on o=o
where cname='java'
open java_cursor--打开游标
fetch next from java_cursor into@name,@dept,@sscore--首先提取第一行
print'选了JA V A课程的学生的成绩:'
print'姓名所在系成绩'
while@@FETCH_STA TUS=0
begin
print@name+' '+@dept+' '+@sscore
fetch next from java_cursor into@name,@dept,@sscore
end
close java_cursor
deallocate java_cursor
任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。
declare@dept char(20),@sex char(20),@number int
declare cur_number cursor for
select sdept,ssex,count(*)
from student s group by ssex,sdept
open cur_number
fetch next from cur_number into@dept,@sex,@number
print'系名性别人数'
print'==================================='
while@@FETCH_STA TUS=0
begin
print@dept+@sex+cast(@number as varchar)
fetch next from cur_number into@dept,@sex,@number
end
close cur_number
deallocate cur_number
任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。
要求按教材11-21所示样式显示结果数据。
declare@dept varchar(20),@name varchar(20),@sex varchar(20)
declare c1cursor for
select distinct sdept from student
open c1
fetch next from c1into@dept
while@@FETCH_STA TUS=0
begin
print@dept+'系的学生:'
declare c2cursor for
select sname,ssex from student where sdept=@dept
open c2
fetch next from c2into@name,@sex
while@@FETCH_STA TUS=0
begin
print@name+@sex
fetch next from c2into@name,@sex
end
close c2
deallocate c2
print'=============='
print''
fetch next from c1into@dept
end
close c1
deallocate c1
四、实验心得
在实验开始之初,由于对之前所学的知识有所忘记,所以我选择首先复习之前的select语句的相关知识。
在进行触发器的相关实验时,遇到一些令我迷惑的问题例如:限制每个学生每学期选课门数不能超过6门。
由于有多重限制条件,后来在同学的讲解下利用declare解决了。
感觉触发器太神奇了,操作者做了不符合条件的操作就可以自动警告。
在做游标的相关实验时,相对简单。
油表可以对查询的数据逐行逐列的操作,方便简洁。
知识输出的结果至今无法整齐对照,令人费解。