SQL数据库原理实验指导书及答案
数据库原理实验讲义 与答案 SQL Server

《数据库系统原理》实验报告SQL Server版实验一SQL练习1一、实验目的1.掌握基本表的定义;2.掌握插入数据、修改数据和删除数据语句的常用形式。
二、实验学时2学时三、实验内容1.利用Enterprise Manager,新建一个数据库,命名为zyxt,并有以下要求:⑴该数据库记录某采油厂对油/水井实施作业时所消耗的成本。
(作业:为保证油水井正常生产所实施的工程项目)⑵成本的消耗分为预算、结算、入账三个状态。
预算:采油队向管理部门提出作业申请,并经管理部门批准后,由管理部门负责录入。
结算:某次作业施工结束后,由管理部门与施工单位共同核算各种成本,由管理部门负责录入。
入账:结算后,财务部门将成本计入采油厂账目,由财务部门录入。
⑶预算状态时需要录入的数据:(★:字符型◆货币型▲日期型)★单据号:某一作业项目的编号★预算单位:指需要对油水井实施作业的采油队代码★井号:需要实施作业的油水井◆预算金额★预算人▲预算日期⑷结算状态时需要录入的数据:(★:字符型◆货币型▲日期型▼数值型)调出某条预算记录,录入以下数据:▲开工日期▲完工日期★施工单位★施工内容◆材料费(要求另外用表单独记录材料消耗的明细)(★单据号★物码▼消耗数量◆单价)◆人工费◆设备费◆其它费用◆结算金额(材料费+人工费+设备费+其它费用)★结算人▲结算日期⑸入账状态时需要录入的数据:(★:字符型◆货币型▲日期型)调出某条结算记录,录入以下数据:◆入账金额★入账人▲入账日期⑹为了避免出现数据的不一致和方便数据录入,要求定义以下基础表:(★:字符型)单位代码表:★单位代码★单位名称油水井表:★井号★井别:油井/水井★单位代码(表示某口井由哪个单位负责管理)施工单位表:★施工单位名称物码表:★物码★名称规格★计量单位2.根据以上要求,在Query Analyzer中用建表语句定义所需的数据表。
CREATE TABLE单位代码表(单位代码VARCHAR(20),单位名称VARCHAR(20));CREATE TABLE油水井表(井号VARCHAR(20),井别VARCHAR(20),单位代码VARCHAR(20),);CREATE TABLE施工单位表(施工单位名称VARCHAR(30));CREATE TABLE物码表(物码VARCHAR(20),名称规格VARCHAR(20),计量单位VARCHAR(20));CREATE TABLE材料费(单据号VARCHAR(20),物码VARCHAR(20),消耗数量SMALLINT,单价NUMERIC(10,2),);CREATE TABLE成本材料消耗表(单据号VARCHAR(20),预算单位VARCHAR(20),井号VARCHAR(20),预算金额NUMERIC(10,2),预算人VARCHAR(20),预算日期DATE,开工日期DATE,完工日期DATE,施工单位VARCHAR(20),施工内容VARCHAR(20),材料费NUMERIC(10,2),人工费NUMERIC(10,2),设备费NUMERIC(10,2),其它费用NUMERIC(10,2),结算金额NUMERIC(10,2),结算人VARCHAR(20),结算日期DATE,入账金额NUMERIC(10,2),入账人VARCHAR(20),入账日期DATE,);3.在Query Analyzer中用数据插入语句录入以下数据:单位代码表:1122 采油厂112201 采油一矿112202 采油二矿112201001 采油一矿一队112201002 采油一矿二队112201003 采油一矿三队112202001 采油二矿一队112202002 采油二矿二队INSERTINTO单位代码表(单位代码,单位名称)VALUES('1122','采油厂');INSERTINTO单位代码表(单位代码,单位名称)VALUES('112201','采油一矿');INSERTINTO单位代码表(单位代码,单位名称)VALUES('112202','采油二矿');INSERTINTO单位代码表(单位代码,单位名称)VALUES('112201001','采油一矿一队');INSERTINTO单位代码表(单位代码,单位名称)VALUES('112201002','采油一矿二队');INSERTINTO单位代码表(单位代码,单位名称)VALUES('112201003','采油一矿三队');INSERTINTO单位代码表(单位代码,单位名称)VALUES('112202001','采油二矿一队');INSERTINTO单位代码表(单位代码,单位名称)VALUES('112202002','采油二矿二队');油水井表:(y001 油井112201001)(y002 油井112201001)(y003 油井112201002)(s001 水井112201002)(y004 油井112201003)(s002 水井112202001)(s003 水井112202001)(y005 油井112202002)INSERTINTO油水井表(井号,井别,单位代码)VALUES('y001','油井','112201001');INSERTINTO油水井表(井号,井别,单位代码)VALUES('y002','油井','112201001');INSERTINTO油水井表(井号,井别,单位代码)VALUES('y003','油井','112201002');INSERTINTO油水井表(井号,井别,单位代码)VALUES('s001','水井','112201002');INSERTINTO油水井表(井号,井别,单位代码)VALUES('y004','油井','112201003');INSERTINTO油水井表(井号,井别,单位代码)VALUES('s002','水井','112202001');INSERTINTO油水井表(井号,井别,单位代码)VALUES('s003','水井','112202001');INSERTINTO油水井表(井号,井别,单位代码)VALUES('y005','油井','112202002');施工单位表:作业公司作业一队作业公司作业二队作业公司作业三队INSERTINTO施工单位表(施工单位名称)VALUES('作业公司作业一队');INSERTINTO施工单位表(施工单位名称)VALUES('作业公司作业二队');INSERTINTO施工单位表(施工单位名称)VALUES('作业公司作业三队');物码表:(单价均为10)wm001 材料一吨wm002 材料二米wm003 材料三桶wm004 材料四袋INSERTINTO物码表(物码,名称规格,计量单位)VALUES('wm001','材料一','吨');INSERTINTO物码表(物码,名称规格,计量单位)VALUES('wm002','材料二','米');INSERTINTO物码表(物码,名称规格,计量单位)VALUES('wm003','材料三','桶');INSERTINTO物码表(物码,名称规格,计量单位)VALUES('wm004','材料四','袋');4.利用Query Analyzer录入以下数据:某作业项目编号zy2018001预算单位:112201001 井号:y001 预算金额:10000.00预算人:张三预算日期:2018-5-1 开工日期:2018-5-4完工日期:2018-5-25 施工单位:作业公司作业一队施工内容:堵漏材料费:7000.00(其中材料一:2000.00材料二:2000.00 材料三:2000.00 材料四:1000.00)人工费:2500.00 设备费:1000.00其它费用:1400.00结算金额:11900.00 结算人:李四结算日期:2018-5-26入账金额:11900.00 入账人:王五入账日期:2018-5-28INSERT INTO成本材料消耗表(单据号,预算单位,井号,预算金额,预算人,预算日期,开工日期,完工日期,施工单位,施工内容,材料费,人工费,设备费,其它费用,结算金额,结算人,结算日期,入账金额,入账人,入账日期)VALUES('zy2018001','112201001','y001',10000.00,'张三','2018-5-1','2018-5-4','2018-5-25','作业公司作业一队','堵漏',7000.00,2500.00,1000.00,1400.00,11900.00,'李四','2018-5-26',11900.00,'王五','2018-5-28');5.利用Enterprise Manager录入以下数据:⑴某作业项目编号zy2018002预算单位:112201002 井号:y003 预算金额:11000.00预算人:张三预算日期:2018-5-1 开工日期:2018-5-4完工日期:2018-5-23 施工单位:作业公司作业二队施工内容:检泵材料费:6000.00(其中材料一:2000.00材料二:2000.00 材料三:2000.00)人工费:1500.00 设备费:1000.00其它费用:2400.00结算金额:10900.00 结算人:李四结算日期:2018-5-26入账金额:10900.00 入账人:王五入账日期:2018-5-28⑵某作业项目编号zy2018003预算单位:112201002 井号:s001 预算金额:10500.00 预算人:张三预算日期:2018-5-1 开工日期:2018-5-6 完工日期:2018-5-23 施工单位:作业公司作业二队施工内容:调剖材料费:6500.00(其中材料一:2000.00 材料二:2000.00 材料三:2500.00)人工费:2000.00 设备费:500.00其它费用:1400.00 结算金额:10400.00 结算人:李四结算日期:2018-5-26 入账金额:10400.00 入账人:王五入账日期:2018-5-28 ⑶某作业项目编号zy2018004预算单位:112202001 井号:s002 预算金额:12000.00 预算人:张三预算日期:2018-5-1 开工日期:2018-5-4 完工日期:2018-5-24 施工单位:作业公司作业三队施工内容:解堵材料费:6000.00(其中材料一:2000.00 材料二:2000.00 材料四:2000.00)人工费:2000.00 设备费:1000.00其它费用:1600.00 结算金额:10600.00 结算人:李四结算日期:2018-5-26 入账金额:10600.00 入账人:赵六入账日期:2018-5-28 ⑷某作业项目编号zy2018005预算单位:112202002 井号:y005 预算金额:12000.00 预算人:张三预算日期:2018-5-1 开工日期:2018-5-4 完工日期:2018-5-28 施工单位:作业公司作业三队施工内容:防砂材料费:7000.00(其中材料一:2000.00材料二:2000.00 材料四:3000.00)人工费:1000.00 设备费:2000.00其它费用:1300.00结算金额:11300.00结算人:李四结算日期:2018-6-16.利用Query Analyzer完成以下操作:⑴将编号为zy2018005的项目的人工费和结算金额增加200元。
数据库系统原理实验指导书2011(SQL 2005版)-3

