SQL实验报告2.docx

上传人:b****6 文档编号:7797867 上传时间:2023-01-26 格式:DOCX 页数:31 大小:252.46KB
下载 相关 举报
SQL实验报告2.docx_第1页
第1页 / 共31页
SQL实验报告2.docx_第2页
第2页 / 共31页
SQL实验报告2.docx_第3页
第3页 / 共31页
SQL实验报告2.docx_第4页
第4页 / 共31页
SQL实验报告2.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

SQL实验报告2.docx

《SQL实验报告2.docx》由会员分享,可在线阅读,更多相关《SQL实验报告2.docx(31页珍藏版)》请在冰豆网上搜索。

SQL实验报告2.docx

SQL实验报告2

SQLServer2000

姓名:

李奇轩

院系:

化工学院盐湖系

专业:

09因材施教

学号:

0922405012

实验一数据库的创建和管理

一、实验目的与要求

1)掌握用企业管理器和T-SQL语句创建数据库的方法。

2)掌握修改数据库,数据库更名的方法。

3)掌握删除数据库的方法。

二、实验过程设计及实验步骤

1.在SQLServer企业管理器中创建一个数据库,具体要求如下:

(1)数据库名称为Test1。

(2)主要数据文件:

逻辑文件名为Test1Data1,物理文件名为Test1Data1.mdf,初始容量为1MB,最大容量为10MB,递增量为1MB。

(3)次要数据文件:

逻辑文件名为Test1Data2,物理文件名为Test1Data2.ndf,初始容量为1MB,最大容量为10MB,递增量为1MB。

(4)事务日志文件:

逻辑文件名为Test1Log1,物理文件名为Test1Log1.ldf,初始容量为1MB,大容量为5MB,递增量为512KB。

2.在查询分析器中输入并执行一个CREATEDATABASE语句,具体要求如下:

(1)数据库名称为Test2;

(2)主要数据文件:

逻辑文件名为Test2Datal,物理文件名为Test2Datal.mdf,初始容量为1MB,最大容量为10MB,递增量为1MB;

(3)次要数据文件:

逻辑文件名为Test2Data2,物理文件名为Test2Data2.ndf,初始容量为1MB,最大容量为10MB,递增量为1MB;(4)事务日志文件:

逻辑文件名为Test2Logl,物理文件名为Test2Logl.Ldf,初始容量为512KB,最大容量为5MB,递增量为512KB。

createdatabaseTest2

on

primary

