数据库实验七
- 格式:doc
- 大小:93.00 KB
- 文档页数:5
实验内容:实验一:数据库的操作使用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的外部键。
实验7数据查询【实验内容】7.1单表查询1、指定列或全部列查询1) 查询S表中全体学生的详细记录use jxsk select * from S出言岂select - f Tdtt s|.1结杲SEX AGE DEPT NATEVEJ_a,i soi王青山19计算机NULL2SI—赵亦17软件MULL 35218计算机NULL4S3弓綽明胃IS信息NULL554李四21包动ft NULL&S519软件NULL756昊丽20计算机NULL8S7范思明女ie NULL9S820自动化NULL10S919枫牛NULL2) 查询所有学生的姓名及其岀生年份。
use jxsk select SN, 2012 - AGEfrom S1「王諭】1&932赵亦1995J钱尔15944號慣明隔&李四1S516周展憫15537昊丽13828范思明1994S?«1S9210张海涛2、按条件查询及模糊查询1)查询考试成绩有不及格的学生的学号。
use jxsk selectdistinct SNOfrom SCwhere SCORE<602)查询年龄在20 —23岁之间的学生的姓名、系名和年龄use jxsk select SN,DEPT, AGEfrom Swhere AGE>=20 and AGE<= 30□ us* select 5N, DEET, troni 5L AGE>=20 ard AGE<-30V结果J消息| SH DEPT ,<SE1[ SS'J自动化212昊丽计算机203补珊自动化203)查询姓李的学生的姓名、学号和性别。
use jxsk select SN, SNO, SEXfrom S where SNlike '李%'□ use jxsk select ^NO f SEX from 5 wriere EE 丄是'李虽「Array4) 查询名字中第二个字为明”字的男学生的姓名和系名use jxsk select SN, DEPTfrom Swhere SNlike '_% 明’and SEX='男’SN DEPTi !信息h^iiiiauaB in KI ■■■■■&■■■■#3、对查询结果排序1) 查询信息系、计算机系学生的姓名、系名,结果按系名升序,按姓名降序排序。
数据库应用基础实验报告
实验七存储过程创建与应用
班级 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. 触发器的作用是什么?
答: 触发器的作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。
实验七使用PL/SQL编写存储过程访问数据库一、实验目的1、熟悉存储过程编译过程、工作原理及其优点;2、熟悉使用存储过程来进行数据库应用程序的设计。
二、实验条件1、具有局域网的计算机机房一个;2、SQL SERVER2000或SQL SERVER2005软件。
三、实验内容对教材“学生-课程”数据库(student表,course表,sc表),编写存储过程,分别完成下面功能:create table Student(Sname char(12)primary key,Ssex char(2),Sage int,Sdept char(12));create table Course(Cname char(12)primary key,Cpno int,Ccredit int);create table SC(Cno char(12)primary key,Grade int);①建立存储过程完成统计“离散数学”的成绩分布情况,即按照各分数段统计人数;create procedure Proc_1asselect count(*),Cname,Grade from sc wherecname in(select Cname from Course where cname='db');exec Proc_1;②建立存储过程完成统计任意一门课的平均成绩;create procedure Proc_2asselect avg(grade),cname from sc where camme='db'exec Proc_2;③建立存储过程完成将学生选课成绩从百分制改为等级制(即A、B、C、D、E);create or replace procedure change_critical()as declarechgrade char(1);currecord record;beginalter table SC add column(newgrade char(1));for currecord in select*from SC loopif currecord.grade<60then chgrade='E';else if currecord.grade<70then chgrade='D';else if currecord.grade<80then chgrade='C';else if currecord.grade<90then chgrade='B';else chgrade='A';end if;update SC set newgrade=chgradewhere sno=currecord.sno and cno=o;end loop;alter table SC drop column grade;alter table SC rename newgrade to grade;end;④建立存储过程完成对学生表的批量插入数据,插入数据的条数作为其中一个参数,另一个参数为学号起始学号,其它数据格式自行定义(如每次插入100条数据);create procedure proc_4@count int,@startsno char(9)asdeclare@loop intset@loop=0while@loop<@countbegininsert into student(sno,sname,ssex,sage,sdept)values(@startsno,'zj','M',20,'IS')set@loop=@loop+1set@startsno=@startsno+1endexec proc_4100,'20130901';要求:提交源程序并标识必要的注释。
实验七数据库的安全性一、实验目的使学生加深对数据库安全性的理解,并掌握SQL SERVER中有关用户、角色及操作权限的管理方法。
二、实验内容(1)首先创建一个windows登陆用户login,密码为123456,再使用SSMS将windows登录用户增加到SQL SERVER登录账户中,为windows身份验证。
(2)使用SSMS查看登录账户login。
(3)使用SSMS为登录账户login创建数据库用户login。
(4)使用SSMS为登录账户login创建与管理服务器角色。
(5)使用SSMS为数据库用户login创建与管理数据库角色。
(6)为数据库用户login创建与删除用户自定义数据库角色。
三、实验过程(1)在windows中,进入“控制面板”的管理工具文件夹,运行“计算机管理”工具,给windows添加账号login进入SQL Server数据库中,双击安全性,右键点击登录名,选择“新建登录名”,单击“搜索”按钮,将刚才创建的Windows账号“login”添加到SQL Serve中,此时在登录名选项下会出现一个新账号“login”。
(2)进入SQL Server数据库,在对象资源管理器中,分别展开“安全性”->“登录名”选项,找到login右键单击,选择属性选项,查看登录账户信息,可以在此修改登录信息,但是不能改变身份验证模式。
(3)打开student数据库,选择“安全性”->“用户”选项,右键单击用户选项,选择“新建用户”(4)打开“安全性”->“服务器角色”选项,选择sysadmin,右键选择属性选项,在属性窗口单击“添加”按钮,单击“浏览”,选择登录用户login,并点击确定。
(5)选择“数据库”->“student”->“安全性”->“角色”->“数据库角色”选项,右键单击“数据库角色”,选择新建数据库角色菜单,如图所示。
在角色名称中输入login,单击添加按钮,为该角色设置角色成员,选择“login”用户。
数据库实验报告《数据库系统概论》实验指导书2012-8-30⽬录实验⼀数据库服务器的连接及数据库的建⽴ (1)实验⼆简单SQL查询及数据库多表查询 (12)实验三视图、索引、存储过程和触发器的使⽤ .. 22实验四 E-R模型与关系模型的转换 (30)实验五维护数据的完整性(选做)错误!未定义书签。
实验六事务管理(课后选做)错误!未定义书签。
实验七数据库的备份与恢复(课后选做)错误!未定义书签。
实验⼀数据库服务器的连接及数据库的建⽴⼀、实验⽬的:了解连接数据库服务器的⾝份验证模式,熟悉样例数据库。
掌握DBMS中利⽤界⾯进⾏建库建表操作。
⼆、实验准备:数据模型由三个要素组成:数据结构、数据操作和完整性约束。
1、数据结构数据结构⽤于描述系统的静态特性,是所研究的对象类型的集合。
数据模型按其数据结构分为层次模型、⽹状模型和关系模型。
2、数据操作数据操作⽤于描述系统的动态特性,是指对数据库中各种对象的实例允许执⾏的操作的集合,包括操作及有关的操作集合。
3、数据的约束条件数据的约束条件是⼀组完整性规则的集合。
完整性规则是给定的数据及其联系所具有的制约和存储规则,⽤以限定符合数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据库系统的三级模式结构数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级组成。
1、外模式。
外模式也称⼦模式或⽤户模式,它是数据库⽤户(包括应⽤程序员和最终⽤户)看见和使⽤的局部数据的逻辑结构和特征的描述,是数据库⽤户的数据视图,是与某⼀应⽤有关的数据的逻辑表⽰。
⼀个数据库可以有多个外模式。
2、模式。
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有⽤户的公⽤数据视图。
⼀个数据库只有⼀个模式。
3、内模式。
内模式也称存储模式,它是数据物理和存储结构的描述,是数据在数据库内部的表⽰⽅式。
⼀个数据库只有⼀个内模式。
DBMS的功能1、数据定义数据定义包括定义构成数据库结构的外模式、模式和内模式,定义各个外模式与模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件(例如,为保证数据库中数据具有正确语义⽽定义的完整性规则,为保证数据库安全⽽定义的⽤户⼝令和存取权限等)。
计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级:2012级本科班学号:07173姓名:指导教师: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,写出操作过程。
实验7 数据库模型的设计与建立1.一、实验目的:2.了解数据库设计概念设计中的基本知识: 如实体、属性、联系集…3.能解决设计中常见问题: 如把一个对象转化成实体还是属性4.使学生能独立完成数据库模式的设计, 包括各表的结构(属性名、类型、约束和关键字等)及表之间的关系以及其连接方式, 在选定的DBMS上建立数据库表。
5.熟悉数据库建模工具的使用(PowerDesigner)二、实验要求:1. 认真阅读业务需求, 作出E-R图, 并依据设计原则对数据库结构的设计务必做到最优化2. 在选定的DBMS上建立数据库, 比较手工输入SQL建立数据库与用建模工具自动生成数据库的优缺点三、实验环境及学时安排:1. OFFICE, POWERDESIGN112.SQL SERVER20003. 学时: 3学时四、实验内容:以完成学生选课系统的数据库设计为例。
如: 某学院有基本实体集: 系、教师、学生和课程。
1.它们各有属性:系: 系编号、系名, 位置课程: 课程号, 课程名称, 开课学期学生: 学生学号, 学生姓名、性别、地址教师:员工号, 教师姓名, 办公室2.有如下语义设定每个系有一位系主任, 有多位教师;一个教师仅在一个系任职;每个系开设多门不同课程;每门课程由多位教师授课;一位教师可教多门课程一个学生可以选修多门课程。
一门课程可以供多位学生选修3.存在联系有:1对1: 系与系主任(系主任是教师)1对多: 系与教师、系与课程多对多: 学生与课程,教师与课程五、实验任务及步骤:1.实验准备1)根据需求建立ER模型:ER模型的组成:实体属性联系连接2)ER模型转换为数据库表●实体转化为表●实体的属性转化为表中的列●多对多联系也转化为表, 主键确定为相联系表中主键的组合, 联系本身的属性转化为表的列一对一、一对多联系无需新建表, 被决定的一方应含有决定方的主键作为外部键3)利用power designer建立所要求的数据库2.实验操作1)新建word文件, 并保存为ER.doc2)分析需求, 画出上述关系的E-R 图(word) 3) 根据ER 模型进行数据库的逻辑结构设计: (建模工具PowerDesign 建立phisical data model) 六、实验结果按照需求绘制E-R 图如下:完整的实体-联系E-R 图如下:建立数据库模型(概念数据模型)如下:n mn mn 111系 教师学生课程系-老师教授选修系主任系编号 系名 位置员工号教师姓名办公室课程号课程名开课学期学号姓名性别地址物理数据模型如下:。
《数据库实验》实验报告《数据库实验》实验报告黄爱蓉编审湖北汽车⼯业学院电⼦信息科学系⼆〇〇七年⼀⽉实验⼀:建⽴数据库及基本表实验报告⼀、实验⽬的1、了解SQL Server数据库的逻辑结构和物理结构;2、了解SQL Server的基本数据类型;3、学会在企业管理器中创建数据库和表;4、使⽤SQL查询分析器⽤CREA TE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。
⼆、实验内容1、创建数据库和查看数据库属性。
2、创建表。
3、查看和修改表结构。
4、熟悉企业管理器和查询分析器⼯具的使⽤⽅法三、实验步骤1、在企业管理器中创建数据库和数据表。
(1) 使⽤企业管理器建⽴图书管理数据库,数据库名为BM,初始⼤⼩为10MB,最⼤为50MB,数据库⾃动增长,增长⽅式是按5%⽐例增长;⽇志⽂件初始为2MB,最⼤可增长到5MB,按1MB增长。
数据库的逻辑⽂件名和物理⽂件名均采⽤默认值。
详细步骤:(2) 在企业管理器中查看图书管理数据库的属性,并进⾏修改,使之符合要求。
(3) 通过企业管理器,在建好了图书管理数据库BM中建⽴图书(book)、读者(reader)和借阅(borrow)3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价);读者(编号,姓名,单位,性别,电话);借阅(书号,读者编号,借阅⽇期)。
创建上述三个表的步骤:三个表各个字段的数据类型:2、在查询分析器中创建数据库和数据表(1) 创建数据库S-C 的sql语句:(2) 在数据库S-C下,创建基本表学⽣表student(sno,sname,ssex,sage,sdept)的sql语句:创建基本表课程表course(cno,cname, ccredit)的sql语句:创建基本表成绩表sc(sno,cno,grade)的sql语句:(3) 在窗⼝下分别键⼊DROP TABLE Student及DROP TABLE SC命令,运⾏后观察结果。
数据库系统实验内容(王珊)实验一:认识DBMS系统实验二:交互式SQL实验三:安全性实验四:完整性实验五:通过嵌入式SQL访问数据库实验六:使用PL/SQL编写存储过程访问数据库实验七:通过ODBC方式访问数据库实验八:通过JDBC方式访问数据库实验九:查询优化实验一:认识DBMS系统1 实验目的1.通过对某个商用数据库管理系统的使用,了解DBMS的工作原理和系统构架。
在此推荐国产金仓数据库管理系统KingbaseES,该系统已经带在本书后的光盘中。
你也可以从人大金仓公司的网站(/)上免费下载该系统。
2.熟悉对DBMS的操作3.搭建今后实验的平台2 实验平台2.1 操作系统:Windows 2000或者Windows XP注:使用Professional版的操作系统建议安装数据库管理系统的教学版,Server版的操作系统建议安装数据库管理系统的企业版。
2.2 数据库管理系统:选择安装数据库管理系统之前,请仔细看清硬件的配置要求,今后的实验环境以KingbaseES为例进行说明。
你也可以选择其他国产数据库管理系统,或国外的MS SQL Server, Oracle, DB 2等。
3 实验内容及要求3.1 安装和启动1.根据安装文件的说明安装数据库管理系统。
在安装过程中记录安装的选择,并且对所作的选择进行思考,为何要进行这样的配置,对今后运行数据库管理系统会有什么影响。
2.学会启动和停止数据库服务,思考可以用哪些方式来完成启动和停止。
3.初步了解KingbaseES的安全性,这里主要是用户的登录和服务器预定义角色。
可以尝试建立一个新的用户,赋予其数据库管理员的角色,今后的实验可以用该用户来创建数据库应用。
3.2 数据库系统的构架1.了解数据库系统的逻辑组件:它们主要是数据库对象,包括基本表、视图、触发器、存储过程、约束等。
今后将学习如何操作这些数据库对象。
2.了解数据库的物理组件:思考数据库物理存储的存储单位是什么,数据主要以什么方式存放,如何确定数据的存放位置。
C++Builder访问SQL Server2000数据库一. 数据库操作中常用组件的功能及关系图在C++ Builder程序设计时,若需要访问数据库,则要用到许多数据库相关的组件(控件),常见的数据库组件功能及关系如图1所示:图 1 C++ Builder数据库常用组件功能及关系图二. 程序设计总体思想为了充分展示C++ Builder访问数据库的强大功能,本实验总体设计思想可用图2来表示。
它具有以下特点:●展示C++ Builder访问SQL Server数据库的七种典型用法(七个模块)●每个实验模块均可独立设计与运行●学生可根据自身情况有选择地做其中几个模块或全部模块图 2 实验总体设计三. 实验指导1. 实验准备(附加Engineering数据库)确认SQL Serve2000的服务管理器已经正常运行。
启动SQL Server企业管理器,执行菜单命令“工具-所有任务-附加数据库”,出现以下“附加数据库”对话框,如图3所示:图 3 附加数据库对话框点击按钮,在随后出现的“浏览现有的文件”对话框中,找到并选择“Engineering_Data.MDF”后,点击“确定”按钮,回到“附加数据库”对话框,点击“确定”按钮,出现图4所示的对话框即表示附加完成:图 4 附加完成对话框2. 第一模块(数据显示及交互操作)(1)功能简介显示数据库中的文本或图像数据;提供一个导航栏,并通过它允许用户对数据表进行插入、删除或修改等操作。
(2)VCL组件对象及布局启动C++ Builder。
在窗体上放置一个组框GroupBox、四个标签Label、一个数据库连接ADOConnection、一个表数据集ADOTable、一个数据源DataSource、三个数据编辑框DBEdit、一个数据图像DBImage和一个数据导航栏DBNavigator组件,此时设计界面如图5所示:图 5 初始设计界面(3)组件对象的属性设置按表1~ 表5设置以上各VCL组件对象的属性。
一.实验目的使学生熟练掌握数据查询中分组、统计、计算和组合的操作方法,并加深对Transact-SQL语言的查询语句的理解。
二.实验软件环境Microsoft SQL Server 2000上的查询分析器三.实验内容要求完成以下查询要求:1)查询计算机类和机械工业出版社出版的图书。
2)查询藏书在10本以上的书(书名、作者、出版社、年份)。
3)查询“数据库系统原理教程,王珊,清华大学出版社出版”还有多少本。
4)查询最近两年(2006、2007年)都未被借过的书。
5)查询藏书种数、总册数、最高价、最低价。
6)查询哪些出版社的总藏书超过100种。
7)查询目前已借出多少册书。
8)查询这样的图书类别:要求该类别中最高的图书定价不低于该类别的图书平均定价的2倍。
9)查询“机械工业出版社”的各类图书的平均定价。
10)查询计算机类图书的书号、名称及价格,并计算册数和总价格。
四.实验的结果及分析根据实验内容,利用SQL语句在查询分析器中输入如下代码并输出相应结果,/*查询计算机类和机械工业出版社出版的图书*/use Labery_3111001381select * from book where category='计算机'unionselect * from book where press='机械工业出版社'/*查询藏书在10本以上的书(书名、作者、出版社、年份)*/use Labery_3111001381select title,author,press,book_year from bookwhere book_total>10/*查询"数据库系统原理与应用.蔡延光.机械工业出版社"*/use Labery_3111001381select book_total from bookwhere title='数据库原理与应用'and author='蔡延光'and press='机械工业出版社'/*查询最近两年(2006、2007)都未被借过的书*/use Labery_3111001381select book.* from book,borrowwhere borrow.bno=book.bno and year(borrow_date)<>year(getdate()) and year(borrow_date)<>year(getdate()-1)unionselect * from book where bno not in (select bno from borrow)/*查询藏书总数、总册数、最高价、最低价*/use Labery_3111001381select count(category) as count_category,sum(book_total) as book_total,max(price) as max_price,min(price) as min_pricefrom book/*查询哪些出版社的总藏书超过100本*/use Labery_3111001381select press from bookgroup by presshaving sum(book_total)>100/*查询目前已借出多少册书*/use Labery_3111001381select count(bno) as current_borrow from book/*查询这样的图书类别:要求该类别中最高的图书定价低于该类别的图书平均定价的2倍*/ use Labery_3111001381select category from book group by categoryhaving max(price)<=avg(price)*2/*查询“机械工业出版社”的各类图书的平均定价*/use Labery_3111001381select category,avg(price) as avg_pricce from bookwhere press='机械工业出版社'group by category/*查询计算机类图书的书号、名称及价格,并计算册数和总价格*/use Labery_3111001381select bno,title,price,book_total,price*book_total as price_total from bookwhere category='计算机'五. 实验心得体会在大数据量的情况下在临时表中保持数据的子集,以在随后的连接中使用,这样能大大改善性能,如果访问很频繁,加载就会加重,tempdb的性能就会对整个DB产生重要的影响。
数据库原理与应用实验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语句,然后在查询分析器中运行该语句,并根据得到的结果验证语句的正确性。
第1篇实验名称:数据库设计与实现实验日期:2023年4月15日实验班级:计算机科学与技术专业1班实验学号:12345678一、实验目的1. 理解数据库设计的基本原理和方法。
2. 掌握数据库概念结构、逻辑结构和物理结构的设计。
3. 学会使用数据库设计工具进行数据库设计。
4. 能够使用SQL语句进行数据库的创建、查询、更新和删除等操作。
二、实验内容1. 数据库概念结构设计- 分析需求,确定实体和实体间的关系。
- 设计E-R图,表示实体、属性和关系。
2. 数据库逻辑结构设计- 将E-R图转换为关系模式。
- 设计关系模式,确定主键、外键等约束。
3. 数据库物理结构设计- 选择合适的数据库管理系统(DBMS)。
- 设计数据库表结构,包括字段类型、长度、索引等。
- 设计存储策略,如数据文件、索引文件等。
4. 数据库实现- 使用DBMS创建数据库。
- 创建表,输入数据。
- 使用SQL语句进行查询、更新和删除等操作。
三、实验步骤1. 数据库概念结构设计- 分析需求,确定实体和实体间的关系。
- 设计E-R图,表示实体、属性和关系。
2. 数据库逻辑结构设计- 将E-R图转换为关系模式。
- 设计关系模式,确定主键、外键等约束。
3. 数据库物理结构设计- 选择合适的数据库管理系统(DBMS)。
- 设计数据库表结构,包括字段类型、长度、索引等。
- 设计存储策略,如数据文件、索引文件等。
4. 数据库实现- 使用DBMS创建数据库。
- 创建表,输入数据。
- 使用SQL语句进行查询、更新和删除等操作。
四、实验结果与分析1. 数据库概念结构设计- 实体:学生、课程、教师、成绩。
- 关系:学生与课程之间有选课关系,教师与课程之间有授课关系。
2. 数据库逻辑结构设计- 学生表(学号,姓名,性别,年龄,班级号)。
- 课程表(课程号,课程名,学分,教师号)。
- 教师表(教师号,姓名,性别,年龄,职称)。
- 成绩表(学号,课程号,成绩)。
数据库实验报告(7个实验完整附截图)福建农林大学计算机与信息学院实验报告课程名称:数据库原理及应用姓名:系:计算机科学与技术专业:计算机科学与技术年级:2012 级学号:指导教师:陈长江2014 年5月18 日实验项目列表序号实验项目名称成绩指导教师1 实验一数据库的定义实验(验证性)2 实验二数据库的建立和维护实验(验证性)3 实验三数据库的查询实验(验证性)4 实验四数据库的视图操作实验(验证性)5 实验五触发器、存储过程操作实验(综合性)实验一:数据库的定义实验一、实验目的: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 表的信息:字段名类型长度约束条件Sno varchar9非空、主键Sname varchar20Ssex varchar2Sage smallint 6Sdept varchar20course表的信息:字段名类型长度约束条件Cno varchar4非空、主键Cname varchar40Cpno varchar4与 course 表中 Cno 关联Ccredit smallint 6sc表的信息:字段名类型长度约束条件Sno varchar9非空、主键、与student表中Sno外键关联,级联删除Cno varchar 4Grade smallint6非空、主键、与course表中Cno外键关联(1)连接数据库,在 localhost 中点击鼠标右键(如图1所示),点击“新建数据库”,在弹出的窗口中输入数据库名称(如图2所示),然后单击“确定”,就完成了数据库的建立。
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 约束。