实验六视图的创建和管理一、实验目的与要求⏹熟练掌握使用SQL SERVER管理平台和SQL语句创建、查询、修改和删除视图。
⏹进一步理解视图的概念和作用。
二、实验内容和步骤1、创建视图的基本操作1)启动SQL SERVER管理平台,选择要创建视图的数据库文件夹“学生管理”数据库,选择其中的“视图”对象,单击鼠标右键。
2)选择“新建视图”命令,打开SQL SERVER视图设计窗口。
创建一张选修了3号课程成绩在70分以上的学生信息视图。
3)打开“添加表”窗口,添加学生关系表和成绩表。
4)在“视图建立”窗口,选择“学生”表中的学号和姓名,“成绩”表中的课程号和成绩,作为视图的显示列。
设置视图中各属性列的名称。
5)单击工具栏“执行”按钮,完成视图的创建。
2、根据上述操作步骤,使用SQL SERVER管理平台自己创建以下视图。
1)创建一个计算机系学生信息的视图VIEW1,在实验报告中给出操作步骤和执行视图的结果。
2)创建一个包含选修课程的学生的姓名,课程名和成绩的视图VIEW2。
在实验报告中给出操作步骤和执行视图的结果。
3、启动查询编辑器,用SQL语句完成下列操作。
1)删除视图VIEW1,用SQL语句重新建立计算机系学生信息的视图VIEW3,在实验报告中给出视图建立的语句的和执行视图的结果。
2)建立学分为3学分的课程视图VIEW4,在实验报告中给出视图建立的语句的和执行视图的结果。
3)利用VIEW2视图,查询选修了数据库原理课程成绩在75分以上的学生姓名,在实验报告中给出视图查询的语句的和执行后的结果。
三、分析与回答1、总结SQL SERVER2005中创建视图有哪些方法。
2、简述视图与基本表的区别与联系。
实验七数据库备份和恢复一、实验目的与要求⏹通过实验使学生了解SQL Server的数据备份和恢复机制。
⏹掌握SQL Server中数据库备份和恢复的方法。
二、实验内容1、基本知识数据库的备份和恢复是两个相对应的概念,备份是恢复的基础,恢复是备份的目的。
数据库原理中SQL语句实验指导书及答案

