数据库原理实验九

东华理工大学长江学院
实验报告
2018 至 2019 学年 第 二 学期
实验九 存储过程和触发器

课程名称 关系数据库原理及应用
学号 学生姓名 年级
专业 教学班号 实验地点 寒武楼2楼
实验时间 2019年5月 31日 第7节 至 第 8 节
2

实验(三) 实验名称
存储过程和触发器

软件环境
Windows
SQL Server 2008
硬件环境
PC

实验目的和要求
(一)掌握通过SQL server管理平台和Transact-SQL语句CREATE PROCEDURE创建存储过
程的方法和步骤。
(二)掌握Transact-SQL语句EXECUTE执行存储过程的方法。
(三)掌握通过SQL server管理平台和Transact-SQL语句ALTER PROCEDURE修改存储过程、
DROP PROCEDURE删除存储过程的方法。
(四)掌握通过SQL server管理平台和Transact-SQL语句CREATE TRIGGER创建触发器的
方法和步骤。
(五)掌握引发触发器的方法。
(六)掌握使用SQL server管理平台或Transact-SQL语句修改和删除触发器的方法
实验内容、实验过程及实验结果
实验内容:实验书P21 1-12。
1.在查询编辑器中输入以下代码,创建一个利用流控语句的存储过程
letters_print,该存储过程能够显示26个小写字母。使用EXECUTE命令执行
letters_print存储过程。
实验步骤:

实现代码:
实验结果图:
3

2.输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该
姓名对应的学生的各科成绩。
(1)使用EXECUTE命令执行存储过程stu_info,其参数值为“马东”。
(2)如果存储过程stu_info执行时没有提供参数,要求能按默认值查询(设姓
名为“刘卫平”),如何修改该过程的定义?
实验步骤:

实现代码:
实验结果图:
3.使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、
分数。
(2)执行存储过程stu_grade,查询0001学生的姓名、课程名称、分数。
(3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。
实验步骤:
4

实现代码:
实验结果图:
4.使用student_info表、curriculum表、grade表。
(1)创建一个带参数的存储过程stu_g_p,当任意输入一个学生的姓名时,将
从三个表中返回该学生的学号、选修的课程名称和课程成绩。
(2)执行存储过程stu_g_p,查询“刘卫平”的学号、选修课程和课程成绩。
(3)使用系统存储过程sp_helptext,查看存储过程stu_g_p的文本信息。
实验步骤:

实现代码:
实验结果图:
5

5.使用student_info表。
(1)创建一个加密的存储过程stu_en,查询所有男学生的信息。
(2)执行存储过程stu_en,查看返回学生的情况。
(3)使用Transact-SQL语句DROP PROCEDURE删除存储过程stu_en。
实验步骤:

实现代码:
实验结果图:
6.使用grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参
数获取该学生各门课程的平均成绩。
(2)执行存储过程stu_g_r,输入学号0002。
(3)显示0002号学生的平均成绩。
实验步骤:
6

实现代码:
实验结果图:
7. 输入代码,复制student_info表命名为stu2,为stu2表创建一个触发器
stu_tr,当stu2表插入一条记录时,为该记录生成一个学号,该学号为学号列
数据的最大值加1。
实验步骤:

实现代码:
实验结果图:
7

8.为grade表建立一个名为insert_g_tr 的INSERT触发器,当用户向grade
表中插入记录时,如果插入的是在curriculum表中没有的课程编号,则提示用
户不能插入记录,否则提示记录插入成功。
实验步骤:

实现代码:
实验结果图:
9. 为curriculum表创建一个名为del_c_tr的DELETE触发器,该触发器的作用
是禁止删除curriculum表中的记录。
实验步骤:

实现代码:
8

实验结果图:
10. 为student_info表创建一个名为update_s_tr的UPDATE触发器,该触发器
的作用是禁止更新student_info表中的“姓名”字段的内容。
实验步骤:

实现代码:
实验结果图:
11. 使用Transact-SQL语句DROP TRIGGER删除update_s_tr触发器。
实验步骤:
9

实现代码:
实验结果图:
12. 为student_info表建立删除触发器del_s_tr,要求当student_info表的
记录被删除后,grade表中相应的记录也能自动删除。
实验步骤:

实现代码:
实验结果图:

合集下载

数据库系统原理实验报告

数据库系统原理实验报告

数据库系统原理实验报告一、实验目的掌握数据库基本操作,熟悉数据库系统的结构和组成部分,了解数据库系统原理二、实验环境操作系统:Windows 10三、实验内容1.创建数据库首先通过命令行或图形界面方式登录数据库系统,创建一个新的数据库。

命令如下:CREATE DATABASE testdb;2.创建数据表在新创建的数据库中,创建一个新的数据表。

表名为student,包含字段id(学号)、name(姓名)、age(年龄)、gender(性别)。

命令如下:USE testdb;CREATE TABLE studentid INT PRIMARY KEY,name VARCHAR(20),age INT,gender VARCHAR(2)3.插入数据向数据表中插入若干条记录。

命令如下:INSERT INTO student (id, name, age, gender) VALUES (1, '张三', 20, '男');INSERT INTO student (id, name, age, gender) VALUES (2, '李四', 22, '女');INSERT INTO student (id, name, age, gender) VALUES (3, '王五', 21, '男');4.查询数据从数据表中查询记录。

命令如下:SELECT * FROM student;5.更新数据更新数据表中的条记录。

命令如下:UPDATE student SET age=23 WHERE id=1;6.删除数据删除数据表中的条记录。

DELETE FROM student WHERE id=2;四、实验结果1.创建数据库成功;2.创建数据表成功;3.插入数据成功;4.查询数据成功;5.更新数据成功;6.删除数据成功。

数据库原理与应用 实验案例

数据库原理与应用 实验案例

数据库原理与应用实验案例数据库原理与应用是计算机科学中非常重要的一门课程,它涉及到了数据库的设计、管理、维护和应用等方面。

在学习这门课程的过程中,我们需要通过实验来加深对数据库原理的理解和应用能力的提升。

下面列举了10个数据库原理与应用的实验案例。

1. 数据库设计实验:通过设计一个简单的数据库,学习数据库的设计原理和方法,包括实体关系模型、关系模式、范式等。

2. SQL语句实验:通过编写SQL语句,学习SQL语言的基本语法和操作,包括查询、插入、更新、删除等。

3. 数据库管理实验:通过管理数据库,学习数据库的管理原理和方法,包括备份、恢复、优化、安全等。

4. 数据库应用实验:通过开发一个简单的数据库应用程序,学习数据库的应用原理和方法,包括数据访问、事务处理、并发控制等。

5. 数据库性能实验:通过测试数据库的性能,学习数据库的性能优化原理和方法,包括索引、分区、缓存等。

6. 数据库安全实验:通过测试数据库的安全性,学习数据库的安全原理和方法,包括用户管理、权限控制、加密等。

7. 数据库备份与恢复实验:通过备份和恢复数据库,学习数据库的备份与恢复原理和方法,包括全量备份、增量备份、日志备份等。

8. 数据库复制实验:通过复制数据库,学习数据库的复制原理和方法,包括主从复制、多主复制等。

9. 数据库集群实验:通过搭建数据库集群,学习数据库的集群原理和方法,包括负载均衡、故障转移等。

10. 数据库分布式实验:通过搭建分布式数据库,学习数据库的分布式原理和方法,包括分片、分区、数据同步等。

以上是10个数据库原理与应用的实验案例,通过这些实验,我们可以更加深入地了解数据库的原理和应用,提高我们的数据库技能和应用能力。

数据库原理实验

数据库原理实验

1 实验目的与要求(1)掌握数据库的建立、删除和修改操作。

(2)理解基本表之间的关系,掌握表结构的建立、修改和删除操作,创建模式导航图。

2 实验内容与结果实验内容:(1) 创建一个BookDB数据库,要求至少一个数据文件和一个日志文件。

(2) 创建图书管理相关4张关系表,表结构如图3-1至图3-4所示。

图3-1图书分类表BookClass图3-2 图书表Book图3-3读者表Reader图3-4 借阅表Borrow(3) 表结构的修改,要求:①修改图书表结构,要求出版社名称和入库时间不允许为空。

②修改读者表结构,要求读者身份证号不允许为空。

实验结果如下:创建数据库:CREATE DATABASE BookDB48ON PRIMARY(NAME='BookDB',FILENAME='C:\数据库文件\',SIZE=3,MAXSIZE=20,FILEGROWTH=1)LOG ON(NAME='BookDB_LOG',FILENAME='C:\数据库文件\',SIZE=3,MAXSIZE=20,FILEGROWTH=1)脚本如下:(创建的四个表)CREATE TABLE BookClass48(classNo char(3)NOT NULL,--图书分类号className varchar(20)NOT NULL,--图书分类名称CONSTRAINT BookClass48PK PRIMARY KEY(classNo))CREATE TABLE Book48(bookNo char(10)NOT NULL,--图书编号classNo char(3)NOT NULL,--图书分类号bookName varchar(40)NOT NULL,--图书名称authorName varchar(8)NOT NULL,--作者名字publishingName varchar(20)NULL,--出版社名称publishingNo char(17)NULL,--出版社编号publishingDate datetime NULL,--出版社日期price numeric(7,2)NULL,--单价shopDate datetime NULL,--入库时间shopNum datetime NULL,--入库数量CONSTRAINT Book48PK PRIMARY KEY(bookNo),CONSTRAINT Book48FK FOREIGN KEY(classNo)REFERENCES BookClass48(classNo) )CREATE TABLE Reader48(readerNo char(8)NOT NUlL,--读者编号readerName varchar(8)NOT NULL,--姓名sex char(2)null,--性别identifycard char(18)null,--身份证号workUnit varchar(50)null,--工作单位borrowCount tinyint null,--借书数量CONSTRAINT Reader48PK PRIMARY KEY(readerNo))CREATE TABLE Borrow48(readerNo char(8)NOT NUlL,--读者编号bookNo char(10)NOT NULL,--图书编号borrowDate datetime not null,--借阅日期shouldDate datetime not null,--应归还的日期returnDate datetime null,--归还日期CONSTRAINT Borrow48PK PRIMARY KEY(readerNo,bookNo),CONSTRAINT Borrow48FK1 FOREIGN KEY(readerNo)REFERENCES Reader48(readerNo), CONSTRAINT Borrow48FK2 FOREIGN KEY(bookNo)REFERENCES Book48(bookNo))表结构的修改:ALTER TABLE Book48 DROP COLUMN publishingNameALTER TABLE Book48 ALTER COLUMN publishingName varchar(20)NOT NULLALTER TABLE Book48 DROP COLUMN shopDateALTER TABLE Book48 ALTER COLUMN shopDate datetime NOT NULLALTER TABLE Book48 DROP COLUMN identifycardALTER TABLE Reader48 ALTER COLUMN identifycard char(18)NOT NULL结果图如下(模式导航图):3、实验小结和归纳小结:本次实验是我们学习数据库原理以来的第一次实验,相比而言是很生疏的,并且这次实验出现了很多的问题,例如:做实验的时候,总是运行的成功的语句,导致后来生成的结果总是存在某些已经存在的对象,十分麻烦。

数据库原理实验

数据库原理实验

数据库原理实验一、概述数据库原理实验是计算机科学与技术专业中一门重要的实践课程,旨在通过实验操作和实际案例的学习,深入理解数据库原理及其应用。

本文将从数据库的基本概念、数据库设计、SQL语言、索引与优化、事务与并发控制等方面进行探讨。

二、数据库的基本概念2.1 数据库的定义与特点数据库是指按照数据模型组织、存储和管理数据的集合。

它具有以下特点:•数据共享性:数据库中的数据可以被多个用户共享,实现数据的集中管理和统一控制。

•数据独立性:数据库中的数据与应用程序相互独立,数据的结构和存储方式可以独立于应用程序进行修改。

•数据持久性:数据库中的数据是永久性存储的,即使系统崩溃或断电,数据也不会丢失。

•数据一致性:数据库中的数据必须满足一致性约束,保证数据的完整性和有效性。

2.2 数据库管理系统(DBMS)数据库管理系统是指用于管理数据库的软件系统,它提供了数据定义、数据操纵、数据控制和数据查询等功能。

常见的数据库管理系统有Oracle、MySQL、SQL Server等。

三、数据库设计3.1 概念设计概念设计是数据库设计的第一步,它主要包括确定数据模型和实体、属性、关系的定义。

常用的数据模型有关系模型、层次模型和网状模型。

3.2 逻辑设计逻辑设计是在概念设计的基础上,将概念模型转换为逻辑模型。

逻辑设计的主要任务是确定关系模式、关系之间的联系、主键和外键等。

3.3 物理设计物理设计是在逻辑设计的基础上,将逻辑模型转换为物理模型。

物理设计的主要任务是确定存储结构、索引策略、物理存储设备等。

四、SQL语言SQL(Structured Query Language)是用于数据库管理系统的查询和操作的标准语言。

它包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)等。

4.1 数据定义语言(DDL)DDL用于定义数据库的结构和存储方式,包括创建表、修改表结构、删除表等操作。

数据库原理课程实验

数据库原理课程实验

《数据库原理》课程实验2010.9本文档介绍的是本学期课程实验内容,其中有四次实验需要提交实验报告或设计报告,前三次每份报告记平时成绩4分,第四份报告(同时要提供建立数据库、数据表的代码)记平时成绩8分并。

请各位同学注意按时提交报告,按实验报告格式打印。

实验1 创建数据库一、实验目的熟悉SQL Server Management Studio界面;掌握通过图形化向导和执行Transact-SQL语句创建数据库的方法。

二、实验环境Windows XP操作系统,SQL Server 2005软件。

三、实验课时2课时。

四、实验内容SQL Server中的一个数据库必须至少包含一个数据文件和一个事务日志文件,所以创建数据库就是建立主数据文件和日志文件。

在SQL Server 2005中创建数据库的方法主要有两种:一是在SQL Server Management Studio窗口中使用可视化界面,通过方便的图形化向导创建,二是通过执行Transact-SQL语句创建。

(一)向导方式创建1、从“开始”菜单选择“所有程序”→“Microsoft SQL Server 2005”,打开“SQL Server Management Studio”窗口,使用Windows 或SQL Server身份验证建立连接。

2、在“对象资源管理器”窗格中展开服务器,选择“数据库”节点右击,从弹出的快捷菜单中选择“新建数据库”命令,打开“新建数据库”窗口。

3、该窗口中有3个页,分别是“常规”、“选项”和“文件组”,完成这3个页的内容即可完成数据库的创建。

这里,我们仅设置“常规”的相应内容,其他2个页的内容按照默认设置即可。

(1)“数据库名称”文本框中输入数据库的名称,如“sample_st”,再输入该数据库的所有者,这里使用默认值即可。

(也可以通过单击文本框右边的“浏览”按钮选择所有者。

(2)“数据库文件”列表中包括两行,一个是数据文件,一个是日志文件。

数据库实验原理

数据库实验原理

数据库实验原理
数据库实验原理是指通过实际操作和实际应用,验证和验证数据库相关原理的过程。

这些原理包括数据库设计、数据模型、数据存储与检索、事务管理、并发控制、数据库安全等。

在进行数据库实验时,首先需要确定实验目的和实验内容。

然后,根据实验内容选择适当的实验工具和数据库管理系统(DBMS)。

接下来,根据数据库设计原则,设计数据库的结构和关系模型,并进行表的创建和数据的导入。

实验过程中,可以运用SQL语言进行数据的增删改查操作,以验证数据库的数据存储和检索功能。

在验证事务管理和并发控制原理时,可以模拟多个用户同时对数据库进行操作,观察并分析不同事务的执行结果和并发冲突的处理方式。

此外,数据库实验还可以通过设计安全性测试用例,验证数据库的安全性和权限管理功能。

例如,测试用户的登录和认证机制、对敏感数据的访问控制、对数据备份和恢复的支持等。

在数据库实验中,需要记录和分析实验数据,比较实际结果与预期结果之间的差异,从而深入理解和掌握数据库原理。

实验完成后,还需要撰写实验报告,描述实验目的、方法、数据和结果,以及实验中遇到的问题和解决方案。

通过进行数据库实验,可以加深对数据库原理的理解和运用,培养数据管理和数据库设计的能力,提高对数据库系统的实际操作和应用能力。

同时,通过实验过程中的探索和验证,可以
发现问题、总结经验,为数据库技术的研究和应用提供参考和指导。

实验-数据库原理

《数据库原理》 上机指导书 (第一版)

信息工程学院 2010-9-1 目 录 实验一、关系数据库标准语言SQL-数据定义语言 .................................................. 1 实验二、关系数据库标准语言SQL-数据查询语言 .................................................. 5 实验三、关系数据库标准语言SQL-数据操纵语言 .................................................. 8 实验四、数据库的完整性.......................................................................................... 10 实验五、数据库的安全性.......................................................................................... 12 实验六、数据库设计.................................................................................................. 17 综合实验—SQL综合练习 ......................................................................................... 22 实验一、关系数据库标准语言SQL-数据定义语言 一、实验目的 1、通过对SQL SERVER2005的使用,了解数据库管理系统的工作原理和系统构架,加深对数据库基本知识的理解。 2、通过实验加深对数据库对象模式、表、索引的理解,掌握SQL中数据定义语言的基本功能。

《数据库原理》所有实验

实验1、数据定义1.1实验目的熟悉SQL的数据定义语言,能够熟练地使用SQL语句来创建和更改基本表,创建和取消索引。

1.2实验内容●用企业管理器创建数据库University_Mis●使用CREATE语句创建基本表。

●更改基本表的定义: 增加列,删除列,修改列的数据类型。

●创建表的升、降序索引。

●删除基本表的约束、基本表的索引或基本表。

1.3实验步骤(1)用企业管理器创建数据库University_Mis(2)在查询分析器中用SQL语句创建关系数据库基本表:学生表Students(Sno,Sname, Semail,Scredit,Sroom);教师表Teachers(Tno,Tname,Temail,Tsalary);课程表Courses(Cno,Cname,Ccredit);成绩表Reports(Sno,Tno,Cno, Score);其中:Sno、Tno、Cno分别是表Students、表Teachers、表Courses的主键,具有唯一性约束,Scredit具有约束“大于等于0”;Reports中的Sno,Tno,Cno 是外键,它们共同组成Reports的主键。

(3)更改表Students:增加属性Ssex(类型是CHAR,长度为2),取消Scredit“大于等于0”约束。

把表Courses中的属性Cname的数据类型改成长度为30。

(4)删除表Students的一个属性Sroom。

(5)删除表Reports。

(6)为Courses表创建按Cno降序排列的索引。

(7)为Students表创建按Sno升序排列的索引。

(8)创建表Students的按Sname升序排列的唯一性索引。

(9)删除Students表Sno的升序索引。

实验2、SQL的数据查询2.1实验目的熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。

2.2实验内容实验内容主要是对数据库进行查询操作,包括如下四类查询方式:(1)单表查询●查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。

数据库原理与应用

数据库原理与应用实验内容:实验一:创建数据库1.使用企业管理器或sql语句创建一个名为“SM”的数据库,初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,最大大小不受限制,按1MB增长。

create database SMon primary(name=sm_data,filename='D:\SQL\SM_DATA.MDF',size=3,maxsize=50,filegrowth=10%)log on(name=SM_LOG,filename='D:\SQL\SM_LOG.LDF',size=2,maxsize=unlimited,filegrowth=1)实验二:创建表1. 在数据库SM中创建学生表student,课程表course,选课表scstudent(sid,sno,clno,sname,ssex,sage,sbir)说明:sid int identity(1,1) 序号sno 为主关系键,为字符类型学号clno 字符类型,班级号sname 字符类型,并不为空ssex 字符类型,check的值的范围为男女sbir 日期类型出生日期sage int;A: create table student(sid int identity(1,1),sno nchar(8) constraint pk_sno primary key,clno nchar(4),sname nvarchar(20) not null,ssex nchar(2) constraint ck_ssex check(ssex='男' or ssex='女'),sbir date,sage int,)course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno 字符类型,主关系键cname 字符类型,唯一键ccredits 学分,精确数值型,精确长度为2,小数位为1ctno ,cpno 字符类型ctime 整型B:create table course(cno nchar(4) constraint pk_cno primary key,cname nvarchar(20) constraint uk_cn unique,ccredits decimal(2,1),ctno char(8),cpno char(8),ctime int,)sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。

数据库Lab9分析


3
Private Sub Button1_Click(
…) Handles Button1.Click
探究二
mydataset.Clear() Me.DataGrid1.CaptionText = ""
……数据访问处理
'排错处理 排错处理 If mydataset.Tables("_sname").Rows.Count = 0 Then MsgBox("学号输入错误!") 学号输入错误! 学号输入错误 Me.TextBox1.Clear() Exit Sub Else If mydataset.Tables("cname_score").Rows.Count = 0 Then MsgBox("改生选修课程数为 !") 改生选修课程数为0! 改生选修课程数为 Else DataGrid1.DataSource = mydataset.Tables("cname_score") DataGrid1.CaptionText = " " & mydataset.Tables("_sname").Rows(0).Item(0) & "选修课程成绩 选修课程成绩" 选修课程成绩 End If End If 4 End Sub
探究一
mysql = "select sname from student where snum='" & Me.TextBox1.Text.Trim & "'" mandText = mysql myadapter.Fill(mydataset, "_sname") Me.DataGrid1.DataSource = mydataset.Tables("cname_score") Me.DataGrid1.CaptionText = " " & mydataset.Tables("_sname").Rows(0).Item(0) & "选修课程成绩 选修课程成绩" 选修课程成绩 End Sub
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档