数据库实验六

合集下载

数据库实验内容-答案

数据库实验内容-答案

实验内容:实验一:数据库的操作使用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个实验完整附截图)

数据库实验报告(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)

数据库实验报告(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运行结果:命令已成功完成。

实验六 数据库的查询数据库的查询 实验报告

实验六 数据库的查询数据库的查询 实验报告

实验6 数据库的查询(三)一.实验名称:数据库的查询(三)二.目的和要求:(1)掌握数据汇总的方法。

(2)掌握SELECT语句的GROUP BY子句的作用和使用方法。

(3)掌握SELECT语句的ORDER BY子句的作用和使用方法。

三.实验准备(1)了解数据汇总的方法。

(2)了解SELECT语句的GROUP BY子句的作用和使用方法。

(3)了解SELECT语句的ORDER BY子句的作用和使用方法。

四.实验时间:2011年4月28日五.实验设备和实验环境:(1) PC机。

(2) SQL Server 2000。

六.实验内容:1.数据汇总(1)求数学系学生的平均年龄。

在查询分析器的编辑窗口输人如下语句并执行。

SELECT A VG(Sage) AS ‘数学系平均年龄’FROM StudentWHERE Sdept=’CS’思考与练习:查询数学系学生的最高年龄和最低年龄。

select max(sage) as '最高年龄',min(sage) as '最低年龄'from studentwhere sdept='math'(2)求选修数据库系统学生的平均成绩。

在查询分析器的编辑窗口输入如下的语句并执行:SELECT A VG(Grade) AS ‘数据库系统平均成绩’FROM ScWHERE Cno=(SELECT CnoFROM CourseWHERE Cname=’数据库系统’)思考与练习:求选修数据库系统学生的最高成绩和最低成绩。

select max(grade) as '最高成绩',min(grade) as '最低成绩'from scwhere cno=(select cnofrom coursewhere cname='数据库')(3)求数学系学生的总人数。

在查询分析器的编辑窗口输入如下的语句并执行:SELECT COUNT(Sno)FROM StudentW HERE Sdept=‘数学系’思考与练习:统计选修数据库系统课程成绩大于等于90分的人数。

实验六 数据库的完整性定义与检查 (2)

实验六  数据库的完整性定义与检查 (2)

实验六数据库的完整性定义与检查实验目的:1.充分理解关系数据库中关于数据库完整性的概念。

2.掌握实体完整性的定义和检查方法。

3.掌握参照完整性的定义和检查方法。

4.掌握用户自定义完整性的定义和检查方法。

实验内容:一、在企业管理器中定义以下数据表中各字段的完整性约束(包括实体完整性、参照完整性和用户定义完整性)。

1.Student表。

记录学生基本信息。

表1-1 Student 表结构[Sno] [char](9)PRIMARY KEY,[Sname] [char](8)NOT NULL,[Ssex] [char](2)CHECK(Ssex IN('女','男')),[Sage] SMALLINT CHECK(Sage>=15 AND Sage<=45),[Sdept] [char](20)default('计算机'))2.Course表。

记录课程信息。

表1-2 Course 表结构[Cno] [char](10)PRIMARY KEY,[Cname] [char](20)NOT NULL,[Ccredit] SMALLINT CHECK(Ccredit>0),[Semester] SMALLINT CHECK(Semester>0),[Period] SMALLINT CHECK(Period>0),)3.Sc表。

记录学生选修课程的信息。

表1-3 Sc 表结构[Sno] [char](9)NOT NULL,[Cno] [char](10)NOT NULL,[Grade]SMALLINT CHECK(Grade>=0 and Grade<=100),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno))二、在查询编辑器中,写出创建表的语句同时写出设置实体完整性、参照完整性和用户自定义完整性的语句。

数据库实用技术-实验六

数据库实用技术-实验六

实验报告单院(系)计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4305 组号日期课程数据库实用技术指导教师成绩实验项目编号8103203006 实验项目名称索引和数据的完整性一、实验目的(1)掌握索引的使用方法;(2)掌握数据完整性的实现方法;二、实验环境WIN7操作系统SQL Server2008三、实验原理(或要求)(1)了解索引的作用与分类;(2)掌握索引的创建方法;(3)理解数据的完整性的概念与分类;(4)掌握各种数据完整性的实现方法。