实验四:管理SQL Server表数据一、实验目的熟悉数据表结构及使用特点;熟悉使用Management Stuio界面方式管理数据表数据;熟悉使用T-SQL语句管理数据表数据。
二、实验环境已安装SQL Server 2005 企业版的计算机(13台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求了解SQL Server数据表数据的管理方法;了解SQL Server数据类型;完成实验报告(部分题只需给出关键语句)。
五、实验内容及步骤以课本指定的数据库为例,并依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作:向各个数据表中插入如下记录:学生信息表(student)课程信息表(course)选课信息表(sc)insert into student.dbo.sc values('20051501','1',75)insert into student.dbo.course values('1','数据库','5',4)insert into student.dbo.student values('201015001','赵菁菁','女',23,'CS') 2.修改CS系姓名为“李勇”的学生姓名为“李咏”;update studentset Sname='李咏'where Sname='李勇'3.修改课程“数据处理”的学分为3学分;3.update courseset Ccredit=3where Cname ='数据处理'4.将选修课程“1”的同学成绩加5分;4.update scset Grade =Grade+5where Cno='1'5.将选修课程“大学英语”的同学成绩加5分;update scset Grade=Grade+5from course,scwhere o=o and ame='大学英语'6.将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;update studentset Sname='王丹丹',Ssex='女',Sage=20,Sdept='MA'where Sno='200515010'7.修改借书证号为2005001的学生记录重新设置:名字为王婧婧、专业为信息管理、借书量增加5本;(因为无些相关的数据表帮无法实现)8.删除数据表student中无专业的学生记录;deletefrom studentwhere Sdept is null9.删除数据表student中计算机系年龄大于25的男同学的记录;deletefrom studentwhere Ssex='男' and Sage>25 and Sdept='CS'10.删除数据表course中学分低于1学分的课程信息;deletefrom coursewhere Ccredit<1实验五:数据库单表查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。
数据库SQL实验操作答案

数据库SQL实验操作答案1、创立数据库:创立一个教学管理数据库,以自己的名字拼音首字母+下划线+SC作为库名〔如名字叫张三,那么:ZC_SC〕,〔1〕确定数据库名称;数据库用于学生管理,命名为如ZS_SC〔2〕确定数据库的位置;要求:数据文件和日志文件分别存储在E盘自己的目录下。
〔3〕确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。
〔4〕确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。
请利用查询分析器〔Query Analyzer〕,使用SQL语句指定参数创立数据库,给出实现代码和截图。
实现代码及截图样例: SQL语句: create database CYR_SC on primary ( name='CYR_SC_DATA', filename='E:\\CYR_SC_DATA.MDF', size=30MB, filegrowth=20% ) log on ( name='CYR_SC_LOG',filename='E:\\CYR_SC_LOG.LDF', size=3mb, filegrowth=1mb )……………查询分析器执行情况: SQL语句及执行结果截图显示 2、创立根本表:〔注意:请在表名前加上自己的姓名拼音的首字母,主键前加上自己的姓名拼音的首字母,例如张三为ZC_〕其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。
创立:student表(学生信息表)、course表〔课程信息表)、teacher表〔教师信息表)、student _course表〔学生选课成绩表)、teacher_course表〔教师上课课表〕等。
请利用查询分析器,使用SQL语句将下面各表建立到教学管理数据库中。
写出SQL语句〔注意级联删除设置〕,查看各数据表之间的关系,画出实体关系图〔ER图〕。
SQL实验指导书(含部分答案)

