数据库实验二及其答案
- 格式:doc
- 大小:67.50 KB
- 文档页数:8
实验内容:实验一:数据库的操作使用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的外部键。
实验二SQL Server 2000 查询分析器的使用1.建立数据库文件2.在数据库文件中建立表、修改表(主码、完整性约束的使用)3.查询操作(2)实验数据及具体要求1.对于教学数据库的三个基本表学生关系Student(SNO,SNAME,SSEX,SAGE,SDEPT)学习关系SC(SNO,CNO,GRADE)创建数据库文件create database jxgl创建学生关系Student(SNO,SNAME,SSEX,SAGE,SDEPT)use jxglCREATE TABLE Student(Sno CHAR(5) PRIMARY KEY,Sname CHAR(20) ,Ssex CHAR(2) check (ssex='男' or ssex='女'),Sage INT check(sage between 15 and 35),Sdept CHAR(15) check (sdept in ('CS','IS','MA','PH')));在student表中插入记录insert into studentvalues('95001','李勇','男',20,'CS')创建学习关系SC(SNO,CNO,GRADE)CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT check(Grade between 0 and 100),PRIMARY KEY (Sno,Cno),/* 主码由两个属性构成,必须作为表级完整性进行定义*/ FOREIGN KEY (Sno) REFERENCES Student(Sno),/* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno)/* 表级完整性约束条件, Cno是外码,被参照表是Course*/ );试用 SQL 的查询语句表达下列查询:1.使用查询分析器建立三个表并输入数据;2.查询选修了课程的学生人数;Select count(distinct sno) from sc /* 加distinct 去掉重复值后计数 */3.给CS系的学生开设5号课程,建立选课信息(成绩暂空)INSERT INTO scSELECT student.sno, o, NULL AS Expr1FROM student CROSS JOINcourseWHERE (student.sdept = 'CS') AND (o = '5')4.将95001学生选修3号课程的成绩改为该课的平均成绩UPDATE scSET grade =(SELECT AVG(grade)FROM scWHERE cno = '3')WHERE (sno = '95001')5.查询计算机系(CS)选修了两门及以上课程的学生的学号,姓名Select sno,snameFrom studentWhere sdept='CS' and sno in (select snofrom scwhere student.sno=sc.snoGroup by sc.sno having count(*)>=2)6.查询student表与sc表基于学号sno的等值连接/自然连接select *from student,scwhere student.sno=sc.sno或SELECT *FROM student INNER JOINsc ON student.sno = sc.sno7.查询课程之先修课的先修课(自身连接)SELECT o, second.cpnoFROM course first INNER JOINcourse second ON first.cpno = o8.查询学生及其选修课程、成绩等情况(不管是否选修均需列出学生信息)select student.sno,sname,ssex,sage,sdept,cno,gradefrom student,scwhere student.sno *=sc.sno或SELECT student.sno, student.sname, student.ssex, student.sage, student.sdept, o,sc.gradeFROM student LEFT OUTER JOINsc ON student.sno = sc.sno9.查询性别为男、课程成绩及格的学生信息及课程号、成绩select student.*,cno,gradefrom student,scwhere ssex='男' and student.sno=sc.sno and grade>=60SELECT student.*, o AS Expr1, sc.grade AS Expr2FROM student INNER JOINsc ON student.sno = sc.snoWHERE (student.ssex = '男') AND (sc.grade >= 60)10.查询与’张立’在同一个系学习的学生信息SELECT *FROM studentWHERE (sdept IN(SELECT sdeptFROM studentWHERE sname = '张立')) AND (sname <> '张立')或SELECT s1.*FROM student s1 , student s2WHERE (s2.sname = '张立') AND (s1.sname <> '张立') and (s1.sdept = s2.sdept)或SELECT s1.*FROM student s1 INNER JOINstudent s2 ON s1.sdept = s2.sdeptWHERE (s2.sname = '张立') AND (s1.sname <> '张立')11.查询选修了课程名为“数据库”的学生学号、姓名和所在系SELECT sno, sname, sdeptFROM studentWHERE (sno IN(SELECT snoFROM scWHERE cno IN(SELECT cnoFROM courseWHERE cname = '数据库')))或SELECT student.sno, student.sname, student.sdeptFROM student,sc,courseWHERE (ame = '数据库') and ( student.sno = sc.sno ) and (o = o)或SELECT student.sno, student.sname, student.sdeptFROM student INNER JOINsc ON student.sno = sc.sno INNER JOINcourse ON o = oWHERE (ame = '数据库')12.查询哪些课程只有女生选修SELECT DISTINCT cnameFROM courseWHERE ('女' = ALL(SELECT ssexFROM sc, studentWHERE (sc.sno = student.sno AND o = o)))或SELECT DISTINCT cnameFROM courseWHERE (NOT EXISTS(SELECT *FROM sc, studentWHERE (sc.sno = student.sno AND o = o AND student.ssex = '男')))13.查询所有未选修1号课程的学生姓名SELECT snameFROM studentWHERE (NOT EXISTS(SELECT *FROM SCWHERE Sno = Student.Sno AND Cno = '1'))14.查询平均成绩大于85分的学号、姓名、平均成绩SELECT student.sno, student.sname, AVG(sc.grade) AS Expr1FROM student,scwhere (student.sno = sc.sno)GROUP BY student.sno, student.snameHAVING (AVG(sc.grade) > 85)或SELECT student.sno, student.sname, AVG(sc.grade) AS Expr1FROM student INNER JOINsc ON student.sno = sc.snoGROUP BY student.sno, student.snameHAVING (AVG(sc.grade) > 85)。
实验名称 实验二:使用分组,排序,汇总课程名称 数据库原理与设计 成绩 学院(系)软件学院 专业 计算机软件工程 班级 学生姓名学号 实验地点 实验日期实验报告答案如下:一.实验内容:1. 完成在在Recruitment,GlobalToyz和Student数据库基础上的查询,按要求完成给出的15道题目,要求写出相应数据库的查询语句(SELECT语句)。
二.实验目的:1.掌握通配符的用法2.掌握 GROUP BY 子句的使用3.掌握 ORDER BY子句的使用4.掌握 TOP和DISTINCT关键字的使用5.掌握 COMPUTE和COMPUTE BY子句的使用6.掌握聚集函数的使用三.实验原理:本次实验主要通过根据题目要求完成对数据库的查询,加深对sql语言的印象。
主要的原理就是SQL语言基本语句及语法。
四.实验过程及编写代码:1.显示以‘S’开头,并且玩具名称不少于7个字符的玩具名称vToyName。
SELECT vToyNameFROM ToysWHERE vToyName like'S______%'2.显示名称里包含字母‘u’或‘x’的玩具ID和名称以及价格。
SELECT cToyId, vToyName, mToyRateFROM ToysWHERE vToyName like'u%'or vToyName like'x%'3.查询信用卡号(cCreditCardNo)中包含4个8的订购者(Shopper)的详细信息。
SELECT*FROM ShopperWHERE cCreditCardNo like'%8%8%8%8%'4.统计订单号为‘000001’的订单订购的玩具的数量和玩具的总花费(mToyCost)。
SELECT cOrderNo, mTotalCostFROM OrdersWHERE cCartId ='000001'5.统计每份提单订购的玩具数量和玩具花费。
(1) 查找有销售记录的客户编号、名称和订单总额。
命令:SELECT a.CustomerNo,CustomerName, sum(quantity*price) orderSumFROM OrderMaster a,OrderDetail b,Customer cWHERE b.orderNo=a.orderNo AND c.CustomerNo=a.CustomerNoGROUP BY a.CustomerNo,CustomerNameORDER BY a.CustomerNo,orderSum DESC(2) 在订单明细表中查询订单金额最高的订单。
命令:SELECT top 1 orderNo,sum(quantity*price)订单金额FROM OrderDetailGROUP BY orderNoORDER BY 订单金额DESC(3) 查询没有订购商品的客户编号和客户名称。
命令:SELECT CustomerNo,CustomerNameFROM CustomerWHERE CustomerNo NOT IN (SELECT CustomerNo FROM OrderMaster)(4) 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。
命令:SELECT a.productNo,orderNo,quantity,(quantity*price) moneyFROM OrderDetail a,(SELECT productNoFROM OrderDetailGROUP BY productNoHA VING COUNT(*)>=3) bWHERE a.productNo =b.productNoORDER BY a.productNo,quantity DESC被订购三件以上的……SELECT b.ProductNo,orderNo,quantity,orderSum=quantity*priceFROM OrderDetail b,(SELECT ProductNo FROM(SELECT ProductNo,sum(quantity)SQfrom OrderDetail GROUP BY ProductNo)aWHERE a.SQ>3)cWHERE b.ProductNo=c.ProductNoORDER BY b.quantity DESC(5) 使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。
《数据库系统概论》实验报告书专业班级学号姓名指导教师安徽工业大学计算机学院实验一:数据定义/数据操纵语言[ 实验日期 ] 2011 年 4 月 10 日[ 实验目的 ]熟悉SQL SERVER上机环境;熟练掌握和使用DDL语言,建立、修改和删除数据库表;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
[ 实验内容 ]1.先建立数据库:STUDENT用两种方式建立:在查询分析器中以DDL语言方式建立.步骤为:先在指定的地方建立放置数据库文件的文件夹(如学生数据库),然后将建立的数据库文件放到指定的文件夹中.2.SQL数据定义语句:例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。
create table Student(SNO char(5) primary key,SNAME char(8) NULL,SDEPT char(2),SCLASS char(2),SAGE smallint)create table Course(CNO char(3) primary key,CNAME char(16),CTIME smallint)create table Teach(TNAME CHAR(8),TSEX CHAR(2),CNO CHAR(3),TDATE smalldatetime,TDEPT CHAR(2)) create table Score (sno char(5),cno char(3),Score float);例1-2: (修改数据库表) 在Student表中增加SSEX(C,2) 字段。
alter table student add SSEX char(2)例1-3: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。
数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(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函数,用于连接和操作数据库。
实验任务书(实验一、实验二)课程名称:数据库原理与技术实验报告要求:1.列出所有的SQL语句和源代码;2.程序要求有适当的注释;3.对数据完整性约束实施要求给出相应的测试用例。
4.实验报告提交电子档。
实验内容:一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。
2.了解表的结构,建立所有表的关系图。
3.利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建日期等。
4.查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.把价格在$20以上的所有玩具的信息拷贝到称为PremiumToys的新表中。
SELECT*INTO PremiumToysFROM ToysWHERE Toys.mToyRate>20;6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。
ALTER TABLE ToysADD CONSTRAINT C1CHECK (siToyQoh BETWEEN 0 AND 200);ALTER TABLE ToysADD CONSTRAINT C2default(1)for siLowerAge;7.给id为‘000001’玩具的价格增加$1。
update Toys set mToyRate=mToyRate+1 where cToyId='000001';8. 列出表PickofMonth中的所有记录,并显示中文列标题。
SELECT cToyId[玩具编号],siMonth[生产月份],iYear[生产年份],iTotalSold [销售总量]FROM PickofMonth;二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。
数据库实验及答案实验二SQL语言的基本操作实验目的和要求:掌握利用SQL语句完成各种查询操作的能力。
重点掌握用SELECT 语句进行各种查询;掌握INSERT语句的用法。
实验内容:用SQL语句完成一下的要求:1.查询信息系(IS)的所有学生信息select * from student where sdept=’is’2.查询选修了“数学”课的所有学生名单Select s.sno,snameFrom student s,course c,scWhere s.sno=sc.sno and /doc/6b13656175.html,o=/doc /6b13656175.html,o and cname=’数学’3.查询至少选修了一门其直接先行课为5号课程的学生的姓名。
Select snameFrom student s, sc, course cWhere s.sno=sc.sno and /doc/6b13656175.html,o=/doc /6b13656175.html,o and pcno=’5’4.查询全体学生的姓名和出生年份。
select sname,year(now())-sage as '出生年份' from student5.查询所有姓王的学生。
select *from student where sname like '王%'6.查询选修了3号课程的学生姓名及成绩,并按成绩降序排序。
Select sname,gradeFrom student s, scWhere s.sno=sc.sno and /doc/6b13656175.html,o=’3’Order by grade desc7.查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
Select *From studentOrder by sdept asc,age desc8.计算2号课程的平均成绩。
数据库实验二作业及答案实验2 SQL Server 数据库的管理一、实验目的1.了解SQL Server数据库的逻辑结构和物理结构的特点。
2.学会使用企业管理器对数据库进行管理。
3.学会使用Transact-SQL语句对数据库进行管理。
二、实验准备1.确定能够创建数据库的用户是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
2.确定要创建的数据库名、所有者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长即增长的方式)和存储数据的文件。
3.了解常用的创建数据库方法。
三、实验内容及步骤1.在企业管理器中创建studentsdb数据库。
(1)运行SQL Server管理器,启动企业管理器,展开服务器“(LOCAL)(Windows NT)”。
(2)右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的名称文本框中输入学生管理数据库名studentsdb。
2.选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“数据文件”、“事务日志”、“文件组”、“选项”和“权限”页面。
3.打开studentsdb数据库的“属性”对话框,在“数据文件”选项卡中修改studentsdb数据文件的“分配空间”大小为2MB。
指定“最大文件大小”为5MB.在“事务日志”选项卡中修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
4.启动查询分析器,在查询分析器中使用Transact-SQL语句CREATE DATABASE创建studb数据库。
然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
CREATEdatabase studbON(NAME=studb,FILENAME='C:\database')exec sp_helpdb5.在查询分析器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小文1MB。
实验二:drop table 订单明细godrop table 订购单godrop table 产品godrop table 客户gocreate table 客户(客户号char(8) primary keycheck(客户号like '[a-z]%' or 客户号like '[A-Z]%'), 客户名称varchar(40) not null,联系人char(8),地址varchar(40),邮政编码char(6) check(邮政编码like '[0-9][0-9][0-9][0-9][0-9][0-9]'),电话char(12) check(isnumeric(电话)=1and (len(ltrim(电话)))>=7))--drop table 产品create table 产品(产品号char(8)collate Chinese_PRC_Stroke_CS_AI_WS --大小写敏感not nullprimary key check(产品号like '[A-Z][A-Z]%'),产品名称varchar(40) ,规格说明char(40) unique,单价smallmoney check(单价>0))--drop table 订购单create table 订购单(客户号char(8) not null foreign key references 客户,订单号char(8) primary key,订购日期datetime default getdate())--drop table 订单明细create table 订单明细(订单号char(8) foreign key references 订购单,序号tinyint ,产品号char(8)collate Chinese_PRC_Stroke_CS_AI_WS --大小写敏感not null foreign key references 产品,数量smallint check(数量>0),primary key (订单号,序号))2 1)--1.产品规格的类型改为varchar(40)alter table 产品alter column 规格说明varchar(40)--出现以下错误:服务器: 消息5074,级别16,状态8,行1对象'UQ__产品__7C8480AE' 依赖于列'规格说明'。
实验二查询部分及查询作业答案实验二. 数据库查询Student表:列名含义数据类型约束Sno 学号字符串,长度为7 主码Sname 姓名字符串,长度为10 非空Ssex 性别字符串,长度为2 Sage 年龄整形Sdept 所在系字符串,长度为20Course表:列名含义数据类型约束Cno 课程号字符串,长度为10 主码Cname 课程名字符串,长度为20 非空Ccredit 学分字节Semester 学期字节SC表:列名含义数据类型约束Sno 学号字符串,长度为7 主码引用Student的Sno作为外码Cno 课程号字符串,长度为10 主码引用Course的Cno作为外码Grade 成绩小整形XKLB 修课类别字符串,长度为4 请写明创建以上三张基本表的语句。
3.将如下数据插入建好的三张表中。
Student表学号姓名性别年龄所在系'9512101','李勇','男',19,'计算机系''9512102','刘晨','男',20,'计算机系''9512103','王敏','女',20,'计算机系''9521101','张立','男',22,'信息系''9521102','吴宾','女',21,'信息系''9521103','张海','男',20,'信息系''9531101','钱小平','女',18,'数学系''9531102','张大力','男',19,'数学系' Course表课程号课程名学分学期'c01','计算机文化学',3,1'c02','VB',2,3'c03','计算机网络',4,7'c04','数据库基础',6,6'c05','高等数学',8,2'c06','数据结构',5,4SC表学号课程号成绩修课类别'9512101','c01',90,'必修''9512101','c02',86,'选修''9512101','c06',null,'必修''9512102','c02',78,'选修''9512102','c04',66,'必修''9521102','c01',82,'选修''9521102','c02',75,'选修''9521102','c04',92,'必修''9521102','c05',50,'必修''9521103','c02',68,'选修''9521103','c06',null,'必修''9531101','c01',80,'选修''9531101','c05',95,'必修''9531102','c05',85,'必修'请写明使用的数据插入语句。
实验一创建、修改数据库和表结构1、用create建立教学数据库的五个基本表:(1)学生表(学号,姓名,性别,年龄),student((Sno, sname,ssex,sage) ;(2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ;(3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ;(4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址),T(Tno,Tname,ssex,birthday,dept,title,address) ;(5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj);Create Database Student default character set utf8 default COLLATE utf8_bin;Use Student;Create Table Student(SNo c har(20) primary key,SName char(20) ,SSex char(4) default '男',SAge int) ENGINE=InnoDB;Create Table Course(CNo c har(20) primary key,CName char(20) NOT NULL,CRedit f loat) ENGINE=InnoDB;Create Table SC(SNo c har(20) NOT NULL,CNo c har(20) NOT NULL,Grade float,Primary Key(SNo, CNo),Foreign Key(SNo) References Student(SNo) On Delete Cascade,Foreign Key(CNo) References Course(CNo))ENGINE=InnoD B;Create Table T(TNo c har(20) Primary Key,TName char(20) NOT NULL,TSex char(4) default '男',birthday DateTime,dept char(20),title char(20),address char(20))ENGINE=InnoDB;Create Table Salary(TNo c har(20) NOT NULL,jbgz float,zwgz float,hj float,Foreign Key(TNo) References T(TNo) On Delete Cascade)ENGINE=InnoDB;2、用alter修改基本表(1)在已存在的学生表student中增加一个sdept(系)的新的属性列;alter table Student add Dept char(20);(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。
《数据库原理》实验2——有答案实验二:管理SQL Server 2000数据库一、实验目的1.了解数据库常用对象及组成;2.熟悉SQL的基本概念和特点;3.熟练掌握T-SQL 语句中的数据定义的使用方法;4.熟悉在SQL Server 2000中创建及编辑数据库;5.熟练掌握SQL的数据定义子句的使用方法。
二、实验环境已安装SQL Server 2000企业版的计算机;具有局域网网络环境,有固定ip地址;三、实验学时2学时四、实验要求1.熟练使用Management Stuio界面方式创建及编辑数据库;2.熟练使用T-SQL 语句创建及编辑数据库;3.完成实验报告。
五、实验准备知识(也可参考SQL Server联机丛书)1.数据库相关属性1)逻辑名称:数据文件和日志文件名称2)文件类型:数据文件及日志文件3)文件组:各个数据文件所属的文件组名称4)初始大小:文件的最原始大小5)自动增长:文件按指定的大小增长,也可限制到最大容量。
6)路径:存放文件的物理目录7)文件名:显示数据文件和日志文件的物理名称2.默认数据库属性1)主数据文件为xx.mdf ,日志文件为xx_log.ldf;2)只有一个文件组Primary;3)主数据文件初始大小为3MB,增量为1MB;4)日志文件初始大小为1MB,增量为10%;5)主数据文件和日志文件都存放在C:\Program Files\Microsoft SQLServer\MSSQL.2\MSSQL\DATA目录下,文件分别为xx.mdf 和xx_log.ldf 。
3.使用界面创建数据库步骤【SQL Server Management Studio】→【对象资源管理器】→【数据库】→【新建数据库】→设置数据库相关属性(名称、大小、位置)4.启动SQL Server 2005查询分析器【SQL Server Management Studio】→【新建查询】5.命令方式下创建数据库CREATE DATABASE database_name /*指定数据库名*/[ON 子句] /*指定数据库文件和文件组属性[LOG ON 子句] /*指定日志文件属性*/6.命令方式修改数据库Alter database database_name{add file [,…n] [to filegroup filegroupname]|add log file [,…n]|remove file logical_file_name [with delete]|modify file六、实验内容及步骤1、假设SQL Server服务已启动,并以Administrator身份登录计算机(文件名称自定);请分别使用Management界面方式和T-SQL语句实现以下操作:1)要求在本地磁盘D创建一个学生-课程数据库(名称为student),只有一个数据文件和日志文件,文件名称分别为stu和stu_log,物理名称为stu_data.mdf 和stu_log.ldf,初始大小都为3MB,增长方式分别为10%和1MB,数据文件最大为500MB,日志文件大小不受限制。
数据库实验报告实验二参考答案[最终版]第一篇:数据库实验报告实验二参考答案[最终版]1.你的老板要求你创建一个数据量为20G的数据库,但是你现在的硬盘上没有一个这么大空闲容量的分区,只有3个空闲容量为8G的分区,请问,你该如何完成这个任务?答:为该数据库创建3个数据文件,每个数据文件只需保存小于8G的数据,将这3个数据文件分别存储在不同的硬盘分区即可。
注:数据库中的数据都保存在该数据库的若干数据文件中,而非日志文件!2.你想创建一个初始大小为2MB的数据库,但是你却发现你创建的数据库的初始大小是5MB,而且不能小于这个值,请问是什么原因?答:系统数据库中的model数据库为用户创建数据库提供模板,也就是说,在创建数据库时,数据库引擎首先通过复制 Model 数据库中的内容来创建数据库的第一部分,然后再用空页填充新数据库的剩余部分。
因此,用户创建的数据库的初始大小不能小于model数据库的大小。
该问题的原因在于model数据库数据文件的初始大小被设定为5MB。
/***************************SQL语言部分*****************************/ /*创建数据库student*/create database studenton(name=student_data,filename='C:DATAstudent_data.mdf', size=3,maxsize=unlimited,filegrowth=1)log on(name=student_log,filename='C:DATAstudent_log.ldf',size =1,maxsize=20,filegrowth=10%)/*修改数据库student--添加数据文件*/alter database student add filegroup studata /*先增加一个文件组studata*/ goalter database studentadd file(Name=student_data1,filename='D:DATAstudent_data1.nd f',Size=50,Maxsize=500,Filegrowth=30%)to filegroup studata /*删除数据库student */ drop database student第二篇:SQL数据库实验报告实验二实验2SQL Server数据库的管理1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。
实验(2)、交互式SQL(1): 利用SQL 语句创建数据库、表及表之实验(3)、交互式SQL(2)—简单查询2012-04-26 22:12:00| 分类:默认分类|字号订阅一、实验目的和注意事项实验目的:掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运算符、逻辑运算符的使用。
注意事项:子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元组选择条件;子句HAVING<条件>必须和GROUP BY 子句配合使用;二、教材例题练习(不需要记录在实验报告上)在实验(2)创建的表及插入的示例数据(数据库TSC)基础上,完成教材P83 例3.9三、实验内容及步骤(在实验报告中记录每个查询的SQL语句)在实验(2)创建的表及插入的示例数据(数据库StudentCourse)基础上,完成①查询计算机系全体学生的信息②查询姓“李”的学生的学号和姓名。
③查询课程表中先行课为空的课程名。
④查询考试成绩有不及格的学生的学号。
⑤求选修了C1 课程或C2 课程的学生的学号及成绩。
⑥查询全体计算机系学生的姓名及其年龄。
⑦查询计算机系在1986-1987 年之间出生的学生的姓名。
⑧查询姓“李”的前2个学生(按姓名升序排列)的学号和姓名。
⑨查询选修了两门以上课程的学生学号与课程数。
⑩查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。
附:参考解答实验(4)、交互式SQL(3)—复杂查询2012-04-26 22:16:24| 分类:默认分类|字号订阅一、实验目的和注意事项实验目的:1.理解多表查询的概念;掌握多表查询的SELECT、 FROM、WHERE、JOIN子句的用法,特别要对比内连接、外连接的结果差异。
2.掌握查询中嵌套查询和组合查询的操作方法,进一步加深对SELECT 语句的理解。
注意事项:1、内连接、左外连接和右外连接的含义及表达方法;2、子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;二、教材例题练习(不需要记录在实验报告上)在实验(2)创建的表及插入的示例数据(数据库TSC)基础上,完成1、教材P93 例3.19,注意some, all的使用方法,并掌握其相应的IN 、NOT IN的等价表示2、教材P94 例3.20,注意SQL Server 2000不支持 Unique谓词,请给出解决这个问题的SQL语句,并记录在教材例3.20的旁边。
最新国家开放大学电大《MySQL数据库应用》网络核心课实验训练2答案最新国家开放大学电大《MySQL数据库》网络核心课实验训练2答案盗传必究实验训练2:数据查询操作答案:实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,理解MySQL运算符、函数、谓词,练习Select语句的操作方法。
实验内容: 1.单表查询【实验2.1】字段查询(1)查询商品名称为“挡风玻璃”的商品信息。
分析:商品信息存在于商品表,而且商品表中包含商品名称此被查询信息,因此这是只需要涉及一个表就可以完成简单单表查询。
(2)查询ID为1的订单。
分析:所有的订单信息存在于订单表中,而且订单用户ID也存在于此表中,因此这是只需要查询订单表就可以完成的查询。
【实验2.2】多条件查询查询所有促销的价格小于1000的商品信息。
分析:此查询过程包含两个条件,第一个是是否促销,第二个是价格,在商品表中均有此信息,因此这是一个多重条件的查询。
【实验2.3】DISTINCT(1)查询所有对商品ID为1的商品发表过评论的用户ID分析:条件和查询对象存在于评论表中,对此商品发表过评论的用户不止一个,而且一个用户可以对此商品发表多个评论,因此,结果需要进行去重,这里使用DISTINCT实现。
(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。
分析:通过用户表可以完成查询,每年可能包含多个会员,如果把此表中的创建年份都列出来会有重复,因此使用DISTINCT去重。
【实验2.4】ORDERBY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。
分析:从商品表中可以查询出所有类别ID为1的商品信息,结果按照商品ID的降序排列,因此使用ORDERBY语句,降序使用DESC关键字。
(2)查询今年新增的所有会员,结果按照用户名字排序。
分析:在用户表中可以完成查询,创建日期条件设置为今年,此处使用语句ORDERBY【实验2.5】GROUPBY(1)查询每个用户的消费总金额(所有订单)。
实验名称 实验二:使用分组,排序,汇总课程名称 数据库原理与设计 成绩 学院(系)软件学院 专业 计算机软件工程 班级 学生姓名学号 实验地点 实验日期实验报告答案如下:一.实验内容:1. 完成在在Recruitment,GlobalToyz和Student数据库基础上的查询,按要求完成给出的15道题目,要求写出相应数据库的查询语句(SELECT语句)。
二.实验目的:1.掌握通配符的用法2.掌握 GROUP BY 子句的使用3.掌握 ORDER BY子句的使用4.掌握 TOP和DISTINCT关键字的使用5.掌握 COMPUTE和COMPUTE BY子句的使用6.掌握聚集函数的使用三.实验原理:本次实验主要通过根据题目要求完成对数据库的查询,加深对sql语言的印象。
主要的原理就是SQL语言基本语句及语法。
四.实验过程及编写代码:1.显示以‘S’开头,并且玩具名称不少于7个字符的玩具名称vToyName。
SELECT vToyNameFROM ToysWHERE vToyName like'S______%'2.显示名称里包含字母‘u’或‘x’的玩具ID和名称以及价格。
SELECT cToyId, vToyName, mToyRateFROM ToysWHERE vToyName like'u%'or vToyName like'x%'3.查询信用卡号(cCreditCardNo)中包含4个8的订购者(Shopper)的详细信息。
SELECT*FROM ShopperWHERE cCreditCardNo like'%8%8%8%8%'4.统计订单号为‘000001’的订单订购的玩具的数量和玩具的总花费(mToyCost)。
SELECT cOrderNo, mTotalCostFROM OrdersWHERE cCartId ='000001'5.统计每份提单订购的玩具数量和玩具花费。
SELECT cOrderNo, mToyCostFROM OrderDetail6.对于GlobalToyz数据库的Country表,统计国家名称只由六个字母构成的国家的数目。
SELECT count(cCountry)'国家数量'FROM CountryWHERE cCountry like'______'7.显示价格最高的五种玩具的名称和价格(vToyName,mToyRate)。
SELECT TOP 5 vToyName, mToyRateFROM Toys8.输出Shopper表的‘Texas’州的前10%的订购者的详细信息。
SELECT TOP 10 PERCENT*FROM ShopperWHERE cCity ='Texas'9.统计被人订购过的玩具的数量,相同的玩具只统计一次。
(OrderDetail表)SELECT count(cOrderNo)'订购数量'FROM OrderDetailGROUP BY cToyId10.toys表中,按照玩具的类别(cCategoryId)统计每类玩具的数量和平均价格(mToyrate),只输出平均价格大于20$的玩具的信息。
思考:能输出的列可以有哪些?请写出相应的查询。
SELECT count(cCategoryId)'玩具类别',count(mToyRate)'平均价格'FROM Toysgroup by cCategoryIdhaving avg(mToyRate)> 2011.对于PickofMonth表,打印出该表的详细信息,并在底部汇总出‘2000’年销售数量的总和。
SELECT*,SUM(iTotalSold)'销售数量总和'FROM PickOfMonthGROUP BY cToyId, siMonth, iYear, iTotalSoldCOMPUTE SUM(iTotalSold)12.对于OrderDetail表,请输出订单号,cWrapperId,vMessage和mToyCost,并根据cWrapperId小计玩具花销的平均值和总值,在底部总计玩具花销的平均值和总值。
SELECT cToyId, cWrapperId, vMessage, mToyCost,avg(mToyCost)'小计平均值',sum(mToyCost)'小计总值'FROM OrderDetailGROUP BY cToyId, cWrapperId, vMessage, mToyCostORDER BY cWrapperIdCOMPUTE avg(mToyCost),sum(mToyCost)13.打印出玩具花费最高的三份订单的详情。
SELECT TOP 3 *FROM Toys14.以下这段代码将会输出什么:SELECT cOrderNo,cToyId,SUM(mToyCost)FROM OrderDetailGROUP BY cOrderNo请写出正确的语句。
选择列表中的列'OrderDetail.cToyId' 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。
SELECT cOrderNo,cToyId,SUM(mToyCost)'小计总值'FROM OrderDetailGROUP BY cOrderNo, cToyId15.下面包含COMPUTE BY子句的代码都会产生错误,请写出产生错误的原因,并将其改为正确的带COMPUTE BY子句的SQL语句。
SELECT cToyId,mToyCostFROM OrderDetailCOMPUTE SUM(mToyCost) BY cToyId在排序依据列表中没有找到COMPUTE BY 子句中的某一项。
计算依据列表中的所有表达式也必须同时出现在排序依据列表中。
compute ???by 子句中???出的列必须出现在选择列表中以cToyId没有包含在聚合函数或GROUP BY 子句中。
应改成如下所示:SELECT cToyId,mToyCost,SUM(mToyCost)'小计总值'FROM OrderDetailGROUP BY cToyId,mToyCostORDER BY cToyIdCOMPUTE SUM(mToyCost)BY cToyIdSELECT cCartIdFROM OrdersORDER BY cCartIdCOMPUTE AVG(mTotalCost) BY cCartIdcompute ???by 子句中???出的列必须出现在选择列表中SELECT 之后如果用了聚集函数和某一属性列则该属性列必须用GROUP分组应改为:SELECT cCartId,AVG(mTotalCost)FROM OrdersGROUP BY cCartIdORDER BY cCartIdCOMPUTE AVG(mTotalCost)BY cCartId五、实验问题:1、第十五题的第二问从理论上说是没问题,但是还是出现如下错误提示:COMPUTE 子句#1、聚合表达式#1 不在选择列表中。
已解决:改成SELECT cCartId, mTotalCost,AVG(mTotalCost)FROM OrdersGROUP BY cCartId, mTotalCostORDER BY cCartIdCOMPUTE AVG(mTotalCost)BY cCartId六、实验总结:1.使用COMPUTE 子句的注意事项和原则1.1.在一条语句中,不能同时使用多个COMPUTE 和COMPUTE BY 子句1.2.SQL Server 中要求选择列表中的字段和COMPUTE 子句中的字段相同1.3.不能同时使用SELECT INTO 和COMPUTE,因为COMPUTE 不会生成关系型的输出结果2.使用COMPUTE BY子句的注意事项和原则2.1.应当同时使用ORDER BY 子句和COMPUTE BY 子句,这样记录就会被分组显示2.2.应在COMPUTE BY 子句后指定字段名,使SQL Server 能够决定要生成的汇总值是什么2.3.出现在COMPUTE BY 子句后的字段必须出现在ORDER BY 子句后,且顺序相同,始于同一表达式,不能略过任一表达式3.SELECT 之后如果用了聚集函数和某一属性列则该属性列必须用GROUP分组如:SELECT cToyId, SUM(mToyCost)FROM OrderDetail会提示错误:选择列表中的列'OrderDetail.cToyId' 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。
改为如下所示:SELECT cToyId, SUM(mToyCost)FROM OrderDetailGROUP BY cToyId则能成功查询指导教师日期注:请用A4纸书写,不够另附纸。
第页,共页。