四、实验步骤(1)建立索引①使用CREATE INDEX语句创建索引。

●对YGGL数据库的Employees表中的DepartmentID列建立索引。

在查询分析器中输入如下程序并执行:USE YGGLGOCREATE INDEX depart_indON Employees(DepartmentID)GO●在Employees表的Name列和Address列上建立复合索引。

CREATE INDEX Ad_indON Employees(Name,Address)●对Departments表上的DepartmentName列建立唯一非聚集索引。

CREATE UNIQUE INDEX Dep_indON Departments(DepartName)②使用界面方式创建索引。

使用界面方式在Employees表的PhoneNumber列上创建索引。

启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引,选择“新建索引”选项。

在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完成创建工作。

(2)重建索引。

重建表Employees中的所有索引。

USE YGGLGOALTER INDEX ALLON Employees REBUILD(3)删除索引。

数据库实验六实验报告

数据库实验六实验报告
梧 州 学院
实验报告
实验课程:数据库原理 学 院:信息与电子工程学院
梧州学院实验报告
SQL server 2014
1、掌握T-SQL 流控制语句; 2、掌握创建存储过程得方法; 3、掌握存储过程得执行方法; 4、掌握存储过程得管理与维护;
实验原理: 存储过程就是一种数据库对象,将执行计划存储在数据库得服务器中。它得运行速度比
Exec course_average cname,avg out
begin
if avg <60
print cast(cname as varchar)+ '课程得平均成绩为'+cast
else
print '不存在,可创建!’
go
create procedure student_sc sno1 nchar(8),sno2 nchar(8) as select student、sno,sname,sum(grade)总成绩 from student,sc,course where student、sno=sc、sno
select student、sno ,sname,DATEDIFF (year,birth,getdate())as age, cname,grade
from student ,sc ,course where student 、sno=sc、sno and sco =course o
and sdept like depart ‫ ﻩ‬and sname like name
x“。
执行语句为:
批处理语句:
declare
avg int

declare cname nvarchar(20)
Exec course_average cname,avg out

数据库原理实验报告

数据库原理实验报告

计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级:2012级本科班学号:*****姓名:指导教师:2014年06月18 日实验项目列表计算机与信息学院实验报告纸实验一数据库创建与管理一、实验目的与要求1、熟练掌握SSMS中界面方式创建和管理数据库。

2、熟练掌握SSMS查询编辑器T-SQL语句创建和管理数据库。

3、熟练掌握备份和还原数据库。