实验三用T-SQL编辑修改数据库数据一、实验目的熟练掌握在查询分析器中执行INSERT,UPDATE,DELETE语句来实现数据的添加、修改、删除等操作。
二、操作示例1.使用INSERT语句向表中添加数据。
1)向mydatabase数据库的kcxxb表添加下列新记录(插入所有列):use mydatabasegoinsert kcxxb values (‘046110’,‘多媒体应用技术’,70,4)select * from kcxxb --显示结果2)向xsxxb表添加记录(插入部分列):use mydatabasegoinsert xsxxb (xh,xm,csrq,address)values('04651020','黄小烽','1983-7-6','40-203')select * from xsxxb --查询显示结果3)创建一个与xsxxb表结构一样的空表aa,并把xsxxb表中性别(xb)列为“女”的记录添加到aa表中。
并查看aa表中的信息。
use mydatabasegoselect * into aa from xsxxb where 1=2 --1=2是永远为假的条件。
insert aa select * from xsxxb where xb= '女'select * from aa --查询显示结果2.UPDATE语句修改数据1)将xscjb表中的成绩(grade)减少3分。
USE mydatabasegoUPDATE xscjb SET grade=grade-32)将kcxxb表中课程名(kcm)为“哲学”的课时(ks)改为54。
Use mydatabaseGoUpdate kcxxb set ks=72 where kcm= '哲学' 3.DELETE语句删除记录1)删除aa表中出生日期(csrq)在1985年以后的记录。
sql实验指导答案3--6

