数据库实验六
数据库实验内容-答案

实验内容:实验一:数据库的操作使用Management Studio和sql语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,数据大小不受限制,按1MB增长。
create database smon(name='smdata',filename='e:\smdata.mdf',size=3,maxsize=50,filegrowth=10%)log on(name='smlog',filename='e:\smlog.ldf',size=2,maxsize=unlimited,filegrowth=1)2.修改数据库“SM”,将数据文件名改成“sm_data”,初始大小改成5MBalter database smmodify file( name='smdata',newname='sm_data',size=5)3.分别查看数据库“SM”,该数据库中的文件和文件组。
exec sp_helpfile smexec sp_helpfilegroup sm4.删除数据库“SM”。
drop database sm实验二:创建表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;use smcreate table student( sid int identity(1,1),sno char(10) constraint pk_st primary key,clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check(ssex in('男','女')),sbir datetime,sage int)course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno 字符类型,主关系键cname 字符类型,唯一键ccredits 学分,精确数值型,精确长度为2,小数位为1ctno ,cpno 字符类型ctime 整型create table course(cno char(4) constraint pk_c primary key,cname varchar(20) constaint uk_cname unique,ccredit decimal(2,1),ctno char(2),cpno char(4),ctime tinyint)sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。
数据库实验六-综合实验

实验六数据库原理综合实验1实验目的(1)运用所学的数据库设计技术,针对一个具体的应用系统,完成系统数据库的概念模型、逻辑模型和物理模型的设计。
以巩固理论课程上所学的知识,更好地掌握数据库设计技术方法。
(2)对前面章节所学的知识加以综合应用。
2实验内容给定一个应用环境,如学生选课系统、超市管理系统、某企业库存管理系统、学校图书管理系统、学校综合积分管理系统等等。
(同学们课从上述选定一个题目,也可以选取一个自己较熟悉的应用环境)。
完成下面的工作2.1 数据库概念模型设计(1)进行需求分析。
-对系统的语义进行描述(包括功能、所需的数据及他们之间的关系和处理方法)(2)识别系统中的实体及实体的属性,分析实体之间的联系。
(3)设计数据库概念模型,画出E-R图。
2.2 数据库逻辑模型设计(1)根据数据库概念模型设计数据库的逻辑模型。
-将E-R模型转化到逻辑模型(2)根据应用需要和规范化理论对逻辑模型进行优化。
2.3 数据库物理模型设计(1)针对某种DBMS,设计数据库物理模型,包括表空间、表和索引等于物理存储有关的设计。
(2)优化物理模型(3)生成某种DBMS的SQL语句,创建数据库及其表。
2.4 装载数据(1)收集真实数据或者生成模拟数据。
(2)批量加载数据到数据库中。
(3)设计一系列SQL语句,尤其是连接查询、嵌套查询等SQL语句,已测试数据库性能。
3实验要求(1)可以借助POWERDESIGNER等系统分析与设计辅助工具进行数据库设计,也可以使用WORD文件直接生成各种设计文档。
(2)选择的数据库应用系统应该规模适中,不宜太大太复杂,可能做不完;也不宜太小太简单,甚至仅有三两个表组成。
(3)要设计良好的数据库完整性约束。
(4)思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点?4实验步骤4.1 数据库概念模型设计(1)进行需求分析。
(2)设计数据库概念模型,画出E-R图。
4.2 数据库逻辑模型设计(3)根据数据库概念模型设计数据库的逻辑模型。
数据库技术实验六