(name=Test2data1,

filename='d:

\Test2data1.mdf',

size=1,

maxsize=10,

filegrowth=1

filegroupff

(name=Test2data2,

filename='d:

\Test2data2.mdf',

size=1,

maxsize=10,

filegrowth=1)

logon

(name=Test2Log1,

filename='d:

\Test2data1.mdf',

size=1,

maxsize=5,

filegrowth=512kb)

3.按照下列要求在企业管理器中修改第2题中创建的Test2数据库:

(1)主要数据文件的容量为2MB,最大容量为20MB,递增量为2MB。

(2)次要数据文件的容量为2MB,最大容量为20MB,递增量为2MB。

(3)事务日志文件:

初始容量为1MB,最大容量为10MB,递增量为1MB。

alterdatabasetest2

modifyfile

name=Test2data1,

size=2,

maxsize=20,

filegrowth=2

alterdatabasetest2

modifyfile

name=Test2data2,

size=2,

maxsize=20,

filegrowth=2

alterdatabasetest2

modifyfile

name=Test2Log1,

size=1,

maxsize=10,

filegrowth=1

4.数据库更名,要求:

把TEST1数据库改名为new_TEST1。

alterdatabasetest1

modifyname=new_test1

5.收缩数据库,要求:

分别使用DBCCSHRINKDATABASE和DBCCSHRINKFILE进行收缩。

DBCCSHRINKDATABASE

(test2

target_percent

        [,{NOTRUNCATE|TRUNCATEONLY}]

    )

6.删除数据库

(1)在企业管理器中删除new_TEST1数据库。

在Enterprisemanager可以在“new_TEST1”上单击右键,然后单击删除

(2)在查询分析器中用DROPDATABASE语句删除经过第3题修改以后的Test2数据库。

dropdatabaseTest2

三、SQL调试及结果

createdatabaseTest2

on

primary

(name=Test2data1,

filename='d:

\Test2data1.mdf',

size=1,

maxsize=10,

filegrowth=1

name=Test2data2,

filename='d:

\Test2data2.mdf',

size=1,

maxsize=10,

filegrowth=1)

logon

(name=Test2Log1,

filename='d:

\Test2data1.mdf',

size=512kb,

maxsize=5,

filegrowth=512kb)

上面那样做程序报错,次要数据文件的生成应该是用filegroup编写,

createdatabaseTest2

on

primary

(name=Test2data1,

filename='d:

\Test2data1.mdf',

size=1,

maxsize=10,

filegrowth=1

filegroupff

(name=Test2data2,

filename='d:

\Test2data2.mdf',

size=1,

maxsize=10,

filegrowth=1)

数据库改名字:

alterdatabasetest1

modifyname=new_test1

删除数据库:

在Enterprisemanager可以在要删除的数据库图标上单击右键,然后单击删除

用命令删除:

dropdatabaseTest2

四、实验体会

通过这次实验我们了解了EnterpriseManager和T-SQL在很多情况下具有相同的作用,学会了在两种情况下创建数据库(createdatabase)、修改数据库(alterdatabase)以及删除数据库(dropdatabase),在数据库的基础上又可以添加删除数据文件,以及对数据库各种属性的编辑。

利用T-SQL修改数据库的语法还不是很熟悉,主要是

alterdatabase<数据库名称>

modifyfile|

modifyname=New_name

生成文件的时候以语法格式,但是在次实验中

特别注意的是,在修改指定文件的属性的时候,一次只能用该语句修改一个文件的一个属性,修改后size应该比修改前大。

alterdatabase命令可以修改数据库包括:

添加文件、重命令、删除文件等。

但是该命令DBA或是具有createdatabase权限的数据库才可以用

还了解到一个数据库包含的文件种类为:

.mdf(数据文件)、ldf(日志文件)事务日志文件一般为数据文件的一半比较适中。

像SQL这样的可视化程序,我们既可以用代码编写,又可以直接在界面上编辑。

后者明显可以节约很多的时间,但是为了程序的健全性和使用者容易查看我们多数还是用代码。

实验二数据查询

一、实验目的与要求

1)掌握使用SELECT语句查询数据。

2)掌握在企业管理器中查询数据的方法。

二、实验过程设计及实验步骤

实验表结构如下:

学生表:

Student(Sno,Sname,Ssex,Sage,Sdept),其中Sno为主键

课程表:

Course(Cno,Cname,Ccredit),其中Cno为主键

学生选课表:

SC(Sno,Cno,Grade),其中Sno,Cno的组合为主键

要求:

首先创建数据库XSGL,在该数据库中创建以上三表,在各表中输入一些记录,然后进行下面的操作,写出相应的命令序列:

1)查询全体学生的学号和姓名。

程序代码:

selectSno,SnamefromStudent

2)查询全体学生的姓名、学号、所在系。

程序代码:

selectSno,Sname,SdeptfromStudent

3)查询全体学生的详细信息。

程序代码:

select*fromStudent

4)查询全体学生的姓名及其出生年份。

程序代码:

selectSname,(2008-Sage)asyearsfromStudent

5)查询软件工程系全体学生的名单。

程序代码:

selectSnamefromStudentwhere(Sdept='软件工程')

6)查询所有年龄在20岁以下的学生姓名以及年龄。

程序代码:

selectSname,SagefromStudentwhere(Sage<20)

7)查询考试成绩不及格的学生的学号。

程序代码:

selectSno,GradefromSCwhere(Grade<60)

8)查询年龄在20-23岁(包括20,23)之间的学生的姓名、系别和年龄。

程序代码:

selectSname,Sage,SdeptfromStudent

where(Sage>=20andSage<=23)

9)查询不在信息系、数学系、也不在软件工程系学生的姓名和性别。

程序代码:

selectSname,Sno,SsexfromStudent

where(Sdept<>'信息'andSdept<>'数学'andSdept<>'软件工程')

10)查询所有姓刘的学生的姓名、学号和性别。

程序代码:

selectSname,Sno,SsexfromStudentwhere(Snamelike'刘%')

11)查询姓“欧阳”且全名为三个汉字的学生的姓名。

程序代码:

selectSnamefromStudentwhere(Snamelike'欧阳_')

12)查询姓名中第2个字为“阳”字的学生的姓名和学号。

程序代码:

selectSnamefromStudentwhere(Snamelike'_阳%')

13)查询所有不姓刘的学生的姓名、学号。