create database employeesonprimary(name='employee1',filename='D:\data\employee1.mdf',size= 10 MB,maxsize=UNLIMITED,filegrowth= 10%),(name='employee2',filename='D:\data\employee2.mdf',size= 20 MB,maxsize= 100 MB,filegrowth= 1 MB)log on(name='employeelog1',filename='D:\data\employeelog1.ldf',maxsize= 50 MB,filegrowth= 1 MB),(name='employeelog2',filename='D:\data\employeelog2.ldf',maxsize= 50 MB,filegrowth= 1 MB)alter database employeesadd filegroup fgroupgoalter database employeesadd file(name='employee3',filename='D:\data\employee3.mdf',size= 20 MB,maxsize= 100 MB,filegrowth= 1 MB),(name='employee4',filename='D:\data\employee4.mdf',size= 20 MB,maxsize= 100 MB,filegrowth= 1 MB),(name='employeelog3',filename='D:\data\employeelog3.ldf',maxsize= 50 MB,filegrowth= 1 MB)to filegroup fgroupgouse employeesgoCREATE TABLE employee(number int NOT NULL,name varchar(20)NOT NULL,sex char(2)NULL,birthday date NULL,hire_date date NOT NULL DEFAULT (getdate()),professional_title varchar(10)NULL,salary money NULL,memo ntext NULL,constraint pk_id primary key clustered(number))use employeesgoselect*from employeeuse employeesgodrop table employeeuse MASTERgoalter database employees set offline with rollback immediate drop database employeesgocreate table products(id char(10)not null,name char(20)not null,price money default 0.01,quantity smallint null,constraint pk_id primary key clustered (id))create table student(Id char(8),name char(8),sex char(2),phonenum char(11),constraint chk_sex check(sex in('F','M')),Constraint chk_phonenum check(phonenum like'(010)[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') )alter table studentdrop constraint chk_phonenumalter table studentadd constraint chk_phonenum check(phonenum like'(010)[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') create database storeon(name=store,filename='D:\data\store.mdf',size= 5 MB,maxsize= 10 MB,filegrowth= 1 MB)log on(name=storelog,filename='D:\data\storelog.ldf',size= 5 MB,maxsize= 10 MB,filegrowth= 1 MB)use storegocreate table商品(商品号char(8)not null primary key,商品名char(16)not null,单价float not null,商品类别char(10),供应商char(10),constraint p_p check(单价>0.0))create table顾客(顾客号char(10)not null primary key,姓名char(10)not null,住址varchar(50))create table购买(顾客号char(10)not null,商品号char(8)not null,购买数量int not null,primary key(顾客号,商品号),foreign key (顾客号)references顾客(顾客号),foreign key (商品号)references商品(商品号),constraint b_n check(购买数量>0 and购买数量<20))create table购买(顾客号char(10)not null,商品号char(8)not null,购买数量int not null,primary key(顾客号,商品号),constraint buy_c foreign key (顾客号)references顾客(顾客号), constraint buy_p foreign key (商品号)references商品(商品号),constraint b_n check(购买数量>=0 and购买数量<=20))insert into商品values('M01','佳洁士',8.00,'牙膏','宝洁');insert into商品values('M02','高露洁',6.50,'牙膏','高露洁');insert into商品values('M03','洁诺',5.00,'牙膏','联合利华');insert into商品values('M04','舒肤佳',3.00,'香皂','宝洁');insert into商品values('M05','夏士莲',5.00,'香皂','联合利华');insert into商品values('M06','雕牌',2.50,'洗衣粉','纳爱斯');insert into商品values('M07','中华',3.50,'牙膏','联合利华');insert into商品values('M08','汰渍',3.00,'洗衣粉','宝洁');insert into商品values('M09','碧浪',4.00,'洗衣粉','宝洁');insert into顾客values('C01','Dennis','海淀');insert into顾客values('C02','John','朝阳');insert into顾客values('C03','Tom','东城');insert into顾客values('C04','Jenny','东城');insert into顾客values('C05','Rick','西城');insert into购买values('C01','M01',3);insert into购买values('C01','M05',2);insert into购买values('C01','M08',2);insert into购买values('C02','M02',5);insert into购买values('C02','M06',4);insert into购买values('C03','M01',1);insert into购买values('C03','M05',1);insert into购买values('C03','M06',3);insert into购买values('C03','M08',1);insert into购买values('C04','M03',7);insert into购买values('C04','M04',3);insert into购买values('C05','M06',2);insert into购买values('C05','M07',8);select distinct姓名from顾客,商品,购买where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and商品.供应商='宝洁'select distinct姓名from顾客where顾客.顾客号in(select购买.顾客号from购买where购买.商品号in(select商品.商品号from商品where商品.供应商='宝洁'))select distinct姓名from顾客where exists(select*from购买where exists(select*from商品where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and商品.供应商='宝洁'))select distinct姓名from顾客,商品,购买where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and商品.商品号in(select distinct商品.商品号from顾客,商品,购买where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and姓名='Dennis') and姓名<>'Dennis'select姓名from顾客where顾客号in(select顾客号from购买where商品号in(select商品号from购买where顾客号in(select顾客号from顾客where姓名='Dennis')))and姓名<>'Dennis'select top 1 供应商,sum(购买数量)from购买,商品where商品.商品号=购买.商品号and商品类别='牙膏'group by供应商order by SUM(购买数量)descupdate商品set单价=单价*1.1where商品类别='牙膏'deletefrom商品where商品号not in(select商品号from购买)CREATE TABLE S(sno char (10)primary key,sname char (10)not null,age tinyint,sex char (10)CHECK(sex='男'OR sex='女'))INSERT INTO S VALUES ('98601','李强',20,'男')INSERT INTO S VALUES ('98602','刘丽',21,'女')INSERT INTO S VALUES ('98603','张兵',20,'男')INSERT INTO S VALUES ('98604','陈志坚',22,'男')INSERT INTO S VALUES ('98605','张兵',21,'女')CREATE TABLE C(cno char (10)primary key,cname char (10)not null,teacher char(8),office char (10))INSERT INTO C VALUES ('C601','高等数学','周振兴', 416) INSERT INTO C VALUES ('C602','数据结构','刘建平', 415) INSERT INTO C VALUES ('C603','操作系统',' 刘建平', 415)INSERT INTO C VALUES ('C604','编译原理',' 王志伟', 415) CREATE TABLE SC(sno char (10)not null,cno char (10)not null,score tinyint,primary key (sno,cno),foreign key (sno)references S(sno),foreign key (cno)references C(cno))INSERT INTO SC VALUES ('98601','C601',90)INSERT INTO SC VALUES ('98601','C602',90)INSERT INTO SC VALUES ('98601','C603',85)INSERT INTO SC VALUES ('98601','C604',87)INSERT INTO SC VALUES ('98602','C601',90)INSERT INTO SC VALUES ('98603','C601',75)INSERT INTO SC VALUES ('98603','C602',70)INSERT INTO SC VALUES ('98603','C604',56)INSERT INTO SC VALUES ('98604','C601',90)INSERT INTO SC VALUES ('98604','C604',85)INSERT INTO SC VALUES ('98605','C601',95)INSERT INTO SC VALUES ('98605','C603',80)SELECT cno,cname FROM CWHERE teacher='周振兴'SELECT sno,sname FROM SWHERE age>21 and sex='男'--youwentiSELECT sname FROM SWHERE NOT EXISTS(SELECT*FROM CWHERE teacher='刘建平'AND NOT EXISTS(SELECT*FROM SCWHERE SC.sno=S.sno AND o=o)) SELECT cno FROM CWHERE cno NOT in(SELECT cno FROM SCWHERE cno=o and sno in(SELECT sno FROM SWHERE sname='刘丽'))SELECT cno FROM CWHERE NOT EXISTS(SELECT cno FROM SCWHERE cno=o and sno in(SELECT sno FROM SWHERE sname='刘丽'))SELECT sno FROM SCGROUP BY sno HAVING COUNT(*)>=2SELECT cno,cname FROM CWHERE NOT EXISTS(SELECT*FROM SWHERE NOT EXISTS(SELECT*FROM SCWHERE o=o AND SC.sno=S.sno)) SELECT sno FROM SWHERE sno IN(SELECT sno FROM SCWHERE cno IN(SELECT cno FROM CWHERE teacher='王志伟'))SELECT SC2.sno FROM SC SC1JOIN SC SC2ON SC1.sno=SC2.snoWHERE o='C601'and o='C603'SELECT sname FROM SWHERE NOT EXISTS(SELECT*FROM CWHERE NOT EXISTS(SELECT*FROM SCWHERE SC.sno=S.sno AND o=o)) SELECT sno FROM SWHERE sno IN(SELECT sno FROM SCWHERE cno IN(SELECT cno FROM SCWHERE sno='98603'))AND sno!='98603'SELECT DISTINCT sno FROM SCWHERE cno IN(SELECT cno FROM SCWHERE sno='98603')AND sno!='98603'SELECT S.sno,sname FROM S,SC,CWHERE S.sno=SC.sno and o=o and ame='操作系统' select*FROM S,SC,CWHERE S.sno=SC.sno and o=o。
数据库原理实验答案
3)向SC表中插入数据
Insert Into SC(Sno,Cno, Grade) Values(200215121,1,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,2,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,3,88);
Insert Into SC(Sno,Cno, Grade) Values(200215122,2,90);
Insert Into SC(Sno,Cno, Grade) Values(200215122,3,80);
Insert Into SC(Sno,Cno, Grade) Values(200215121,4,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,5,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,6,88);
Insert Into SC(Sno,Cno, Grade) Values(200215123,2,90);
select sno,grade from sc where cno='3' order by grade desc;
8)查询各个课程号与相应的选课人数。
select cno, count(sno) from sc group by cno;
2. 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
数据库原理中SQL语句实验指导书及答案
实验四:管理SQL Server表数据一、实验目的熟悉数据表结构及使用特点;熟悉使用Management Stuio界面方式管理数据表数据;熟悉使用T-SQL语句管理数据表数据。
二、实验环境已安装SQL Server 2005 企业版的计算机(13台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求了解SQL Server数据表数据的管理方法;了解SQL Server数据类型;完成实验报告(部分题只需给出关键语句)。
五、实验内容及步骤以课本指定的数据库为例,并依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作:向各个数据表中插入如下记录:学生信息表(student)课程信息表(course)选课信息表(sc)insert into student.dbo.sc values('20051501','1',75)insert into student.dbo.course values('1','数据库','5',4)insert into student.dbo.student values('201015001','赵菁菁','女',23,'CS') 2.修改CS系姓名为“李勇”的学生姓名为“李咏”;update studentset Sname='李咏'where Sname='李勇'3.修改课程“数据处理”的学分为3学分;3.update courseset Ccredit=3where Cname ='数据处理'4.将选修课程“1”的同学成绩加5分;4.update scset Grade =Grade+5where Cno='1'5.将选修课程“大学英语”的同学成绩加5分;update scset Grade=Grade+5from course,scwhere o=o and ame='大学英语'6.将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;update studentset Sname='王丹丹',Ssex='女',Sage=20,Sdept='MA'where Sno='200515010'7.修改借书证号为2005001的学生记录重新设置:名字为王婧婧、专业为信息管理、借书量增加5本;(因为无些相关的数据表帮无法实现)8.删除数据表student中无专业的学生记录;deletefrom studentwhere Sdept is null9.删除数据表student中计算机系年龄大于25的男同学的记录;deletefrom studentwhere Ssex='男' and Sage>25 and Sdept='CS'10.删除数据表course中学分低于1学分的课程信息;deletefrom coursewhere Ccredit<1实验五:数据库单表查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。
SQL数据库实验和参考答案
SQL数据库实验和参考答案数据库实验和参考答案上机实验七1.声明⼀个字符串型的局部变量,并对其赋值:‘我的变量’,然后显⽰出此值。
declare @a char(10)set @a='我的变量'--select @a as 变量的值print @a2.编程实现如下功能:1)声明两个整形的局部变量:@i1和@i2,对@i1赋初值:10,@i2的值为:@i1乘以5,再显⽰@i2的结果值。
declare @i1 int,@i2 intset @i1=10set @i2=@i1*5print @i22)⽤While语句实现5000减1,减2,……⼀直减到50的计算,并显⽰最终的结果。
declare @sum int,@i intset @sum=5000set @i=1while(@i<=50)beginset @i=@i+1endprint @sum3)输出100以内的素数。
declare @i smallint,@jsmallint,@k smallintset @i=2while(@i<=100)beginset @k=0set @j=2while(@j<@i)beginif(@i%@j=0)beginset @j=@Iendset @j=@j+1endif @k=0print @Iset @i=@i+1end4)将字符数在20以内的字符串变量C的值逆序输出。
要求输出界⾯为:declare @i varchar(20),@j int,@k varchar(20)set @j=1set @k=''while @j<=len(@i)beginset @k=substring(@i,@j,1) set @j=@j+1endprint '字符串C的值:'+@iprint 'C的逆序字符串:'+@k5)从SC表中查询所有学⽣的选课成绩情况,分别统计各分数段⼈数,并输出统计结果。
数据库原理实验指导书
数据库原理实验指导书实验名称:试验一:SQL语言嵌套查询和数据更新操作所属课程:数据库原理实验类型:设计型实验实验类别:基础□专业基础√专业□实验学时:4学时一、实验目的1.熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;2.加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算);3.熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用;4.加深理解表的定义对数据更新的作用二、预习与参考1.熟悉SQL SERVER 工作环境;2.连接到学生-课程数据库3.复习对表中数据查询的SQL语言命令;4.复习对表中数据的插入、修改和删除的SQL语言命令。
三、实验要求(设计要求)针对教材例子,通过SQL SERVER企业管理器和查询分析器两种模式,熟悉数据嵌套查询、更新操作。
四、实验方法及步骤1.在表S、C、SC上进行简单查询;2.在表S、C、SC上进行连接查询;3.在表S、C、SC上进行嵌套查询;4.使用聚合函数的查询;5.对数据的分组查询;6.对数据的排序查询。
7.将数据插入当前数据库的表S、C、SC中;A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行8.将以上插入的数据分别以.SQL文件和.txt文件的形式保存在磁盘上;9.修改表S、C、SC中的数据;A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行10.删除表S、C、SC中的数据。
A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行五、实验内容在表S,C,SC上完成以下操作:1.查询学生的基本信息;2.查询“CS”系学生的基本信息;3.查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;4.找出最大年龄;5.找出“CS”系年龄最大的学生,显示其学号、姓名;6.找出各系年龄最大的学生,显示其学号、姓名;7.统计“CS”系学生的人数;8.统计各系学生的人数,结果按升序排列;9.按系统计各系学生的平均年龄,结果按降序排列;10.查询每门课程的课程名;11.查询无先修课的课程的课程名和学时数;12.统计无先修课的课程的学时总数;13.统计每位学生选修课程的门数、学分及其平均成绩;14.统计选修每门课程的学生人数及各门课程的平均成绩;15.找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列;16.查询选修了“1”或“2”号课程的学生学号和姓名;17.查询选修了“1”和“2”号课程的学生学号和姓名;18.查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;19.查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);20.查询没有选修课程的学生的基本信息;21.查询选修了3门以上课程的学生学号;22.查询选修课程成绩至少有一门在80分以上的学生学号;23.查询选修课程成绩均在80分以上的学生学号;24.查询选修课程平均成绩在80分以上的学生学号;25.选做:针对SPJ数据库中的四个表S,P,J,SPJ,完成教材P74-75--习题5中的查询及教材P127--习题5中的查询。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL数据库原理实验指导书及答案
数据库原理
SQLServer
实验指导书
1
数据库系统原理实验
一、基本操作实验
实验1:数据库的定义实验
本实验的实验目的是要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL语句和进行结果分析。
本实验的内容包括:
l)创建数据库和查看数据库属性。
2)创建表、确定表的主码和约束条件,为主码建索引。
3)查看和修改表结构。
4)熟悉SQL Server Enterpriser Manager和 Query Analyzer工具的使用方法具体实验任务如下。
1.基本提作实验
1)使用Enterpriser Manager建立图书读者数据库
2)在Enterpriser Manager中查看图书读者数据库的属性,并进行修改,使之符合要求。
3)通过Enterpriser Manager,在建好了图书借阅数据库中建立图书、读者和借阅3个表,其结构为:
图书(书号,类别,出版社,作者,书名,定价,版次);读者(编号,姓名,单位,性别,电话):借阅(书号,读者编号,借阅日期人)
要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和 Default Value(缺省值)等列级数据约柬。
4)在Enterpriser Manager建立图书、读者和借阅3个表的表级约束:每个表的PrimaryKey
2
(主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码)约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check (检查)约束。
2.提高操作实验
建立学生_课程库操作,在查询分析器中用SQL命令实现。
库中表结构为: Student (sno,sname,sage,ssex,sdept): course(cno,cname,cpno,ccredit); sc (sno,cno,grade)。
要求:
l)建库、建表、建立表间联系。
2)选择合适的数据类型。
3)定义必要的索引、列纽约束和表级约束。
3选择操作实验
将自设计的数据库应用系统中的数据库、库中的表、索引和约束用T-SQL表达,并通过Enterpriser Manager或Query Analyzer实现建库、建表、建立表间联系和建立必要的索引、列级约束和表级约束的操作。
实验2:数据库的建立和维护实验
本实验的目的是要求学生熟练掌握使用SQL、T-SQL和SQL Server Enterpriser Manager向数据库输入数据、修改数据和删除数据的操作。
3
1.基本操作实验
1)通过 Enterpriser Manager,在图书借阅数据库的图书、读者和借阅3个表中各输入10条记录。
要求记录不仅满足数据约束要求,还要有表间关联的记录。
2)图书借阅数据库的三个基本表为图书(书号,类别,出版社,作者,书名,定价, 版次);读者(编号,姓名,单位,性别,电话);借阅(书号,读者编号,借阅日期)。
对通过Enterpriser Manager实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入、删除和修改操作。
3)通过 Enterpriser Manager实现对学生选课库的数据增加、数据删除和数据修改操作。
要求学生、课程和选课表中各有10条以上记录。
2.提高操作实验
向自设计的数据库应用系统的库中的各表,输入多条实际数据,并实现数据的增、删。
改操作。
3选择操作实验
将用数据修改语句和数据删除语句通过Query Analyzer。
输入给SQL Server数据库,并查看、分析执行的结果,实现正确操作。
①UPDATE 读者 SET 借阅册数=(SELECT COUNT(*) FROM 读者,借阅
WHERE 读者.编号=借阅.读者编号 AND 借阅日期BETWEEN ‘2001-01-01’ AND
‘2001-12-31’0
②DELETE 借阅 WHERE 读者编号 IN (SELECT 编号 FROM 读者 WHERE 单位=’计算机’)
实验3:数据库的简单查询和连接查询实验
本实验的目的是使学生掌握SQL Server Query Analyzer的使用方法,加深对SQL和
T-SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据联结广询的
操作方法。
4
本实验的主要内容是:
1)简单查询操作。
该实验包括投影、选择条件表达,数据排序,使用临时表等。
2)连接查询操作。
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接。
内连接、左连接、右连接和自连接等。
实验方法:将查询需求用T-SQL语言表示;在SQL Server Query Analyzer的输入区
中输入T-SQL查询语句;设置 Query Analyzer的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如
果结果不正确,要进行修改,直到正确为止。
1.基本操作实验(1)简单查询实验1)
在学生选课库中实现其数据查询操作。
① 求数学系学生的学号和姓名
select sno,sname from student where sdept='ma'
② 求选修了课程的学生学号
select sno from sc
where grade is not null;
③ 求选修C1课程的学生学号和成绩,结果按成绩降序排列,如成绩同按学号升序排列select sno,grade
from sc where cno='1'
5
感谢您的阅读,祝您生活愉快。