课程名称数据库技术实验成绩实验名称存储过程和触发器的使用学号XX 班级日期实验目的:1.掌握存储过程的使用方法;2.掌握触发器的实现方法;实验平台:利用RDBMS(SQL Server 2008)与其交互查询工具(查询分析器)来操作T-SQL语言;实验内容:1.存储过程(1)创建存储过程,要求当一个员工的工作年份大于6年时将其转到经理办公室工作。
alterprocedure yuangong_infolEmployeeID char(6),name nchar(20)asbegindeclare year intset year=(select WorkYearfrom Employeeswhere EmployeeID=EmployeeID)declare DepartmentID char(3)set DepartmentID=(select DepartmentIDfrom Departmentswhere DepartmentName=name)if (year>6)update Employeesset DepartmentID=DepartmentIDwhere EmployeeID=EmployeeIDEndexec dbo.yuangong_infol'000000','经理办公室'(2)创建存储过程,根据每个员工的学历将收入提高500元。
alterproc SA_INenu char(6)asbeginupdate Salaryset InCome=InCome+500from Salary,Employeeswhere Employees.EmployeeID=Salary.EmployeeID and Education=enuendselect InComefrom Salary,Employeeswhere Salary.EmployeeID=Employees.EmployeeID and Education='本科'goexec dbo.sa_in'本科'goselect InComefrom Salary,Employeeswhere Salary.EmployeeID=Employees.EmployeeID and Education='本科'select InComefrom Salary,Employeeswhere Salary.EmployeeID=Employees.EmployeeID and Education='本科'(3)创建存储过程,使用游标计算本科与以上学历的员工在总员工数中的比例。
数据库作业实验六

数据库作业实验六实验六实验名称:连接查询⼀、实验⽬的掌握使⽤连接的⽅法从多个表中查询数据。
理解内连接、外连接(包括左外连接、右外连接和全外连接)、⾃⾝连接的概念和使⽤。
要求学⽣熟练掌握在FROM⼦句和在WHERE⼦句中指定连接条件的这两种⽅法。
⼆、实验原理在查询语句的FROM⼦句中⽤以下形式实现各种连接操作:●FROM 表1 [INNER] JOIN 表2 ON 表1.列名=表2.列名(实现内连接)●FROM 表1 LEFT [OUTER] JOIN 表2 ON 表1.列名=表2.列名(实现左外连接)●FROM 表1 RIGHT [OUTER] JOIN 表2 ON 表1.列名=表2.列名(实现右外连接)●FROM 表1 FULL [OUTER] JOIN 表2 ON 表1.列名=表2.列名(实现全外连接)●FROM 表1 AS 别名1 JOIN 表1 AS 别名2 ON 别名1.列名=别名2.列名(实现⾃⾝连接)在查询语句的WHERE⼦句中⽤以下形式实现各种连接操作:●FROM 表1,表2 WHERE 表1.列名=表2.列名(实现内连接)●FROM 表1,表2 WHERE 表1.列名*=表2.列名(实现左外连接)●FROM 表1,表2 WHERE 表1.列名=*表2.列名(实现右外连接)●FROM 表1 AS 别名1 ,表1 AS 别名2 WHERE 别名1.列名=别名2.列名(实现⾃⾝连接)三、实验设备安装有SQL SERVER 2005的计算机。
四、实验⽰例1、检索product 表和sale_item表中数量⼤于2的相同产品的产品编号、产品名称、数量、单价。
select a.prod_id,a.qty,a.unit_price,b.prod_namefrom sale_item as a inner join product as b /*如果改成left join/right join 试分析结果*/on (a.prod_id=b.pro_id) and a.qty>2order by a.prod_id2、查找出employee表中住址相同的员⼯的姓名、性别、职称、薪⽔、住址。
数据库实验报告(7个实验完整附截图)