程序代码:

selectSname,Sno,SsexfromStudentwhere(Snamenotlike'刘%')

14)查询缺少成绩的学生的学号和相应的课程号。

程序代码:

selectSno,CnofromSCwhere(Gradeisnull)

15)查询软件工程系年龄在20岁以下的学生姓名。

程序代码:

selectSname,SagefromStudent

where(Sdept='软件工程'andSage<20)

16)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。

程序代码:

selectSno,GradefromSCwhere(Cno='C3')orderbyGradedesc

17)查询全体学生情况,结果按所在系的升序排列,同一系的按年龄降序排列。

程序代码:

select*fromStudentorderbySdeptasc,Sagedesc

18)统计学生总人数。

程序代码:

selectcount(Sname)asStuAllfromStudent

19)查询选修了课程的学生人数。

程序代码:

selectcount(distinctSno)fromSCwhere(Gradeisnotnull)

20)计算选修了1号课程的学生平均成绩。

程序代码selectavg(Grade)asCavgfromSCwhere(Cno='C1')

21)查询选修了1号课程的学生最高分数。

程序代码:

selectmax(Grade)ashighestfromSCwhere(Cno='C1')

22)求各课程号及相应的选课人数。

程序代码:

selectCno,count(*)fromSCgroupbyCno

23)查询选修3门以上课程的学生学号。

程序代码:

selectCnofromSCgroupbyCnohaving(count(*)>3)

24)查询每个学生及其选修课程的情况。

程序代码:

selectSname,Sdept,SC.Sno,SC.Cno,CnamefromStudent,SC,CoursewhereStudent.Sno=SC.SnoandSC.Cno=Course.Cno

25)查询选修2号课程且成绩在90分以上的所有学生。

程序代码:

selectSnofromSCwhere(Cno='C2'andGrade>=90)

26)查询每个学生的学号,姓名,选修的课程名和成绩。

程序代码:

selectSname,Student.Sno,Cno,GradefromStudent,SCwhereStudent.Sno=SC.Sno

27)查询所有选修了1号课程的学生姓名。

程序代码:

方法一:

selectSnamefromStudentwhere(Sno=any(selectSnofromSCwhereCno='C1'))

方法二:

selectSname,SC.Sno,CnofromStudent,SCwhereStudent.Sno=SC.SnoandCno='C1'

28)查询选修了课程名为“数据库”的学生的学号和姓名。

程序代码:

selectSname,SC.Sno,Cnamefromstudent,SC,Course

whereStudent.Sno=SC.SnoandCourse.Cno=SC.CnoandCname='数据库'

 

三、SQL调试及结果

1)程序代码:

selectSno,SnamefromStudent

运行结果:

如图4-1

图4-1

2)程序代码:

selectSno,Sname,SdeptfromStudent

运行结果:

如图4-2

图4-2

3)程序代码:

select*fromStudent

运行结果:

如图4-3

图4-3

4)程序代码:

selectSname,(2008-Sage)asyearsfromStudent

运行结果:

如图4-4

图4-4

5)程序代码:

selectSnamefromStudentwhere(Sdept='软件工程')

运行结果:

如图4-5

图4-5

6)程序代码:

selectSname,SagefromStudentwhere(Sage<20)

运行结果:

如图4-6

图4-6

7)程序代码:

selectSno,GradefromSCwhere(Grade<60)

运行结果:

如图4-7

图4-7

8)程序代码:

selectSname,Sage,SdeptfromStudent

where(Sage>=20andSage<=23)

运行结果:

如图4-8

图4-8

9)程序代码:

selectSname,Sno,SsexfromStudent

where(Sdept<>'信息'andSdept<>'数学'andSdept<>'软件工程')

运行结果:

如图4-9

图4-9

10)程序代码:

selectSname,Sno,SsexfromStudentwhere(Snamelike'刘%')

运行结果:

如图4-10

图4-10

11)程序代码:

selectSnamefromStudentwhere(Snamelike'欧阳_')

运行结果:

如图4-11

图4-11

12)程序代码:

selectSnamefromStudentwhere(Snamelike'_阳%')

运行结果:

如图4-12

图4-12

13)程序代码:

selectSname,Sno,SsexfromStudentwhere(Snamenotlike'刘%')

运行结果:

如图4-13

图4-13

14)程序代码:

selectSno,CnofromSCwhere(Gradeisnull)

运行结果:

如图4-14

图4-14

15)程序代码:

selectSname,SagefromStudent

where(Sdept='软件工程'andSage<20)

运行结果:

如图4-15

图4-15

16)程序代码:

selectSno,GradefromSC

where(Cno='C3')orderbyGradedesc

selectSno,GradefromSCwhere(Cno='C3')

orderbyGradedesc

运行结果:

如图4-16

图4-16

17)程序代码:

select*fromStudentorderbySdeptasc,Sagedesc

运行结果:

如图4-17

图4-17

18)程序代码:

selectcount(Sname)asStuAllfromStudent

运行结果:

如图4-18

图4-18

19)程序代码:

selectcount(distinctSno)fromSCwhere(Gradeisnotnull)

运行结果:

如图4-19

图4-19

20)程序代码:

selectavg(Grade)asCavgfromSCwhere(Cno='C1')

运行结果:

如图4-20

图4-20

21)程序代码:

selectmax(Grade)ashighestfromSCwhere(Cno='C1')

运行结果:

如图4-21

图4-21

22)程序代码:

selectCno,count(*)fromSCgroupbyCno

运行结果:

如图4-22

图4-22

23)程序代码:

selectCnofromSCgroupbyCnohaving(count(*)>3)

运行结果:

如图4-23

如图4-23

24)程序代码:

selectSname,Sdept,SC.Sno,SC.Cno,CnamefromStudent,SC,CoursewhereStudent.Sno=SC.SnoandSC.Cno=Course.Cno

运行结果:

如图4-24

图4-24

25)程序代码:

selectSnofromSCwhere(Cno='C2'andGrade>=90)

运行结果:

如图4-25

图4-25

26)程序代码:

selectSname,Student.Sno,Cno,GradefromStudent,SC

whereStudent.Sno=SC.Sno

运行结果:

如图4-26

图4-26

27)方法一

程序代码:

selectSnamefromStudent

where(Sno=any(selectSnofromSCwhereCno='C1'))

运行结果:

如图4-27

图4-27

方法二

程序代码:

selectSname,SC.Sno,CnofromStudent,SC

whereStudent.Sno=SC.SnoandCno='C1'

运行结果:

如图4-28

图4-28

28)程序代码:

selectSname,SC.Sno,Cnamefromstudent,SC,Course

whereStudent.Sno=SC.SnoandCourse.Cno=SC.Cno

andCname='数据库'

运行结果:

如图4-29

图4-29

四、实验体会

1)通过这次的上机实习,我学会了运用select语句来查询数据的各种命令以及语法。

2)Select*from<数据源>

3)Where<逐行条件>

4)Groupby<按照列分组>

5)Having<分组以条件过滤>

6)Orderby<排序DESC为降序排列,ASC为升序排列>

7)Distinct可以消去重复行

8)Count(*)可以用来统计元组个数

9)……

10)上述的都是在实际查询过程中经常需要用到的命令

11)此外,查询多个表中的数据一起来组合,我们通常会用到连接。

表之间满足一定条件的行进行里连接,where后面跟着连接的条件。

也可以运用关键字Join进行连接,当将Join关键字放于from子句中时,应有关键词on与之相对应,以表明连接的条件。

实验三视图的创建和使用

一、实验目的与要求

1)理解视图的概念

2)掌握利用企业管理器和CREATEVIEW命令创建视图方法。

3)熟悉修改视图、查看视图和删除视图的方法。

4)掌握通过视图修改数据表的方法

二、实验过程设计及实验步骤

创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语句创建、管理视图。

1)在企业管理器中创建如下视图:

在sales数据库中使用表Categories和Products创建视图view_cate_prod,来查询每种类型的产品的总库存。

2)在查询分析器中创建视图:

将上题用createview来创建,视图名为view2

程序代码:

USESales

GO

CREATEVIEWview2

AS

SELECTProductName,Products.CategoryID,Description,Quantity

FROMProductsJOINCategories

ONProducts.CategoryID=Categories.CategoryID

3)修改视图,并加密:

将视图view2加密。

程序代码:

ALTERVIEWview2

WITHENCRYPTION

AS

SELECTProductName,Products.CategoryID,Description,Quantity

FROMProductsJOINCategories

ONProducts.CategoryID=Categories.CategoryID

4)查看视图信息:

使用系统存储过程sp_help、sp_helptext、sp_depends

5)通过视图修改数据:

修改产品编号为P02006的产品的名称(ProductName)及产品种类描述(Descript

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1