北京科技大学实验报告课程:数据库技术与应用实验名称:数据库查询系别:通信工程实验日期:2015年12月9日专业班级提交日期:学号:姓名:教师审批签字:实验2 数据库和表的创建及维护一.实验目的1.了解Microsoft SQL Server 2008数据库的逻辑结构和物理结构。
2.熟练掌握在Microsoft SQL Server 2008 环境下建立数据库,修改数据库和删除数据库。
3.熟练掌握在Microsoft SQL Server 2008 环境下建立和修改数据表并向表中插入数据,操作的同时理解数据库,数据表,属性,关键字等关系数据库中的基本概念。
4.掌握在Microsoft SQL Server 2008 的“对象资源管理器”中对数据表中的数据进行更新操作。
5.了解各种约束的作用,了解Microsoft SQL Server 2008 的常用数据类型。
6.掌握使用Transact-SQL语句创建数据库和表7.掌握Transact-SQL中用于对表数据进行插入,修改和删除命令的用法。
8.熟悉使用Microsoft SQL Server 2008d的“对象资源管理器”进行分离数据库,附加数据库,备份数据库和还原数据库等操作。
二.实验步骤1.在Microsoft SQL Server 2008 的“对象资源管理器”中创建StudentMIS数据库。
SQL语句:Create database studentmisOn(name=stdentmis,filename=’c:\programfiles\microsoftsqlserver\mssql10.mssqlserver\mssql\data \studentmis.mdf’,size=100mb,maxsize=1gb,filegrowth=10%)Log on(name=studentmis_log’,filec:\programfiles\microsoftsqlserver\mssql10.mssqlserver\mssql\data\studentmis.mdf’,size=10 0mb,maxsize=50mb,filegrowth=5mb)go2.在“对象资源管理器”中删除StudentMIS数据库。
3.使用“对象资源管理器”创建和删除表student,course和sc。
Use studentmisCreate table student( stuno char(8) not null primary key,Stuname nvarchar(64) not null,Sex nvarchar(4) default ‘男’,Birthday date null.Majorno nvarchar(4) null,Address nvarchar(256) null,Entime date null)Create table course(Cno char(6) not null primary key, Cname nvarchar(64) not null, Credit int default(2),Classhour int default(32),)Create table sc(Stuno char(8) not null primary key, Cno char(6) not null primary key, Score decimal(18,2),)go4使用“对象资源管理器”和Transact-SQL语句分别为表student,course,和cs各输入10条数据。
Insert into student(stuno,stuname,sex,birthday,majorno,address,entime)Values(‘41356040’,’王强’,’男’,’1994-2-3’,’通信工程’,’北京’,’2015-2-3’)Insert into course(cno,cname,credit,classhour) vlaues(‘050119’,’c语言’,’3’,’48’)Insert into sc(stuno , cno) values (‘41356020’,’050116’)实验中遇到的问题:(1)在用“对象资源管理器”创建表,在设置主键时发现无法同时设置两个属性作为主键。
解决方法:按住键盘ctrl键,同时选中两个属性,右键设置为主键。
(2)在用“对象资源管理器”创建表,输入数据时,有时候数据输入会发生异常。
解决方法:调整输入法为英文输入,出现数据输入异常是因为在中文状态下输入。
(3)用SQL语句创建数据库,执行之后发现列表中没有出现数据库。
解决方法:如果“数据库”列表中未列出studentMIS数据库,则右击“数据库”,选择“刷新”选项。
实验3:数据库查询一.实验目的1.掌握SELECT语句的基本语法和查询条件表示方法。
2.掌握连接查询的表示。
3.掌握子查询和嵌套查询的表示。
4.掌握SELECT语句的统计函数(AVG,SUM,MAX,MIN,COUNT)的使用方法。
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。
6.掌握视图的概念和作用,掌握视图的创建,查询和修改方法。
、二.实验步骤1.实现数据库查询操作(1)查询选修了某一课程(比如“数据库技术”)的学生学好号和姓名;USE StudentMISSELECT student.STUNO,STUNAMEFROM Student,SC,CourseWHERE Student.StuNo=SC.StuNo AND o=o AND CName='数据库技术'(2)查询c语言的成绩高于小红的学生的学号和成绩;Select stuno,scorefrom scwhere cno=(select cno from course where cname=’c语言’)and Score>(Select score from sc where stuno=(select stuno from student where stuname=’小红’))(3)查询自动化专业中比通信专业中小正年龄小的学生;Select *from studentwhere majorno=自动化’’and age<(select age from student where stuname=’小正’andmajorno<>’自动化’)(4)查询没有选修大物课程的学生姓名;select stunamefrom studentwhere stuno not in (select stuno from sc where cno=(select cno from course where cname=’大物’))(5)查询所有被学生选修了的课程号;Select distinct cnofrom sc(6)查询选修大物课程的人数;Select count(stuno)from scwhere cno=(select cno from course where cname=’大物’)(7)查询某一专业女学生的姓名,出生日期以及籍贯;USE StudentMISSELECT StuName,Birthday,AddressFROM STUDENTWHERE MajorNo='S009'AND Sex='女'(8)查询所有姓李的学生的个人信息;USE StudentMISSELECT*FROM STUDENTWHERE StuName LIKE'李%'(9)查询课程名为“电路”的平均成绩,最高分和最低分;Select AVG(score),MAX(score),MIN(score)from scwhere cno=(select cno from course where cname=’电路’)(10)查询成绩为空的学生姓名;Select stunamefrom studentwhere stuno=(select stuno from sc where score=null )(11)查询所有与学生“李振宇”有相同选修课程的学生信息;Select *from studentwhere stuno exists (select * from sc where stuno=(select stuno from student where stuname=’李振宇’))(12)查询年龄介于18岁-22岁之间的学生信息;Select *from studentwhere age>18 and age<22(13)查询选修了电路课程的学生学号及其成绩,并按成绩降序排列;Select stuno, scorefrom scwhere cno=(select cno from course where cname=’电路’) order by score desc(14)查询全体学生信息,要求查询结构从专业号升序排列,同一专业学生按年龄降序排列;Select *from studentwhere order by majorno,age desc(15)查询选修了3门以上课程的学生的学号和姓名;Select stuno,stunamefrom studentwhere stuno=(select stuno from sc group by stuno having count(cno)>=3)(16)统计每个学生选修课程的门数;Select stuno,count(cno)from sc gruop by stuno(17)查询年龄大于男学生平均年龄的女学生姓名和年龄。
Select stuname,agefrom studentwhere sex=’女’ and age>(select AVG(age) from student where sex=’男’ )2.使用Transact-SQL命令定义如下视图:(1)建立某一专业(例如:通信工程专业)的学生视图;Create view txstudentAs select stuno,stuname,sex,birthday,majorno,address,entime from student(2)由学生,课程和成绩3个表,定义某一专业(如通信工程专业)的学生成绩视图,其属性包括学号,姓名,课程名,课程号和成绩;Create view sc_score(学号,姓名,课程名,课程号,成绩)As select student.stuno,stuname,cname,o,score from student,course,sc where student.stuno=sc.stuno and o=o and majorno=’自动化’(3)查看以上定义的2个视图,并删除该视图。