福建农林大学计算机与信息学院实验报告课程名称:数据库原理及应用姓名:系:计算机科学与技术专业:计算机科学与技术年级:2012 级学号:指导教师:***2014 年5月18 日实验项目列表实验一:数据库的定义实验一、实验目的:1、理解MySQL Server 6.0 服务器的安装过程和方法;2、要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL 语句和进行结果分析。
二、实验环境:硬件:PC机软件:Windows操作系统、MySQL Server 6.0 和Navicat for MySQL 9.0三、实验内容和原理:1、安装MySQL以及相应的GUI工具2、用SQL命令,建立学生-课程数据库基本表:学生Student(学号Sno,姓名Sname,年龄Sage,性别Ssex,所在系Sdept);课程Course(课程号Cno,课程名Cname,先行课Cpno,学分Ccredit);选课SC(学号Sno,课程号Cno,成绩Grade);要求:1) 用SQL命令建库、建表和建立表间联系。
2) 选择合适的数据类型。
3) 定义必要的索引、列级约束和表级约束.四、实验步骤:1、运行Navicat for MySQL,然后进行数据库连接,进入到GUI界面;2、利用图形界面建立基础表:student 表的信息:course表的信息:sc表的信息:字段名类型长度约束条件Sno varchar9非空、主键、与student表中Sno外键关联,级联删除Cno varchar 4Grade smallint6非空、主键、与course表中Cno外键关联(1)连接数据库,在 localhost 中点击鼠标右键(如图1所示),点击“新建数据库”,在弹出的窗口中输入数据库名称(如图2所示),然后单击“确定”,就完成了数据库的建立。
数据库实验六报告

实验项目SQL Server 2000中数据库完整性约束触发器设置所属课程数据库原理实验目的1)熟悉通过SQL对数据进行完整性约束触发器控制。
2)完成作业的上机练习。
实验环境SQL Server 2000 window XP实验内容要求:在SQLSERVER2000中利用SQL语句完成以下操作。
1)通过SQL对表建立完整性约束。
2)通过SQL创建插入触发器。
3)通过SQL创建删除触发器。
4)通过SQL创建更新触发器实验过程1)复制生成xscj数据库的代码并运行。
2)为student表的年龄字段增加名为Checkage约束条件,限制年龄介于15到25之间。
3)为student表建立触发器Sinsert,如果student表中插入一条记录,则取消插入并提示错误。
4)为student表建立触发器Smodi,如果student表中某一学生年龄加1,则SC表中该学生的各门成绩都加15)为student表建立触发器Sdel,如果student表中某一学生删除,则SC表中该学生记录也删除。
实验结果及分析1.首先打开SQL查询分析器,复制生成xscj数据库的代码并运行实验操作步骤通过SQL Server 2000软件运行后所得截图如下:2:新建约束条件checkage:3:测试sinsert触发器:4.建立触发器Smodi:运行smodi触发器,当学好为2002151121的学生的年龄加一,sc表中,该同学的成绩加1.5:创建触发器sdel:运行sdel触发器,如图,删除学号为2002151121的在student表中的学生记录,相应的SC表中的记录也删除了。
实验心得总结通过这次的实验,我熟悉掌握了通过SQL对表建立完整性约束,了解了创建插入触发器,更加深入地学习了数据库的一些知识,充分地运用SQL软件的功能。
在为student表建立触发器Sdel,如果student表中某一学生删除,则SC表中该学生记录也删除的过程中存在着很多困难,多次运行失败,我通过查询资料以及翻阅课本知识,深入了解触发器的一些知识,对问题有了一些头绪,能够运行成功,基本解决的这个问题。
数据库 实验报告(实验六)

沈阳工程学院学生实验报告(课程名称:数据库原理及应用)实验题目:数据库设计班级软件本111 学号2011417104姓名吴月芬日期2012-11-27地点F606 指导教师孙宪丽祝世东一、实验目的利用PowerDesigner,熟练掌握数据库设计的步骤和方法。
二、实验环境安装能进行PowerDesigner操作的微机。
三、实验内容与要求工厂物资管理系统数据库中涉及到仓库、零件、供应商、项目和职工信息存储。
具体如下:(1)仓库包含属性仓库号、面积、电话号码,本实验涉及的属性数据类型和长度自己确定。
(2)零件包含属性零件号、名称、规格、单价、描述。
(3)供应商包含属性供应商号、姓名、地址、电话号码、帐号。
(4)项目包含属性项目号、预算、开工日期。
(5)职工包含属性职工号、姓名、年龄、职称。
在工厂物资管理系统中一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,用库存量来表示某种零件在某个仓库中的数量;一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作;职工之间具有领导-被领导关系,即仓库主任领导若干保管员;一个供应商可以供给多个项目多种零件,每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,同时记录某个供应商供给某个项目的零件数量。
进行此工厂物资管理系统的数据库设计。
具体要求:(1)在CDM工作区中设计出给定的概念模型,检查合理性。
(2)自动产生物理模型,检查是否正确。
(3)自动产生数据库中的表。
四、实验过程及结果分析1.进入PowerDesigner2.选择“Welcome to PowerDesigner”窗口中的“Create Model”选项或选择“File”/“New”,或单击,打开“New Model”窗口,点击“Model types”,选择“Conceptual Data Model”。
3.单击“OK”,进入CDM工作区。
4.添加实体,设置属性.同样的方法完成其他的实体的建立。
数据库实验报告(6)

