数据库实验二-简单查询和连接查询
- 格式:doc
- 大小:530.00 KB
- 文档页数:7
《数据库原理及应用》实验报告实验名称数据库查询实验室502 实验日期求选修了课程的学生学号。
Use 学生课程GoSelect 学号from 学生where 学号in (select 学号from where 课程号 is not null)求选修1102课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
Use 学生课程GoSelect 学号,成绩 from 课程,选课 where 课程.课程号and 课程号=1102 order by 成绩 desc,学号 asc求选修课程1102且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8输出。
Use 学生课程GoSelect 学号,成绩*0.8 as 成绩 from选课 where 成绩 between 80 and求数学系或计算机系姓张的学生的信息。
Use 学生课程GoSelect * from 学生,课程,选课 where 学生.学号=选课.学号 and 课程号=课程.课程号and 姓名like ’张%’and (所在系=’数学’在系=’计算机’)求缺少了成绩的学生的学号和课程号。
Use 学生课程GoSelect 学号,课程号 from 选课 where 成绩 is null连接查询实验语句在“学生选课”数据库中实现下列数据连接查询操作。
查询每个学生的情况以及他(她)所选修的课程。
Use 学生课程GoSelect * from 学生,选课,课程 where 学生.学号=选课.学号课程号=课程.课程号求学生的学号、姓名、选修的课程名及成绩。
Use 学生课程GoSelect 学号,姓名,课程名,成绩 from 学生,选课,课程 where学生求选修1105课程且成绩为90分以上的学生学号、姓名及成绩。
Use 学生课程GoSelect 学号,姓名,成绩 from 学生,选课 where 学生.学号=选课and 课程号=1105 and 成绩>90查询每门课的选课人数。
实验三、简单查询和连接查询实验简单查询和连接查询实验是数据库的基本查询操作,简单查询是只涉及到一个表(基本表或视图)的查询,连接查询是涉及两个表以上的数据连接查询。
1.实验内容和实验要求1.1实验目的了解SQL Server查询分析器的使用方法,加深对SQL 和Transaction-SQL语言的查询语句的理解;掌握表的数据简单查询、数据排序和数据连接查询的SQL表达和查询分析操作方法。
1.2实验内容(1)简单查询实验用SQL表达简单查询操作,包括投影、选择条件表达、数据排序和使用临时表等,通过SQL Server 查询分析器输入,并显示正确结果。
(2)连接查询实验用SQL表达连接查询操作,包括等值连接、自然连接、一般连接等,通过SQL Server 查询分析器输入,并显示正确结果。
1.3实验要求(1)简单查询实验在学生-课程库中,用Transaction-SQL语句表示下列操作,并通过查询分析器实现其查询操作:①求数学系学生的学号和姓名;select 学号,姓名from 学生where 所在系='数学系'S7 吴非S8 丁玉S9 赵名②求选修了课程的学生学号;select distinct 学号from 选课S1③求选修了C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同,则按学号的升序排列;select 学号,成绩from 选课where 课程号='C1'order by 成绩desc,学号asc;S2 93S4 89S1 60S3 NULL④求选修了课程C1且成绩在80-90分之间的学生学号和成绩,将成绩乘以系数0.8输出;select 学号,成绩*0.8from 选课where 课程号='C1' and 成绩between 80 and 90;S4 71.2⑤求数学系或计算机系姓张的学生的信息;select *from 学生where 所在系in('数学系','计算机系') and 姓名like '张%';S2 张小红21 男计算机系S4 张三21 男计算机系⑥求缺少了成绩的学生的学号和课程号。
实验三数据库查询实验(1)数据库的简单查询和连接查询实验课时安排:2课时一、实验目的和要求使学生掌握SQL Server查询分析器的使用方法.加深对SQL和Transact-SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据联结查询的操作方法。
二、实验内容1 简单查询操作该实验包括投影、选择条件表达、数据排序、使用临时表等。
2 连接查询操作该实验包括等值连接、自然连接、求笛卡尔积、一般连接、外连接、内连接、左连接、右连接和自连接等。
三、实验方法1 将查询需求用Transact-SQL语言表示。
2 在SQL Server查询分析器的输入区中Transact-SQL查询语句。
3 设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。
4 发布执行命令,查看查询结果.如果结果不正确,进行修改.直到正确为止。
5 查询分析器及使用方法。
查询分析器是在开发数据库应用系统时使用最多的工具。
查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储).查询分析功能主要通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。
在查询生成器中的左边窗口是对象测览器,其中按树结构列出了数据库对象;右上方是SQL代码区域.用于输入SQL的查询语句;右下方为结果区,用于显示查询结果和分析结果、对于T-SQL语句的执行结果,在结果区中可以有4种不同的输出形式:标准执行将结果直接显示在结果区网格执行将结果以表格形式显示在结果区.计划执行显示执行计划;索引分析为在结果区中显示查询的索引情况。
上述输出形式,可以通过菜单或按钮选择。
四、实验步骤1 基本操作实验(1)简单查询实验l)用Transact-SQL语句表示下列操作.在学生选课库中实现其数据查询操作.①求数学系学生的学号和姓名。
课程名称数据库原理实验序号 2实验项目数据查询实验地点实验学时实验类型验证性指导教师实验员专业班级学号姓名年月日成绩:A教师该学生本次实验的内容丰富,完成的操作步骤详细具体,实验结果正确,在实验报告的填写中态度十分严谨,对数据分析有自己的见解。
四、实验过程(实验步骤、记录、数据、分析)实验准备:在实验一的基础上(包括数据库的建立、定义表和添加表内容)进行实验,下面分别为depts表、students表、courses表、reports表。
一、简单的选择与投影查询1、无条件查询1.1查询全体学生的详细记录。
这是一个无条件的选择查询,其命令为:其命令为:select * from students运行结果如右图,显示整张表的内容。
1.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(dno)。
这是一个无条件的投影查询,其命令为:select sname,ssexfrom students运行结果如右图,显示了表中的三列。
1.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
其命令为:select sno,sname,2017-sage as birth from students运行结果如右图,显示了三列内容。
1.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
其命令为:select sname,'birth:' title,YEAR(GETDATE())-sagebirthyear,LOWER(sno) lsnofrom students运行结果如右图,显示了四列内容。
1.5查询选修了课程的学生学号。
其命令为:select distinct snofrom reports运行结果如右图,distinct短语是为了消去查询结果中的重复值。
2、条件查询(1)比较条件1.1查询d03系全体学生的学号(Sno)和姓名(Sname)。
其命令为:select sno,snamefrom studentswhere dno='d03'运行结果如右图,显示了d03系的全体学生姓名与学号。
实验2 数据库的简单查询和连接查询实验1.实验目的加深对SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
2.实验内容1.简单查询操作。
该实验包括投影、选择条件表达,数据排序,使用临时表等。
具体完成以下题目,将它们转换为SQL语句表示,在学生选课数据库中实现其数据查询操作。
1.查询全体学生的学号和姓名2.查询全体学生的详细记录3.查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名。
4.查询选修了课程的学生学号,去掉结果中的重复行。
5.查询所有年龄在20~23岁之间的学生姓名、系别和年龄。
6.查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别。
7.查询所有姓刘的学生的姓名、学号和性别。
8.查询DB_Design课程的课程号和学分。
9.查询计算机科学系年龄在20岁以下的学生姓名。
10.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
11.计算1号课程的学生最高分数。
12.查询选修了2门以上课程的学生学号。
13.查询缺少了成绩的学生的学号和课程号。
2.连接查询操作。
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
14.查询每个学生的情况以及他所选修的课程15.求学生的学号、姓名、选修的课程及成绩16.求选修课程号为2且成绩在90以上的学生学号、姓名和成绩17.查询每一门课程的间接先行课(即先行课的先行课)。
实验训练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】ORDER BY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。
分析:从商品表中可以查询出所有类别ID为1的商品信息,结果按照商品ID的降序排列,因此使用ORDER BY语句,降序使用DESC关键字。
(2)查询今年新增的所有会员,结果按照用户名字排序。
分析:在用户表中可以完成查询,创建日期条件设置为今年,此处使用语句ORDER BY。
【实验2.5】GROUP BY(1)查询每个用户的消费总金额(所有订单)。
分析:订单表中包含每个订单的订单总价和用户ID。
现在需要将每个用户的所有订单提取出来分为一类,通过SUM()函数取得总金额。
结构化查询语言答案试验二结构化查询语句一、简单查询1.查询XS表中各个同学的所有信息。
Select * from xs2.查询XS表中各个同学的姓名、专业名和总学分。
select xm,zym,zxf from xs;3.查询XS表中所有同学的学号、姓名和总学分,结果中各列的标题分别指定为“学号”、“姓名”和“总学分”。
Select xh as 学号, xm as 姓名,zxf as 总学分 from xs;4.查询XS表中的学生数据来自哪些专业(使用DISTINCT子句消除结果集中的重复行)。
Select distinct zym from xs;5.查询XS表中每个学生的学号、姓名和年龄信息。
Select xh,xm,to_number(to_char(sysdate,'yyyy'))-to_number(to_char(cssj,'yyyy')) as nl from xs;6.查询XS表中专业为“计算机”的同学的情况。
Select * from xs where zym='计算机';7.查询XS表中1980年出生的学生姓名和专业情况。
Select xm,zym from xs where to_number(to_char(cssj,'yyyy'))=1980;8.查询XS表中专业名为“计算机”或“电子”或“应用数学”的学生的情况。
Select * from xsWhere zym in ( '计算机','电子','应用数学');9.查询XS表中姓“张”且单名的学生的情况。
Select * from xsWhere xm like '张_';10.查询XS表中总学分尚未确定的学生情况。
Select * from xsWhere zxf is null11.查询XS表中专业为“计算机”且总学分尚未确定的学生情况。
数据库的简单查询和连接查询实验总结下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!数据库的简单查询和连接查询实验总结数据库的查询是使用SQL语言进行数据检索和操作的基础技能。
实验二:简单查询和连接查询一、实验目的:熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。
二、实验内容:(一)完成下面的简单查询:①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
(二)完成下面的连接查询:①等值连接:求s表和j表的相同城市的等值连接。
②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
③笛卡尔积:求s和p表的笛卡尔积④左连接:求j表和spj表的左连接。
⑤右连接:求spj表和j表的右连接。
三、完成情况:(一)完成下面的简单查询:①查询所有“天津”的供应商明细;select*from swhere city='天津'②查询所有“红色”的14公斤以上的零件select*from pwhere color='红'andweight>'14'③查询工程名称中含有“厂”字的工程明细select*from jwhere jname like'%厂'(二)完成下面的连接查询:①等值连接:求s表和j表的相同城市的等值连接。
select s.*,j.*from s,jwhere s.city=j.city②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
select sname,jname,pnamefrom s,p,j,spjwhere spj.sno=s.sno andspj.pno=p.pno andspj.jno=j.jno③笛卡尔积:求s和p表的笛卡尔积select*from s,p④左连接:求j表和spj表的左连接select j.jno,jname,city,spj.sno,pno,QTYfrom j left join spj on(j.jno=spj.jno)⑤右连接:求spj表和j表的右连接select j.jno,jname,city,spj.sno,pno,QTYfrom spj right join j on(j.jno=spj.jno)四、实验结果:(一)①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件③查询工程名称中含有“厂”字的工程明细(二)①等值连接:求s表和j表的相同城市的等值连接②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
贵州大学实验报告学院:计算机科学与信息学院专业:信息安全班级:②求选修了课程的学生学号。
select Number from Student where exists (select * from Selection where Student.Number=Selection。
Snumber)或select distinct Snumber from Selection(更加高效)③求选修C1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select Snumber,Score from Selection,Course where Cnumber=Number and Name='C1' orderby Snumber asc④求选修课程C1且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0。
8输出。
select Snumber,Score*0。
8 Score from Selection,Course where Cnumber=Number and Name='C1’ and Score〉80 and Score〈90⑤求数学系或计算机系姓张的学生的信息。
select * from Student where Name like '张%’ and (Academy=’数学系' or Academy='计算机系')⑥求缺少了成绩的学生的学号和课程号。
select Snumber,Cnumber from Selection where Score is null2)在图书读者库中实现其查询操作:将计算机类的书存入永久的计算机图书表中,将借书日期在2000年以前的借阅记录存入临时的超期借阅表.insert into CB(Number,Name,Category,Press,Author,Price)select Number,Name,Category,Press,Author,Price from Book where Category=’计算机'CREATE TABLE #TB(Bnumber char(20),Rnumber char(20),Bdate date,ID char(10) primary key)goinsert into #TB(Bnumber,Rnumber,Bdate,ID) select Bnumber,Rnumber,Bdate,ID from Borrow whereBdate〈’2000/01/01'(2)连接查询实验用SQL语句表示,并在学生选课库中实现下列数据连接查询操作:①查询每个学生的情况以及他所选修的课程。
课程名称数据库原理实验序号 2实验项目数据查询实验地点实验学时实验类型验证性指导教师实验员专业班级学号姓名年月日成绩:A教师该学生本次实验的内容丰富,完成的操作步骤详细具体,实验结果正确,在实验报告的填写中态度十分严谨,对数据分析有自己的见解。
四、实验过程(实验步骤、记录、数据、分析)实验准备:在实验一的基础上(包括数据库的建立、定义表和添加表内容)进行实验,下面分别为depts表、students表、courses表、reports表。
一、简单的选择与投影查询1、无条件查询1.1查询全体学生的详细记录。
这是一个无条件的选择查询,其命令为:其命令为:select * from students运行结果如右图,显示整张表的内容。
1.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(dno)。
这是一个无条件的投影查询,其命令为:select sname,ssexfrom students运行结果如右图,显示了表中的三列。
1.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
其命令为:select sno,sname,2017-sage as birth from students运行结果如右图,显示了三列内容。
1.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
其命令为:select sname,'birth:' title,YEAR(GETDATE())-sagebirthyear,LOWER(sno) lsnofrom students运行结果如右图,显示了四列内容。
1.5查询选修了课程的学生学号。
其命令为:select distinct snofrom reports运行结果如右图,distinct短语是为了消去查询结果中的重复值。
2、条件查询(1)比较条件1.1查询d03系全体学生的学号(Sno)和姓名(Sname)。
其命令为:select sno,snamefrom studentswhere dno='d03'运行结果如右图,显示了d03系的全体学生姓名与学号。
实验二:数据库的简单查询和连接查询实验二:数据库的简单查询和连接查询实验目的:掌握简单表的数据查询、数据排序和数据联结查询的操作方法。
实验内容:简单查询操作和连接查询操作。
实验步骤:一. 单表查询:1. 查询全体学生的学号和姓名:select sno, sname from student2. 查询全体学生的所有信息:select * from student或者 select sno, sname, ssex,sage, sdept from student3. 查询全体学生的姓名, 出生年份,和所在系, 并用小写字母表示所有系名:VFP中: select sname, '出生年份为: ', year(date() - sage, lower(sdept) from studentSQLServer中: select sname, '出生年份为: ', year(getdate()) - sage, lower(sdept) from student4. 给上例的结果集指定列名:VFP中: select sname, ' ‘出生年份为: ' 出生, year(date() - sage 年份, lower(sdept) 系名 from studentSQLServer中: select sname, '出生年份为: ' 出生, year(getdate())- sage 年份, lower(sdept) 系名from student5. 查询选修了课程的学生的学号:select distinct sno from sc比较: select sno from sc6. 查询年龄在20岁以下的学生的姓名及其年龄:select sname, sage from student where sage<207. 查询考试成绩有不及格的学生的学号:select distinct sno from sc where grade<60比较: select sno from sc where grade<608. 查询年龄在20-30岁直接的学生的姓名, 姓名, 所在系:select sname, ssex, sdept from student where sage between 20 and 309. 查询 IS,CS,MA系的所有学生的姓名和性别:select sname, ssex from student where sdept in ('IS', 'MA','CS')10. 查找所有姓’李’的学生的姓名, 学号和性别:select sname, sno, ssex from student where sname like '李%' 比较: 将学生表中的’95001’号学生的姓名’李勇’改为’李勇勇’, 再执行:select sname, sno, ssex from student where sname like '李_'11. 查询没有先行课的课程的课程号cno和课程名cname:select cno, cname from course where pcno is null二. 查询结果排序12. 查询选修了3号课程的学生的学号和成绩, 并按分数降序排列:select sno, grade from sc where cno='3' order by grade DESC23. 查询全体学生的情况,查询结果按所在系号升序排列, 同一系中的学生按年龄降序排列:select * from student order by sdept ASC, sage DESC三. 连接查询:14. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno15. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/ac16672179.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/ac16672179.html,o 比较:select /doc/ac16672179.html,o, Second.pcno 间接先行课 from course First, course Second where First.pcno=/doc/ac16672179.html,o and Second.pcno is not null16. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.snoVFP中: select s.sno, sname, ssex,sdept, cno, grade from student s left join sc sc on s.sno=sc.sno17. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/ac16672179.html,o=http://www.doc /doc/ac16672179.html,o思考:如何求出不及格学生的学号, 姓名, 不及格的课程名以及成绩。
实验二查询数据库一、实验目的熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询二、实验内容和要求使用SQL查询分析器查询数据,练习查询语句的使用,掌握SELECT 语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法。
三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/xp;2.数据库管理系统:SQL sever 2000/2005;四、实验方法、步骤及结果测试对实验一建立的数据库表进行查询。
实验题目:题目1、查询学生的系别,用小写字母表示。
题目2、查询所有刘姓学生的学号、系别。
实现代码及查询结果截图:select Sno,Sdept from S where Sname like'刘%';题目3、查询教师姓名第二个字是“一”的教师姓名,所教课程名。
实现代码及查询结果截图:select Tname,Cname from C where Tname like'_一_';题目4、查询没有成绩的学生学号,学号降序排列。
实现代码及查询结果截图:select Sno from Sc where Grade is null order by Sno desc;题目5、各科选修课考试成绩及格的人数。
实现代码及查询结果截图:select Count(Sno)from Sc where Grade>60 group by Cno题目6、各学院男生人数,超过2人的输出学院名和人数,并按男生人数降序排列实现代码及查询结果截图:select Sdept,Count(Sno)from S where Ssex='男'group by Sdept having Count(Sno)>2 order by Count(Sno)desc;题目7、查询IS系男女学生人数各是多少实现代码及查询结果截图:select S.Ssex As'性别',count(*) As'IS系人数' from S where S.Sdept='IS'group by Ssex;题目8、找出年龄>23岁,平均成绩不及格的学生学号和平均分实现代码及查询结果截图:select Sno,avg(Grade)from Sc where Sno in(select Sno from S where year(getdate()-Sbirth)>23)group by Sno having avg(Grade)<60题目9、显示所有学生信息,如果该生选修过课程,显示其选修课号和考试成绩实现代码及查询结果截图:select S.*,o,Sc.Grade from S left join Sc on(SC.Sno=S.Sno)题目10、查询每门课都是80分以上的学生的学号与姓名。
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个表的表级约束:每个表的PrimaryKey2(主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码)约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check (检查)约束。
2.提高操作实验建立学生_课程库操作,在查询分析器中用SQL命令实现。
数据库原理及应用实验指导书陕西理工学院数计学院1.实验目的与要求数据库原理及应用是计算机科学与技术专业和信息管理与信息系统专业的课程之一,是一门理论与实践相结合的课程,上机实验环节是本课程的重要组成部分。
(1)实验的目的是为了配合课堂教学,进一步强化、加深对数据库原理理论知识的理解。
实验的任务是要结合数据库原理和SQL Server 2000或SQL Server 2005数据库管理系统,熟练掌握和深入理解课堂教学内容,实现从理论到实践的统一,以提高动手能力以及分析问题和解决问题的能力。
(2)实验教学的要求:学生每次实验前必须根据实验指导书,设计出实验方案(代码和实验步骤);在实验过程中要求独立进行程序调试和排错,必须学会使用在线帮助解决实验中遇到的问题,必须应用理论知识分析问题、解决问题。
上机结束后写出实验报告,对实验过程进行分析和总结。
2.实验方式与基本要求(1)第一次实验前,任课教师需要向学生讲清实验的整体要求及实验的目标任务;讲清实验安排和进度、平时考核内容、期末考试办法、实验守则及实验室安全制度;讲清上机操作的基本方法。
(2)《数据库原理及应用》课程是以理论课为主、实验为辅的课程。
每次实验前:教师需要向学生讲清实验目的和基本要求,讲清实验对应的理论内容;学生应当先弄清相关的理论知识,再预习实验内容、方法和步骤,避免出现盲目上机的行为。
(3)实验1人1组,在规定的时间内,由学生独立完成,出现问题时,教师要引导学生独立分析、解决,不得包办代替。
(4)该课程实验是一个整体,需要有延续性。
机房应有安全措施,避免前面的实验数据、程序和环境被清除、改动或盗用的事件发生。
(5)任课教师要认真上好每一堂课,实验前清点学生人数,实验中按要求做好学生实验情况及结果记录,实验后认真填写实验记录。
(6)学生最好能自备计算机,课下能通过Email进行联系,以便能够熟悉和精通实验方法。
如果能结合实际课题进行训练,会达到更好的效果。
实验二MySQL数据库操作实验实验目的:基于实验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】ORDER BY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。
分析:从商品表中可以查询出所有类别ID为1的商品信息,结果按照商品ID的降序排列,因此使用ORDER BY语句,降序使用DESC关键字。
(2)查询今年新增的所有会员,结果按照用户名字排序。
分析:在用户表中可以完成查询,创建日期条件设置为今年,此处使用语句ORDER BY。
【实验2.5】GROUP BY(1)查询每个用户的消费总金额(所有订单)。
分析:订单表中包含每个订单的订单总价和用户ID。
现在需要将每个用户的所有订单提取出来分为一类,通过SUM()函数取得总金额。
实验二:简单查询和连接查询一、实验目的:熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。
二、预习要求:实验前复习讲授过的有关简单查询与多表查询的知识,编写相应的SQL语句。
三、实验内容:(一)完成下面的简单查询:①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
(二)完成下面的连接查询:①等值连接:求s表和j表的相同城市的等值连接。
②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
③笛卡尔积:求s和p表的笛卡尔积④左连接:求j表和spj表的左连接。
⑤右连接:求spj表和j表的右连接。
四,完成情况select *from spj inner join s on s.sno=spj.snowhere s.city='天津'select*from pwhere color='红' and weight>14select *from jwhere jname like '%厂'Select *from s inner join s city=j cityselect sname,jname,pnamefrom spj inner join s on spj.sno=s.sno join p on spj.pno=p.pnojoin j on j.jno=spj.jnoorder by s.sno,j.jno,p.pnoselect *from s,pselect *from jleft join spj on spj.jno=j.jnoselect *from spj right join j on spj.jno=j.jno五,思考题:查看实验内容2中左连接和右连接的执行结果是否一致,为什么?答:不一致,因为左连接是把左边的表全部输出来。
实验题目二、数据的查询及更新一、实验目的熟悉SQL语句的使用方法,学习使用SQL语句来实现数据查询。
掌握基本的SELECT 查询及其相关子句的使用;掌握复杂的SELECT查询,如多表查询、子查询、连接查询和嵌套查询等。
二、实验内容和要求学习使用SQL查询分析器查询数据,练习查询语句的使用:1.掌握SELECT 语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法;2.掌握存储查询结果的方法;体会各种查询的异同及相互之间的转换;3.分析各种查询的执行过程,为综合应用打下良好的基础。
三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/XP或更高版本;2.数据库管理系统:SQL Server 2005或更高版本;四、实验方法、步骤及结果测试在实验一的基础上,完成以下实验内容。
1.删除以下各表中已有数据,将下列数据插入到相应的基本表中。
2. 简单查询使用SQL语言完成以下查询。
(4)查询“计算机科学与技术”专业并且班级编码为‘macr1601’的学生的学号、姓名学习在SQL Server 中安装“Northwind”数据库,并完相应查询操作。
(1)安装“Northwind”数据库。
A.运行安装文件(如SQL2000SampleDb.msi)。
B.右击数据库,点击“附加”,添加对应的数据库文件(.mdf)。
C.执行操作。
(2)对NothWind. Products表进行简单查询。
ProductName;五、思考题请举例说明:对于带“EXISTS”谓词的、内外层相关的多层嵌套查询,如何构造此类查询的SQL语句?。
实验二:简单查询和连接查询
(一)实验目的:熟练掌握用SQL语句实现数据库和基本表的创建、数据
的更新。
(二)实验内容:
①查询所有“天津”的供应商明细;
②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
(一)完成下面的连接查询:
①等值连接:求s表和j表的相同城市的等值连接。
②自然连接:查询所有的供应明细,要求显示供应商、零件和工程
的名称,并按照供应、工程、零件排序。
③笛卡尔积:求s和p表的笛卡尔积
④左连接:求j表和spj表的左连接。
⑤右连接:求spj表和j表的右连接。
(三)完成情况(附上设计的SQL语句),语句与查询结果:
①查询所有“天津”的供应商明细;
Select *
From S
Where CITY=‘天津’
②查询所有“红色”的14公斤以上的零件。
Select *
From P
Where COLOR=‘红’and WEIGHT>14
③查询工程名称中含有“厂”字的工程明细。
Select *
From J
Where JNAME NOT IN(‘三建’,‘一汽’)
(二)完成下面的连接查询:
①等值连接:求s表和j表的相同城市的等值连接。
Select S.*,J.*
From S,J
Where
S.CITY=J.CITY
②自然连接:查询所有的供应明细,要求显示供应商、零件和工程
的名称,并按照供应、工程、零件排序。
Select SNAME,JNAME,PNAME
From S,J,P,SPJ
Where SPJ.SNO=S.SNO and SPJ.JNO=J.JNO and SPJ.PNO=P.PNO
③笛卡尔积:求s和p表的笛卡尔积Select *
From
s,p
④左连接:求j表和spj表的左连接。
Select SPJ.JNO,JNAME,PNO,QTY,CITY FROM J LEFT JOIN SPJ ON(J.JNO=SPJ.JNO)
⑤右连接:求spj表和j表的右连接。
Select SPJ.JNO,JNAME,PNO,QTY,CITY
FROM SPJ RIGHT JOIN J ON(J.JNO=SPJ.JNO)
(四)问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。
然后分析错误原因,并给出解决办法。
1、左连接时,输入如下的sql语句,
Select SPJ.JNO,JNAME,PNO,QTY,CITY
FROM J LEFT JOIN SPJ ON(J.JNO=SPJ.JNO)
提示的错误为:在关键字 'left' 附近有语法错误。
解决办法:去掉“left”。
2、在做自然连接时,查询出来的结果有一百多行。
解决办法:仔细检查之后发现,少了一个连接Select SPJ.PNO=P.PNO (五)回答思考题提出的问题,
答:左连接和右连接的执行结果是一致的,因为J表左连接SPJ也即是SPJ 表右链接到J表。
(六)实验总结:心得体会,建议等。
通过本次实验,我发现自己对课本上的知识还没理解透彻,前面的知识也忘了不少了,如当问到笛卡尔积时,就感觉有点陌生了,不知道从哪着手。