二、实验内容1、界面方式创建和管理数据库(1)创建数据库(2)修改数据库(3)删除数据库2、利用企业管理器备份和还原数据库(1)备份数据库(2)还原数据库3、T-SQL语句方式创建和管理数据库(1)创建SPJ数据库:在SSMS中“新建查询”,输入以下语句并运行CREATE DATABASE SPJON(NAME=’SPJ_Data’,FELENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Data.MDF' ,SIZE = 3,MAXSIZE = 10,FILEGROWTH = 10%)LOG ON(NAME = 'SPJ_Log', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Log.LDF' ,SIZE = 1,FILEGROWTH = 10%)(2)修改SPJ数据库:在查询分析器中输入以下语句并运行ALTER DATABASE SPJMODIFY FILE(NAME='SPJ_Data',SIZE=4,ALTER DATABASE SPJADD FILE(NAME='SPJ_Data_2', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SPJ_Date_2.ndf',SIZE=1,MAXSIZE=10,FILEGROWTH=10%)(3)删除SPJ数据库:DROP DATABASE SPJ4、界面方式创建数据库XSBOOK,写出操作过程。

SQL数据库实验报告实验六

SQL数据库实验报告实验六

第1部分实验8 存储过程和触发器1.实验目的(1)掌握通过SQL Server 管理平台和Transact-SQL 语句CREA TE PROCEDURE 创建存储过程的方法和步骤。

(2)掌握使用Transact-SQL 语句EXECUTE 执行存储过程的方法。

(3)掌握通过SQL Server 管理平台和Transact-SQL 语句ALTER PROCEDURE 修改存储过程的方法。

(4)掌握通过SQL Server 管理平台和Transact-SQL 语句DROP PROCEDURE 删除存储过程的方法。

(5)掌握通过SQL Server 管理平台和Transact-SQL 语句CREA TE TRIGGER 创建触发器的方法和步骤。

(6)掌握引发触发器的方法。

(7)掌握使用SQL Server 管理平台或Transact-SQL 语句修改和删除触发器。

2.实验内容及步骤(1)在查询设计器中输入以下代码,创建一个利用流控制语句的存储过程letters_print ,该存储过程能够显示26个小写字母。

CREATE PROCEDURE letters_print ASDECLARE @count int SET @count=0 WHILE @count<26 BEGINPRINT CHAR(ASCII('a')+ @count) SET @count=@count +1 END单击查询分析器的“执行查询”按钮,查看studentsdb 数据库的存储过程是否有letters_print 。

使用EXECUTE 命令执行letters_print 存储过程。

(2)输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。

CREATE PROCEDURE stu_info @name varchar(40)ASSELECT a.学号,姓名,课程编号,分数FROM student_info a INNER JOIN grade taON a.学号= ta.学号WHERE 姓名= @name使用EXECUTE命令执行存储过程stu_info,其参数值为“马东”。

数据库实验1-7

数据库实验1-7

1《实验一 认识DBMS 》在SQL Server 2005中完成以下操作:(1) 建立SC 数据库,数据库命名:SC_姓名拼音+学号后三位,如SC_xiebing131;(2) 在其中建立Student 表、Course 表和SC 表,表结构如下,自己选择各属性的数据类型;学生关系Student(Sno ,Sname ,Ssex ,Sage ,Sdept)其中Sno 为主码,并且Sname 取值也唯一 课程关系Course(Cno ,Cname ,Cpno ,Ccredit)其中Cno 为主码,并且Cname 取值也唯一选修关系SC(Sno ,Cno ,Grade) 其中Sno 和Cno 不能为空,(Sno, Cno)为主码(3) 参照教材在各表中输入一定的记录,在student 表中输入一条自己的记录;(4) 进行表结构的修改和记录的修改、删除操作;(5) 验证教材P45基本关系具有的6个性质;(6) 分离数据库,保存数据库文件,以后上机要带上。

《实验二数据定义》实验内容:(1) 数据库的定义与删除(2)基本表的创建、修改及删除;(3) 索引的创建和删除;(4) 使用SQL 对数据进行完整性控制(实体完整性、参照完整性);(一)使用命令行方式建立SPJ 数据库(1)用SQL 语言建立SPJ 数据库,数据库命名:SPJ-姓名拼音+学号后三位,如SPJ-liyan112;(2)用SQL 语言在其中建立S 表、P 表、J 表和SPJ 表(要求进行完整性定义),表结构如下;厂家 S (SNO ,SNAME ,STA TUS ,CITY ),其中STA TUS (状态)为整型,其他均为字符型产品 P (PNO ,PNAME ,COLOR ,WEIGHT ),其中WEIGHT (重量)为浮点型,其他均为字符型工程 J (JNO ,JNAME ,CITY ),其中各属性均为字符型供应 SPJ (SNO ,PNO ,JNO ,QTY ),其中QTY (供应量)为整型,其他均为字符型建立数据表的语法格式CREA TE TABLE <表名>(<列名><数据类型>[<列级完整性约束条件> ] [,<列名><数据类型>[<列级完整性约束条件>]] …[,<表级完整性约束条件> ] );(3) 参照教材用SQL 语言分别在4个数据表中输入一定的记录;插入数据的语法格式:INSERTINTO <表名> [(<属性列1>[,<属性列2 >…)]V ALUES (<常量1> [,<常量2>] … )(4) 保存SQL 文件,文件名:SPJ-姓名拼音+学号后三位.sql ,如SPJ-xukai012.sql(二)使用命令行方式建立学生课程数据库(1) 用SQL 语言建立学生课程数据库,数据库命名:SC_学号后四位及姓名,如SC_3112liyan ;(2) 用SQL 语言在学生课程数据库中建立3个表,要求进行完整性定义;学生关系Student(Sno ,Sname ,Ssex ,Sage ,Sdept)其中Sno 不能为空,值是唯一的,并且Sname 取值也唯一,Sage 自定义约束“大于16” 课程关系Course(Cno ,Cname ,Cpno ,Ccredit)其中Cno 不能为空,值是唯一的,并且Cname 取值也唯一教师关系Teacher(Tno ,Tname ,Department ,Email ,Salary) 其中Tno 不能为空,值是唯一的选修关系SC(Sno ,Cno ,Grade) 其中Sno 和Cno 不能为空,(Sno, Cno)为主码,Grade 的数据类型为int(3) 修改数据表:✓ 将SC 表中Grade 的数据类型改为f loat ;✓ 在Student 表中增加一个属性Scome 记录学生的入学时间,其数据类型为DATETIME ;✓ 删除Student 表中新增加Scome 属性;✓ 删除表Teacher 表中的Email 属性;✓ 删除Student 表中对Sname 属性创建的Unique 约束。

数据库原理与应用实验6(二版)

数据库原理与应用实验6(二版)

数据库原理与应用实验6(二版)实验六 T-SQL数据库单表查询一、实验目的及要求本实验主要目的是让学生通过本实验掌握基于一个表的SELECT语句的使用语法及使用规则,并能运用各种常用的查询方式及其形式。

●掌握SELECT语句的基本语法结构。

●掌握SQL语句中基于一个表的SELECT语句的使用规则和方式。

●能正确设置各种常用查询条件。

●掌握分组汇总查询的使用。

●要求学生不但写出语句,而且要执行语句,得到结果。

二、实验原理及背景知识1、了解SQL中SELECT语句的基本使用方式。

详情参考第一篇第三章。

2、理解关系代数中投影运算和选择运算的概念及原理。

简单来讲,SELECT实现的是投影,where实现选择运算。

3、实验前需要了解所使用的数据库中表的结构。

4、实验前需要在stuManag数据库中输入模拟数据。

三、实验内容及步骤Ⅰ:基本实验内容(一)输入下面的查询语句,执行后验证实验结果1、查询100165专业的学生的学号、姓名、性别和出生年月信息SELECT sno,sname,ssex,sbirthFROM studentWHERE mno=‘100165’2、查询职称不是教授的所有教师的全部信息SELECT *FROM teacherWHERE trank< >‘教授’3、查询不姓陈的学生学号和姓名信息SELECT sno,snameFROM studentWHERE sname NOT LIKE ‘陈%’4、查询100165专业中1991年之前出生的学生的学号、姓名、性别及出生年月信息SELECT sno,sname,ssex,sbirthFROM studentWHERE (mno=‘100165’) AND (sbirth <‘1991/01/01’)5、查询所有学生的序号、姓名及年龄信息,其中年龄由出生年月转换得到SELECT sno,sname,CAST((GETDATE()-sbirth)AS int)/365 AS ‘年龄’FROM student6、查询所有学生的学号、姓名、性别及出生年月信息,按照专业号升序、出生年月降序排列SELECT sno,sname,Ssex,sbirth,mnoFROM studentORDER BY mno,sbirth DESC7、查询091650102同学的所有课程的平均分、最高分和最低分SELECT AVG(grade) AS 平均分,MAX(grade) AS 最高分,MIN(grade) AS 最低分FROM skcWHERE sno=‘091650102’(二)输入下面查询语句,然后运行,根据结果思考并记录其功能1、SELECT *FROM skcWHERE Grade between 80 and 85功能:_________________________________________________2、SELECT count(*) as ‘0916501班人数’FROM studentWHERE sno like ‘0916501%’功能:_________________________________________________3、SELECT COUNT(*) AS ‘信管专业女学生人数‘FROM studentWHERE mno=‘100165’ AND ssex=‘女’功能:_________________________________________________4、SELECT DISTINCT SUBSTRING(sname,1,1)FROM student功能:_________________________________________________5、SELECT sno,sname,ssex,mnoFROM studentWHERE mno IN (‘100165’,’201148’,’100838’)功能:_________________________________________________6、SELECT sno,snameFROM studentWHERE sname LIKE ‘[陈李]%’功能:_________________________________________________7、SELECT kno,avg(Grade ) as ‘平均分’from skcWHERE sno like ‘09165%’GROUP BY kno功能:_________________________________________________(三)阅读并分析下面查询语句,根据其功能,补全语句之后进行验证1、查询0916502班超过5人选修的课程选修人数及平均分。

数据库6实验报告

数据库6实验报告

数据库实验报告实验六:储存过程的建立与调用指导老师:杜献峰专业班级:计科122班学号:201200814211姓名:温阳阳实验六存储过程建立与调用一.实验目的:对于Oracle11g,掌握Oracle11g的存储过程的建立。

使用SQL PLUS和SQL Developer进行存储过程的建立。

对于SQL Server,理解并掌握利用SQL Server 数据库库服务器的存储过程的建立与调用,并理解概念。

能够熟悉用数据库一种开发平台进行存储过程的调用。

二.实验属性:设计性。

三.实验仪器设备及器材:1.安装有windows操作系统计算机。

2.安装有Oracle11g和SQL Server的计算机。

3.安装有Visual Studio .net和Java编译器(eclipse、Netbean等)的编译器。

4.计算机具备网络环境。

四.实验要求1、利用存储过程,向student表添加一条学生信息。

creat procedure Insert_Student(s_sno in student.sno%type,s_sname in student.sname%type,s_ssex in student.ssex%type,s_sage in student.sage%type,s_sdept in student.sdept%type) asbegininsert into system.student(sno,sname,ssex,sage,sdept)values(s_sno,s_sname,s_ssex,s_sage,s_sdept);commit;end Insert_Student;2、利用存储过程从student、course、sc表的连接中返回所有学生的学号、姓名、所选课程及成绩。

creat procedure Show_All_Record(myCursor out mytype)asbeginopen Cursor forselect student.sno as 学号,sname as 姓名,cname as 课程名,grade as 成绩from student,course,scwhere student.sno = sc.sno and o = o;end Show_All_Record;3、用存储过程查找“刘刚”的学号、所选课程、成绩。

数据库应用实验报告6

数据库应用实验报告6

《数据库及其应用(yìngyòng)》(课程(kèchéng)编号:B0901000)实验报告(2013-2014学年(xuénián)第2学期)实验成绩:学号: 1303100117姓名:曹冬玲专业(zhuānyè)班级:房产(fángchǎn)1301 课堂号: B0901000任课教师:刘勘完成日期: 2014年5月29日星期四(2)查询“工商管理”专业所有女生的信息。

SELECT 专业名称,学生.*FROM 专业 INNER JOIN 学生 ON 专业.专业编号=学生.专业编号WHERE 专业.专业名称=“工商管理”AND 学生.性别=“女”;(3)查询作为“项目负责人”的学生的学号、姓名、性别。

保存为“负责人”查询。

SELECT 学生.学号,姓名,性别FROM 学生 INNER JOIN 项目分工 ON 学生.学号=项目分工.学号WHERE 分工=“负责人”;(4)查询没有参与项目的学生学号、姓名、专业名称。

SELECT 学号,姓名,专业名称FROM 学生 INNER JOIN 专业 ON 学生.专业编号=专业.专业编号 WHERE 学号 NOT IN (SELECT 学号 FROM 项目分工);(5)查询参与项目超过1项的学生学号、姓名和参与项目数。

SELECT 学生.学号,姓名,COUNT(*)FROM 学生 INNER JOIN 项目分工 ON 学生.学号=项目分工.学号 GROUP BY 学生.学号,姓名HAVING COUNT(*)>1;(6)查询参与项目最多的学生学号、姓名和参与项目数。

SELECT TOP 1 学生.学号,姓名,COUNT(*)AS 参与项目数FROM 学生 INNER JOIN 项目分工 ON 学生.学号=项目分工.学号GROUP BY 学生.学号,姓名ORDER BY COUNT(*) DESC;(7)查询与农村或农业有关的项目及负责人姓名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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
三、实验报告
按实验名称、实验目的、实验内容、实验结果的顺序在作业本上写出。

相关文档
最新文档