数据库实验报告(6)一实验题目1.存储过程的定义和使用2。
触发器的创建和使用二实验目的1.掌握存储过程的定义、执行和调用方法。
2.掌握触发器的创建和使用。
三实验内容1.存储过程的定义和使用(1)创建存储过程查找姓李的学生的选修课成绩信息。
(2)创建一个存储过程,计算每个学生选修课的总分,并显示得分最高的三名学生的分数。
(3)创建一个存储过程以查找课程的最高分数(带有输入参数的存储过程)。
(4)创建一个存储过程来计算同学的平均分数并返回统计结果。
(带输入和输出参数的存储过程)(5)创建一个存储过程,计算选修课的数量,然后返回数字。
(6)用存储过程统计选修课,用存储值最多的学生。
(存储过程的嵌套)2.触发器的创建与使用(1)如果学分大于5,在为表格C插入新课程信息时,定义行前级别的触发学分uu触发器分,自动修改为5分。
(2)定义行后级别触发器。
当SC表的等级发生变化时,它将自动出现在等级变化表SC_uu增加日志中加一条新的纪录,该新纪录包括:操作者名称、操作日期、操作类型。
(3)建立一个delete触发器,针对于sc表,每次只能删除一条信息。
(4)创建不允许用户更改学号的更新触发器。
如果学生号被更改,将给出提示信息:学生号不允许更改。
(5)执行相应的SQL语句来触发上面定义的触发器。
(6)删除触发信用触发四实验步骤1.存储过程的定义和格式:createproc[edure]procedure_name[;number][{@parameterdata_type}[变化][=默认值][输出][with[用于复制]assql_statement[...n]创建存储过程以查找姓李的学生的选修课分数信息。
(1)创建存储过程,统计每个学生的选修课的总成绩,显示成绩最好的前3名学生成绩。
SC表的基本信息如图1所示:图表1代码:createprocp_sumscoreas从SCGroupByNo中选择Top 3Sum(成绩)作为总分execp_sumscore运行结果:命令已成功完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库上机实验六
实验名称:视图的建立与使用(续)和数据库的安全性控制
一、实验目的
1.加深掌握视图的定义与工作原理。
2.理解SQL SERVER 2000登录账户、数据库用户、角色、权限的概念及管理方法。
二、实验内容与步骤
1.对视图的操作
(1)创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址。
create view cus_SH as
select cust_id, cust_name, addr
from customer
where addr = '上海'
(2)删除题1建立的视图中所有姓“王”的客户数据。
delete
from cus_SH
where cust_name like '王%'
(3)对题(1)建立的视图添加一条记录数据(注意:分别查看customer表和该视图的结果)。
insert into cus_SH
values ('10010','叶秀玲','武汉')
/*
无法将 NULL 值插入列 'tel_no',表 'Sale_Manage.dbo.customer';该列不允许空值。
INSERT 失败。
语句已终止。
*/
(4)通过题(1)建立的视图修改表内某一客户的姓名。
update cus_SH
set cust_name = '王子'
where cust_name = '王'
(5)有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额。
create view emp_sale as
select emp_no, emp_name, order_no, tot_amt
from employee, sales
where emp_no = sale_id
(6)给题(5)建立的视图添加一条记录数据。
insert into emp_sale
values ('E1000', '肖萧', '1009', '900.00')
--视图或函数 'emp_sale' 不可更新,因为修改会影响多个基表。
(7)将题(5)建立的视图中订单号为1001的记录的销售总金额改为60000。
update emp_sale
set tot_amt = 60000
where order_no = '1001'
(8)删除题5建立的视图。
drop view emp_sale;
2.数据库的安全性控制
(1)创建两个新的SQL SERVER登录账户,其中一个登录账户名为Sale,密码为123456,使用的默认数据库为Sale_Manage;另一个登录账户名为Human,密码为654321,使用的默认数据库为Sale_Manage;
--查看登录账号:EXEC sp_helplogins
--exec sp_addlogin '登陆账号名', '密码', '默认数据库名', '使用的语言' exec sp_addlogin 'Sale', '123456', 'Sale_Manage', NULL
exec sp_addlogin 'Human', '654321', 'Sale_Manage', NULL
/* 运行结果:已创建新登录
已创建新登录
*/
(2)将Sale加入到securityadmin服务器角色中。
--EXEC sp_addsrvrolemember '登录帐号', '服务器角色名称'
EXEC sp_addsrvrolemember 'Sale', 'securityadmin'
--运行结果:'Sale' 已添加到角色 'securityadmin' 中。
(3)为数据库Sale_Manage的登录账户Sale创建一个数据库用户Person_Manage,为登录账户Human创建一个数据库用户human_Manage。
/*
查看数据库用户 use Sale_Manage
EXEC sp_helpuser
*/
--USE 数据库名
--EXEC sp_adduser ‘登录帐号’, ‘用户帐号’, ‘所属的数据库角色’
use Sale_Manage
exec sp_adduser 'Sale', 'Person_Manage', 'db_owner'
use Sale_Manage
exec sp_adduser 'Human', 'human_Manage', 'db_owner'
/*
运行结果:已向 'Sale' 授予数据库访问权。
'Person_Manage' 已添加到角色 'db_owner' 中。
已向 'Human' 授予数据库访问权。
'human_Manage' 已添加到角色 'db_owner' 中。
*/
(4)为数据库Sale_Manage创建一个数据库角色Managers,该角色拥有对数据库中的表employee查询和修改的权限。
/*查看数据库角色:use Sale_Manage
EXEC sp_helprole
查看自定义数据库角色的权限: EXEC sp_helprotect NULL, 'Managers'
创建数据库角色:USE 数据库名
EXEC sp_addrole ‘角色名’, ‘拥有者’
*/
USE Sale_Manage
EXEC sp_addrole 'Managers' , 'dbo'
--运行结果:新角色已添加
-- 授权: Grant 权限 on 表名 to 角色
Grant select,update on employee to Managers
Grant update on employee to Managers
--运行结果:命令已成功完成
(5)将数据库用户Person_Manage添加到数据库角色Managers和db_backupoperator 中。
--在当前数据库中添加数据库角色新成员:
--EXEC sp_addrolemember 数据库角色数据库用户
exec sp_addrolemember 'Managers', 'Person_Manage'
exec sp_addrolemember 'db_backupoperator', 'Person_Manage'
/*
运行结果:'Person_Manage' 已添加到角色 'Managers' 中。
'Person_Manage' 已添加到角色 'db_backupoperator' 中。
*/
(6)将对表employee中emp_name列的select操作权限授予角色public。
--Grant 权限(列名) on 表名 to 角色
grant select(emp_name) on employee to public
(7)将创建表和创建视图的权限授予数据库用户Person_Manage。
--Grant 权限 to 数据库用户
grant create table, create view to Person_Manage
(8)拒绝给数据库用户human_Manage授予创建表和创建视图的权限。
--deny 权限 to 数据库用户
deny create table, create view to Human_Manage
(9)用T-SQL完成下列功能:数据库用户human_Manage拥有表customer;human_Manage 将表customer的select权限授予角色Managers,并使该角色具有将指定的对象权限授予其他安全账户的能力。
--拥有表即具有对该表操作的所有权限
grant all on customer to Human_Manage
--给角色授权查询
grant select on customer to Managers
with grant option
三、实验报告
按实验名称、实验目的、实验内容、实验结果的顺序在作业本上写出。