数据库实验五
实验5 索引和数据完整性_MySQL数据库教程_[共3页]
177
实验5
索引和数据完整性
目的与要求
(1)掌握索引的使用方法;
(2)掌握数据完整性的实现方法。
实验准备
(1)了解索引的作用与分类;
(2)掌握索引的创建方法;
(3)理解数据完整性的概念及分类;
(4)掌握各种数据完整性的实现方法。
实验内容
1.创建索引
(1)使用CREATE INDEX 语句创建索引
① 对YGGL 数据库的Employees 表中的DepartmentID 列建立索引。
在MySQL 客户端输入如下命令并执行:
create index depart_ind
on Employees(DepartmentID);
② 在Employees 表的Name 列和Address 列上建立复合索引。
create index Ad_ind
on Employees(Name, Address);
③ 对Departments 表上的DepartmentName 列建立唯一性索引。
create unique index Dep_ind
on Departments(DepartmentName);
【思考与练习】
a .索引创建完后可以使用SHOW INDEX FROM tbl_name 语句查看表中的索引。
b .对Employees 表的Address 列进行前缀索引。
c .使用CREATE INDEX 语句能创建主键吗?
(2)使用ALTER TABLE 语句向表中添加索引
① 向Employees 表中的出生日期列添加一个唯一性索引,姓名列和性别列上添加一个复合索引。
使用如下SQL 语句:。
数据库原理_实验五指导书
数据库原理
实验指导书
实验五SQL Server 2000中数据库安全性设置
1. 实验的目的
1)熟悉通过SQL对数据进行安全性控制。
2)完成作业的上机练习。
2. 实验内容
要求:在SQLSERVER2000中利用SQL语句完成以下操作。
1)通过SQL对登入账号,用户的创建修改与删除。
2)通过SQL对角色管理,以及角色中添加用户。
3)对角色和用户数据的授权和权力回收
3. 实验步骤
1)复制生成xscj数据库的代码并运行。
2)创建登入账号和用户名s1,s2,t1,t2,l1,l2密码与账号相同默认登入访问xscj数据库。
3)创建角色student,teacher,leader。
4)为角色student授权student表、course表和SC表的select 权力,拒绝修改和删除这三个表的权力
5)为角色teacher授权student表、course表和SC表的select 权力,以及对SC表的修改,插入更新的权力, 拒绝修改student表和course表的权力
6)为角色leader授权student表、course表和SC表的select 权力,以及对student表、course 表修改,插入更新的权力,拒绝修改和删除表SC的权力
7)将s1,s2加入student角色
8)将t1,t2加入teacher角色
9)将l1,l2加入leader角色
10)分别以s1,t1,l1登入服务器验证对student表、course表和SC表相应权限的验证。
存储过程和触发器(数据库实验5)
数据库基础与实践实验报告实验五存储过程和触发器班级:惠普测试142学号:**********姓名:***日期:2016-11-141 实验目的:1)掌握SQL进行存储过程创建和调用的方法;2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;3)掌握触发器禁用和重新启用的方法。
2 实验平台:操作系统:Windows xp。
实验环境:SQL Server 2000以上版本。
3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。
1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。
存储过程定义代码:CREATE PROCEDURE JSXX_PROCASSELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND o=o存储过程执行语句与执行结果截图:EXECUTE JSXX_PROC2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。
存储过程定义代码:CREATE PROCEDURE XM_PROC @sname VARCHAR(100)ASBEGINIF EXISTS(SELECT NULL FROM S WHERE sn=@sname)SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE o=o AND SC.sno=S.sno ANDS.sn=@snameELSEPRINT'无该姓名的同学。
'END运行截图:3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。
如果没有该专业,则显示“无此专业”。
存储过程定义代码:CREATE PROCEDURE XBNL_PROC@departName VARCHAR(30)='计算机',@begin INT,@end INTASDECLARE @numOfBoys INTDECLARE @numOfGirls INTDECLARE @d# VARCHAR(3)DECLARE @result VARCHAR(50)BEGINSELECT @d# = dno FROM D WHERE dn=@departNameIF @d# IS NOT NULLBEGINSELECT @numOfBoys =COUNT(sno)FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'SELECT@numOfGirls =COUNT(sno)FROM S WHERE age BETWEEN@begin AND@end AND dno=@d# AND sex='女'SET @result = @departName+'专业年龄在'+CAST(@begin AS VARCHAR(3))+'-'+CAST(@end AS VARCHAR(3))+'之间的男生有'+CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+CAST(@numOfGirls AS VARCHAR(3))+'人'ENDELSESET @result='无此专业。
数据库实验5 多表查询及视图
实验五:多表查询及视图一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握数据表的连接查询、嵌套查询、集合查询的使用方法。
3.掌握创建及管理视图的方法;二、实验学时2学时三、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.掌握连接查询、嵌套查询和集合查询的语法规则;3.掌握使用界面方式和命令方式创建及管理视图;4.完成实验报告;四、实验内容1.以实验3数据库为基础,请使用T-SQL 语句实现进行以下操作:1)查询选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;2)查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;3)按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
其中已修学分为考试已经及格的课程学分之和;4)查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;5)查询只被一名学生选修的课程的课程号、课程名;6)使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;7)使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;8)使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;9)使用集合查询查询选修1号课程同时选修2号课程的同学的学号与姓名;2.以实验数据库为基础数据,利用对象资源管理器创建以下视图:1)创建所有学生学号、姓名及年龄的信息视图v_stu_info2)创建CS系学生基本信息视图v_stu_cs3)创建选修课成绩在80分以上的学生的信息视图v_stu_80,包括学生基本情况及成绩。
3. 以实验数据库为基础数据,请使用T-SQL语句完成以下内容,并将SQL语句写在实验报告册中:1) 创建v_CS视图,包括CS系各学生的学号、姓名及年龄,要求进行修改和插入操作时仍需保证该视图只有CS系的学生;2) 创建v_CS_age20视图,包括CS系学生年龄在20岁以上的基本信息;并保证对视图文本的修改都要符合年龄大于20这个条件。
数据库实验5答案
实验五:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤1.利用Transact-SQL嵌套语句实现下列数据查询操作。
1) 查询选修了计算机体系结构的学生的基本信息。
select*from studentwhere Sno in(select Sno from coursewhere Cno in(select Cno from sc where Cname='计算机体系结构'))2) 查询年龄比李勇小的学生的学号和成绩。
select a.sno,grade from student a,coursewhere a.sno=course.sno and sage<(select sage from student where sname='李勇')3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。
select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。
select*from student where dnum<>'D3'AND SAGE>all(selectsage from student where dnum='D3')5) 查询‘C1’课程的成绩高于70的学生姓名。
数据库实验报告全
数据库实验报告全实验⼀实验⽬的1.熟悉SQL Server Management Studio(SSMS)的⼯作环境2.掌握使⽤和命令建⽴数据库的⽅法3.熟练掌握使⽤SSMS和T-SQL语句创建、修改和删除表。
4.熟练掌握使⽤SSMS和T-SQL语句插⼊、修改和删除表数据。
实验内容1.采⽤SQL Server Management Studio 、T-SQL语句两种⽅式创建产品销售数据库,要求:1)使⽤SSMS创建数据库CPXS_bak,数据⽂件初始⼤⼩为5MB,最⼤⼤⼩50MB,按5MB增长;⽇志⽂件初始为2MB,最⼤可增长到10MB,按2MB增长;其余参数取默认值。
2)⽤T-SQL语句创建数据库CPXS,数据⽂件的增长⽅式改为增长⽅式按10%⽐例增长,其余与CPXS_bak。
3)⽤T-SQL语句删除数据库CPXS_bak。
2.CPXS数据库包含如下三个表:1)产品(产品编号,产品名称,价格,库存量)2)客户(客户编号,客户名称,地区,负责⼈,电话)3)销售(产品编号,客户编号,销售⽇期,数量,销售额)三个表结构如资料中图3.1~图3.3所⽰,请写出创建以上三个表的T-SQL语句并在查询分析器中运⾏。
3.在SSMS中输⼊如资料中图3.4~图3.6的商品表、客户表和销售表的样本数据。
6.将CP表中每种商品的价格打8折。
7.将CP表中价格打9折后⼩于1500的商品删除。
⼆.实验步骤与结果(说明:要写出相关步骤和SQL语句,实验结果可以是运⾏画⾯的抓屏,抓屏图⽚要尽可能的⼩。
)1.1)使⽤SSMS创建数据库CPXS_bak效果图为2)⽤T-SQL语句创建数据库CPXS:CREATE DATABASE CPXSON PRIMARY(NAME='CPXS_DATA',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\CPXS_DATA.MDF', SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=10%)LOG ON(NAME='CPXS_LOG',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\CPXS_LOG.LDF', SIZE=2MB,MAXSIZE=10MB,FILEGROWTH=2MB)3) DROP DATABASE CPXS_bak刷新数据库会看到CPXS_bak不存在2.1) USE CPXSGOCREATE TABLE产品(产品编号char(6)PRIMARY KEY,产品名称char(30)NOT NULL,价格float(8),库存量int,)2) USE CPXSGOCREATE TABLE客户(客户编号char(6)PRIMARY KEY,客户名称char(30)NOT NULL,地区char(10),负责⼈char(8),电话char(12))3)USE CPXSGOCREATE TABLE销售(产品编号char(6),客户编号char(6),销售⽇期datetime,数量int NOT NULL,销售额float(8)NOT NULL,CONSTRAINT pk_js PRIMARY KEY(产品编号,客户编号,销售⽇期))/*pk_js为约束名*/ 执⾏完上⾯的操作就能看见表已经添加进数据库中,如图所⽰:3. 打开表:在其中添加数据:4.1)USE CPXSINSERT INTO产品(产品编号,产品名称,价格,库存量) VALUES('200001','柜式空调','3000','200')2)USE CPXSINSERT INTO产品(产品编号,产品名称,价格,库存量) VALUES('200002','微波炉','1000','100')3)USE CPXSINSERT INTO产品(产品编号,产品名称,价格,库存量) VALUES('200003','抽油烟机','1200','50')可以看见图中的产品表增加了如下内容:5.USE CPXSALTER TABLE产品Add产品简列varchar(50)6. USE CPXSUPDATE产品set价格=价格*0.87. USE CPXSDELETE产品WHERE价格*0.9<1500三.实验中的问题及⼼得(说明:此处应写明此次实验遇到的问题有哪些,如何解决的,不能够空。
数据库原理及应用实验指导书答案
数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(DBMS)是一种软件,用于管理和组织数据库。
它允许用户创建,读取,更新和删除数据库中的数据。
常见的数据库管理系统有MySQL,Oracle,SQL Server等。
问题二在实验室环境中,我们将使用MySQL作为我们的数据库管理系统。
以下是MySQL的一些常见特点: - 开源免费 - 跨平台支持 - 可扩展性强 - 有大型的用户社区和丰富的资源支持问题三MySQL的安装步骤如下: 1. 下载MySQL安装文件,可以从MySQL官方网站或者其他可信的下载源获取。
2. 运行安装程序,按照向导的指示进行安装。
3. 选择是否要安装MySQL 服务器和MySQL工具。
4. 设置密码以保护数据库的安全。
5. 完成安装程序并启动MySQL服务。
数据库是一个组织和存储数据的容器。
在关系型数据库中,数据以表的形式存储,每个表包含多个行和列。
每行代表一个记录,每列代表一个字段。
问题五关系型数据库管理系统(RDBMS)是一种DBMS,它使用结构化查询语言(SQL)来操作和处理数据。
常见的关系型数据库管理系统有MySQL,Oracle,SQL Server等。
问题六开放数据库连接(ODBC)是一种标准的数据库访问方法,它允许不同的应用程序通过统一的接口访问不同的数据库管理系统。
ODBC驱动程序充当应用程序和数据库之间的翻译器。
问题七在Windows系统中,ODBC数据源可以通过控制面板的“管理工具”来配置。
在数据源配置对话框中,可以添加,编辑和删除ODBC数据源。
在Windows系统中,可以使用ODBC接口库和ODBC驱动程序来连接和操作数据库。
具体步骤如下: 1. 加载ODBC接口库。
2. 初始化ODBC环境。
3. 建立数据库连接。
4. 执行SQL语句。
5. 关闭数据库连接。
6. 释放ODBC环境。
问题九ODBC接口库是一组API函数,用于连接和操作数据库。
数据库上机实验答案5
数据库上机实验答案 5学号:姓名:日期:年月日实验目的:综合练习所学的SQL语言。
学习日期函数。
实验内容:基于提供的食堂交易记录trans表,进行查询,记录SQL语句及查询结果。
食堂交易记录表trans的数据说明如下:trans食堂交易记录(stuID,学生学号posID,刷卡机编号transTime,交易时间transValue,交易金额)1 食物销量大比拼创建一张表格posSummary,表格内容如下: pos机编号,就餐人数,刷卡次数,销售金额,平均每次刷卡金额。
以pos机编号为主键。
利用insert语句填充数据。
选择并展示posSummary中销售金额前10的pos机。
2 评选食堂忠实粉丝创建一个视图stuSummary,视图内容如下:学生ID,刷卡次数,刷卡总金额,刷卡平均金额。
基于创建的视图,分别找出刷卡次数最多、刷卡总金额最多、刷卡平均金额最多的同学。
3 学习日期函数datepart执行如下语句。
将执行结果复制到excel中,绘制散点图。
解释图的意思。
select datepart(hour,transtime)*60+datepart(minute,transtime)as minuteOfDay,count(*) as freq from trans group by datepart(hour,transtime)*60+datepart(minute,transtime) order by datepart(hour,transtime)*60+datepart(minute,transtime)其中,日期函数datepart(hour,transtime)的意思是将transtime中小时的部分取出来。
4 就餐规律研究计算某一天是星期几的方法如下:datepart(weekday,transtime),其计算结果周日为1,周一为2,周六为7。
基于题3中的方法,绘制上课日(周一到周五)学生的就餐规律和休息日(周六、周日)学生的就餐规律图。
实验五 存储过程和触发器的使用
实验五存储过程和触发器的使用【目的要求】1、了解存储过程的基本概念和类型。
2、了解创建存储过程的T-SQL语句的基本语法。
3、了解查看、执行、修改和删除存储过程的T-SQL命令的用法。
4、了解触发器的基本概念和类型。
5、了解创建触发器的T-SQL语句的基本语法。
6、了解查看、修改和删除存储过程的T-SQL命令的用法。
【实验内容】内容一:存储过程的使用一、数据需求分析存储过程是一种数据库对象,为了实现某个特定任务,将一组预编译的SQL语句以一个存储单元的形式存储在服务器上,供用户调用,自动完成需要预先执行的任务。
存储过程在第一次执行时进行编译,然后将编译好的代码保存在高速缓存中便于以后调用,提高了代码的执行效率。
二、内容要点分析1、SQL SERVER支持五种类型的存储过程:系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。
其中,系统存储过程是由系统提供的存储过程,可以作为命令执行各种操作。
系统存储过程定义在系统数据库master中,其前缀是sp_。
本地存储过程是指在用户数据库中创建的存储过程,这种存储过程完成特定数据库操作任务,不能以sp_为前缀。
2、只能在当前数据库中创建存储过程。
3、创建存储过程时,应指定所有输入参数和向调用过程或批处理返回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。
4、创建存储过程的T-SQL语句CREATE PROC[EDURE] 存储过程名称[{ @参数名称数据类型 }] [,…n][WITH{ RECOMPILE|ENCRYPTION }]ASSQL语句序列说明:(1)RECOMPILE表明每次运行该过程时,将其重新编译。
(2)ENCRYPTION表示 SQL SERVER 加密SYSCOMMENTS表中包含CREATE PROCEDURE语句文本的条目。
注:必须将CREATE PROCEDURE语句放在单个批处理中。
多媒体数据库实验5
云南大学软件学院
实验报告
序号:实验老师:秦江龙
课程名称:多媒体数据库系统设计实验实验名称:规范化
学号:姓名:
课程名称多媒体数据库系统设计实验实验项目规范化
实验目的1.熟悉数据库建模工具Visio的使用。
2.通过完成下列3个ER图的数据规范化设计,理解数据库规范化设计的内容。
实验内容(算法、程序、步骤和方法)
完成下列3个ER图的数据规范化设计,使用建模工具,采用C row’s Feet数据建模方法,绘制出各数据库的ER图。
a)
b)
指标等级 A B C D
功能完整
程序质量
按时检查
提问回答
检查时间
总评成绩
c)
数据记录和计算a)Exercise 1数据库ER图:
b)Exercise 2数据库ER图:
c)Exercise 3数据库ER图:
结论(结果)数据库设计主要有五个步骤:
1.通过分析实体建立数据表
2.确定各数据表之间的关系
3.列出各数据表的所有属性
4.确定各数据表的主键和外键
5.确定各数据表中的数据类型
指导教师签名:秦江龙。
数据库 实验五
数据库实验五在学习数据库的过程中,实验是巩固理论知识、提高实践能力的重要环节。
本次实验五主要围绕数据库的某些关键操作和应用展开,通过实际动手操作,让我们对数据库的理解更加深入和全面。
本次实验的环境是常见的数据库管理系统,如 MySQL 或 SQL Server 等。
实验的目的是让我们熟练掌握数据库的查询、更新、插入和删除等基本操作,同时能够运用这些操作解决一些实际的问题。
实验的第一个任务是进行数据的查询操作。
查询是从数据库中获取所需信息的重要手段。
我们需要根据给定的条件,从数据表中筛选出符合要求的数据。
这就涉及到了使用 WHERE 子句来设定条件,以及各种运算符如等于(=)、大于(>)、小于(<)、不等于(<>)等的运用。
同时,还需要掌握连接(JOIN)操作,将多个相关的数据表连接起来,以获取更全面和准确的信息。
例如,在一个学生成绩管理系统中,要查询某个班级中数学成绩大于 80 分的学生名单,就需要先从学生表中获取班级信息,再从成绩表中筛选出数学成绩符合条件的记录,最后通过学生学号将两个表连接起来,得到最终的结果。
接下来是数据的更新操作。
这包括对已有数据的修改和删除。
在进行更新操作时,必须格外小心,因为一旦操作失误,可能会导致数据的丢失或错误。
在修改数据时,同样要使用 WHERE 子句来指定要修改的记录。
例如,要将某个学生的数学成绩从 80 分修改为 90 分,就需要明确指定该学生的学号或其他唯一标识。
而删除数据则需要更加谨慎,通常建议先进行查询,确认要删除的记录准确无误后,再执行删除操作。
数据的插入操作也是实验的重要部分。
插入新的数据可以增加数据库的信息量。
在插入数据时,需要注意数据的类型和格式要与数据表的定义相匹配。
比如,一个学生信息表中,学号是整数类型,姓名是字符串类型,出生日期是日期类型,如果插入的数据类型不正确,就会导致插入失败。
在实验过程中,我也遇到了一些问题和挑战。
比如,在进行复杂的查询操作时,由于条件设置不当,导致查询结果不准确。
实验五 数据库完整性与安全性实验
实验五数据库完整性与安全性实验1、实验目的1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。
2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解2、实验环境操作系统:Microsoft Windows 7旗舰版(32位)。
数据库版本:MySQL 6.23、实验内容3.1完整性实验:(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;在create table 时已经定义了各个基表的主键。
因此,首先对每个基表删除主键,再添加主键。
实现实体完整性约束。
如下图。
删除主键:添加主键:sc表中的cno和sno分别是course表和student表的外关键字。
下图为给sc表添加student和course的外键,实现参照完整性约束。
alter table sc add constraint fk_student foreign key(sno) references student(sno);alter table sc add constraint fk_course foreign key(cno) references course(cno);主键和外键均添加成功,输入show create table 命令来查看各基表信息。
(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;向课程表中插入课程号为C01的课程。
向学生表中插入学号为30201的学生。
由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。
验证了实体完整性约束。
(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。
数据库实验五 表连接查询
实验五表连接查询1.查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。
select Sname,Cnamefrom supplier,commodity,supplyingwhere supplier.Sid=supplying.Sid and commodity.Cid=supplying.Cid2.使用连接查询查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select distinct(sname)from stock,Employee,supplierwhere stock.Eid=Employee.Eid and stock.Sid=supplier.Sid and Ename like'李云'3.使用关键字IN完成查询,要求查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select Snamefrom supplierwhere Sid in(select Sidfrom stockwhere Eid in(select Eidfrom Employeewhere Ename='李云'))4.使用左外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息。
select *from Employee left outer join stock on Employee.Eid=stock.Eid5.使用左外连接完成如下查询:查找所有客户购买的商品详细信息,要求显示客户名称,商品名称,销售数量,商品单价,没有购买商品的客户也要显示。
select CUname,Cname,SDnumber,SDpricefrom customer left outer join sale on customer.CUid=sale.CUidleft outer join saleDetail on sale.SAid=saleDetail.SAidleft outer join commodity on saleDetail.cid=commodity.cid6.请使用内连接完成如下查询:查找每一个供应商供应的商品的种类,要求显示供应商名称,供应的商品的种类。
数据库实验五:视图的应用
数据库实验五:视图的应用一、实验目的与要求:1.实验目的(1)理解视图的概念;(2)掌握视图的使用方法。
(3)理解视图和基本表的异同之处。
2.实验要求(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
2)基于单个表按选择操作定义视图。
3)基于单个表按选择和投影操作定义视图。
4)基于多个表根据连接操作定义视图。
5)基于多个表根据嵌套操作定义视图。
6)定义含有虚字段的视图。
(2)分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。
(3)在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。
(4)在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析和讨论。
二、实验内容1、实验原理(1)视图是用SQL SELECT查询定义的,创建视图命令格式如下:CREATE VIEW <视图名> AS <SELECT-查询块>(2)删除视图的命令格式如下:DROP VIEW <视图名>2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。
(2)输入自己编好的程序。
(3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。
(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
create view v asselect教师编号,姓名from教师create view v_order asselect*from教师where职称='教授'3)基于单个表按选择和投影操作定义视图。
create view v_cuss asselect教师编号,姓名,职称from教师where职称='教授'4)基于多个表根据连接操作定义视图。
数据库原理实验报告
计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级: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,写出操作过程。
实验5 数据库保护.doc
实验5 数据库保护数据安全性实验一.实验目的本实验的目的是通过实验使学生加深对数据安全性的理解,并掌握SQL Server中有关用户,角色及操作权限的管理方法。
二.相关知识SQL Server提供以下四种防线:1.Windows NT操作系统的安全防线Windows NT的网络管理员负责建立用户组,设置帐号并注册,同时决定不同的用户对不同的系统资源的访问级别。
用户只有拥有了一个有效的Windows NT登录帐号,才能对网络资源进行访问。
2.SQL Server的运行安全防线SQL Server 通过另外一种帐号设置来创建附加安全层。
SQL Server具有标准登录和集成登录两种用户登录方式,用户只有登录成功,才能与SQL Server建立一次连接。
3.SQL Server数据库的安全防线SQL Server的特定数据库都有自己的用户和角色(用户组),该数据库只能由它的用户或角色访问,其他用户无权访问其数据,数据库系统可以通过创建和管理特定的数据库的用户和角色来保证数据库不被非法用户访问。
4.SQL Server数据库对象的安全防线SQL Server可以对权限进行管理,SQL的DCL功能保证合法用户即使进了数据库也不能有超越权限的数据操作,即合法用户必须在自己的权限范围内进行数据操作。
三.实验内容本实验的实验内容为:1.在SQL Server企业管理器中,设置SQL Server的安全认证模式。
2.通过SQL Server企业管理器,实现对SQL Server的用户和角色管理。
3.分别通过SQL Server企业管理器和SQL的数据控制功能,设置和管理数据操作权限。
四.实验步骤1.在SQL Server企业管理器中为所属的SQL 服务器设置为SQL Server和Windows NT混合安全认证模式。
其步骤如下:1)在企业管理器窗口中展开服务器组,用鼠标右击需要设置的SQL服务器,在弹出的菜单中选择“属性”项,则出现SQL Server属性对话框,如图1所示。
数据库实验五实验报告
数据库实验五实验报告一、实验目的本实验旨在通过学习数据库的索引和优化,掌握数据库索引的使用和优化方法,进一步提升数据库的查询性能。
二、实验要求1.理解数据库索引的概念及作用。
2.熟悉索引的创建、删除和修改操作。
3.了解索引的类型及适用场景,并能选取合适的索引类型。
4.能通过观察执行计划和使用适当的策略对查询进行优化。
三、实验步骤1.索引的创建和删除首先,在已创建的数据库中选择适合创建索引的表。
通过如下语句创建一个测试表:CREATE TABLE test_table(id INT PRIMARY KEY,name VARCHAR(50),age INT);然后,可以在表的字段上创建索引,通过如下语句创建一个索引:CREATE INDEX idx_name ON test_table(name);索引创建完成后,可以通过如下语句删除索引:DROP INDEX idx_name ON test_table;2.索引的修改可以使用ALTER TABLE语句对已创建的索引进行修改。
例如,修改索引的名称:ALTER INDEX idx_name RENAME TO new_idx_name;或者修改索引的定义:ALTER INDEX idx_name RENAME COLUMN new_column_name;3.选择合适的索引类型在创建索引时,需要选择合适的索引类型。
常见的索引类型包括B树索引、哈希索引和全文索引。
- B树索引:适用于等值查询、范围查询和排序场景。
- 哈希索引:适用于等值查询,不支持范围查询和排序。
- 全文索引:适用于全文搜索场景。
4.查询优化在进行数据库查询时,可以通过观察执行计划来判断查询是否有优化空间。
执行计划是数据库在执行查询时生成的查询执行步骤和顺序图,可以根据执行计划优化查询。
另外,还可以通过以下策略对查询进行优化:- 使用合适的索引类型- 避免使用LIKE操作符- 避免使用SELECT *查询所有字段- 避免多表连接查询- 使用JOIN代替子查询- 避免使用不必要的DISTINCT操作符- 分页查询时,使用LIMIT关键字限制结果数量四、实验结果与分析通过实验,我们成功创建了一个测试表,并在该表的字段上创建了索引。
Oracle实验五实验报告
实验五用户、角色与权限管理一、实验目的及要求掌握Oracle的安全管理方法。
二、实验主要内容(1) 概要文件的建立、修改、查看、删除操作。
(2) 用户的建立、修改、查看、删除操作。
(3) 权限的建立、修改、查看、删除操作。
(4) 角色的建立、修改、查看、删除操作。
三、实验仪器设备在局域网环境下,有一台服务器和若干台客户机。
服务器成功安装Oracle 11g数据库服务器(企业版),客户机成功安装Oracle 11g客户端软件,网络服务配置正确,数据库和客户端正常工作。
四、实验步骤1创建概要文件。
①利用企业管理器创建概要文件“ygbx+学号_pro”,要求在此概要文件中CPU/会话为1000,读取数/会话为2000,登录失败次数为3,锁定天数为10。
②利用SQL*Plus或PL/SQL Developer,创建概要文件“ygbx+学号_pro_sql”,其结构与“ygbx+学号_pro”一致。
2 查看概要文件。
②利用企业管理器查看概要文件“ygbx+学号_pro”的信息。
②利用SQL*Plus或PL/SQL Developer,从DBA_PROFILES数据字典中查看“ygbx+学号_pro_sql”概要文件的资源名称和资源值等信息。
③利用SQL*Plus或PL/SQL Developer,从查看“ygbx+学号_pro_sql”概要文件中锁定天数的值。
3修改概要文件。
②利用企业管理器,修改“ygbx+学号_pro”概要文件,将CPU/会话改为4000,连接时间为60。
②利用SQL*Plus或PL/SQL Developer,修改“ygbx+学号_pro_sql”概要文件,将并行会话设为20,读取数/会话设为DEFAULT。
4创建用户。
①利用企业管理器,创建“ygbxuser+学号”用户,密码为“user+学号”,默认表空间为“ygbx_tbs”。
②利用SQL*Plus或PL/SQL Developer,创建“ygbxuser+学号_sql”用户,密码为“user+学号+sql”,该用户处于锁状态。
数据库实验5 存储过程和触发器
实验五存储过程和触发器一、实验目的(1) 通过实践理解存储过程和触发器的概念、作用及优点;(2) 掌握存储过程的定义与调用,实现存储过程中带有不同参数的应用;(3) 掌握创建触发器。
二、实验原理1.存储过程一个被命名的存储在服务器上的T-SQL语句的集合,是封装重复性工作的一种方法。
(1)创建存储过程CREATE PROC[DURE]PROCDURE_NAME [{@PARAMENT DATA_TYPE}[VARYING][=DEFAULT][OUTPUT]] [, (1)AS SQL_STATEMENTPROCEDURE_NAME:新存储过程的名称,必须符合标识符规则且唯一。
@PARAMETER:过程中的参数。
可以声明一个或多个参数。
用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。
使用 @ 符号作为第一个字符来指定参数名称。
参数名称须符合标识符规则。
每个过程的参数仅用于该过程本身;相同的参数名称可用在其它过程中。
默认情况下参数只能代替常量,不能代替表名、列名或其它数据库对象名称。
DATA_TYPE:参数的数据类型。
DEFAULT:参数的默认值。
如果定义了默认值,不必指定该参数的值即可执行过程。
默认值必须是常量或 NULL。
OUTPUT:表明参数是返回参数。
该选项的值可以返回给 EXEC[UTE]。
使用 OUTPUT 参数可将信息返回给调用过程。
(2)执行存储过程SQL SERVER系统中,可以使用EXECUTE语句执行存储过程。
EXECUTE语句也可以简写为EXEC。
如果将要执行的存储过程需要参数,那么应该在存储过程名称后面带上参数值。
[EXEC[UTE]]{[@RETURN_STATUS=]{PROCEDURE_NAME[;NUMBER]|@PROCEDURE_NAME_VAR}[@PARAMETER={VALUE|@VARIABLE[OUTPUT]|[DEFAULT]}[,…N](3) 删除存储过程使用DROP PROCEDURE语句可永久地删除存储过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
16.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
17.使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生;
18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;
数据库概论课程实验报告(五)
课程名期
2012-12-19
姓名
魏莉莉
学号
12010243032
实验成绩
实验名称
数据库综合查询
实
验
目
的
及
要
求
1.了解select语句的基本语法格式和执行方法;
2.了解连接查询的表示及使用;
3.了解嵌套查询的表示及使用;
4.了解集合查询的表示及使用;
(selectcno
from course
where cname='大学英语'or cname='数学'
)
and sc.sno=student.sno
and o=o;
4.查询缺少成绩的所有学生的详细情况
selectsname,student.sno,Sdept,sage
fromstudent,sc
and o=o;
(cname='大学英语'or cname='数学')可以替换为cname in('大学英语','数学');
selectsname,student.sno,Sdept,o,grade
fromstudent,sc,course
where o in
3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩
selectsname,student.sno,Sdept,o,grade
fromstudent,sc,course
where (cname='大学英语'or cname='数学')
and sc.sno=student.sno
5查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息
select*
fromstudent
where sage not in
(selectsage
from student
where sname='张力'
) ;
6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩
selectsc.sno,sname,avg(grade)
where o=o
group by o
having count(*)=1
14.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名
selectstudent.sno,sname
from student
where exists(
selectsno
from sc
where sno in(
过
程
及
实
验
结
果
(详细记录在调试过程中出现的问题及解决方法。记录实验执行的结果)
1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况
说明:用'PA_'开头,倒数第三个为'L'的代替题目要求的
select*
from course
where cname like 'PA%L__';
2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名
where sc.sno=student.sno and
o in
(selectdistinct cno
from sc,student
where sname='张立'
group by sc.sno)
10.
11.至少选修“数据库”或“数据结构”课程的学生的基本信息
selectsc.sno,sname,sdept,sage,ssex
selectstudent.sno学号,sname姓名,sdept所在院系,sum(ccredit)已修学分
from student,sc,course
where sc.sno=student.sno
and o=o
and grade>=60
group by sc.sno
8.列出只选修一门课程的学生的学号、姓名、院系及成绩
18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息
select*
from student
where sdept =any(
selectsdept
from student
where sname='张力')
selects1.*
from student s1,student s2
where s1.sno=s2.sno
and sdept!='CS';
17.使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生
selectsno, sname,sage,sdept
from student
where sage < all(
selectsage
from student
where sdept='CS')
and sdept!='CS';
19.使用集合查询列出CS系的学生以及性别为女的学生名单;
20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;
21.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;
22.思考题:按照课程名顺序显示各个学生选修的课程(如200515001数据库数据结构数学);
调
试
and s1.sdept in(
selectsdept
from student
where sname='张力')
19.使用集合查询列出CS系的学生以及性别为女的学生名单
select*
from student
where sdept='CS'
union
select*
from student
where ssex='女';
from sc,course
where cname='数据结构')
16.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系
selectsname,sage,sdept
from student
where sage <any(
selectsage
from student
where sdept='CS')
where student.sno in
(selectsno
from sc
where grade is null
)
and sc.sno=student.sno ;
selectsname,student.sno,Sdept,sage
fromstudent,sc
where grade is null
and sc.sno=student.sno ;
20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集
交集
select*
from student
where sdept='CS'
intersect
select*
from student
where sage!>19';
差集
select*
from student
where sdept='CS'
and o=o;
连接查询方式:
selectsname,student.sno,o,cname
fromstudent,sc,course
where sname like '_菁%'and sc.sno=student.sno
and o=o;
9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;
11.至少选修“数据库”或“数据结构”课程的学生的基本信息;
12.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;
13.查询只被一名学生选修的课程的课程号、课程名;
from sc,student
where sc.sno=student.sno
group by sno
having avg(grade)>(
selectavg(grade)
from sc,student
where sname='张立')
7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和
union
selectstudent.sno,sname,sdept,sage
from student,sc
where sc.sno=student.sno and cno='2'
总
结
(对实验结果进行分析,问题回答,实验心得体会及改进意见)
不会做的题有:10、12、22
有疑问的是14,题中用的是exists,我觉得用“in”或“=any”也可以,但是为什么出现的结果完全不对?
selectsno
from student
where student.sno=sc.sno
and sname='张向东' ));