SQL 实验项目2_1:单表查询

大三上:数据库系统概论所有实验报告和课后作业

文章目录

  • 一、实验目的及要求
  • 二、实验内容(或实验原理、实验拓扑)
  • 三、实验设备与环境
  • 四、实验设计方案(包括实验步骤、设计思想、算法描述或开发流程等)
  • 五、实验结果(包括设计效果、测试数据、运行结果等)
  • 六、实验小结(包括收获、心得体会、注意事项、存在问题及解决办法、建议等)
  • 七、附录(包括作品、流程图、源程序及命令清单等)

一、实验目的及要求

  1. 熟练使用DBMS提供的查询编辑器功能组件来实现对数据库进行单表查询和分组统计查询等操作;
  2. 掌握用SQL语句实现对数据库的单表查询;
  3. 理解关系的投影、选择、集合、改名和分组统计等操作。

二、实验内容(或实验原理、实验拓扑)

单表查询:实现对关系表进行投影、选择、数据排序、对查询结果进行处理等。

三、实验设备与环境

I7 7700HQ+16G内存+48TB分布式硬盘的笔记本电脑、Windows 10 1903政府版、Microsoft SQL Server 2008 R2

四、实验设计方案(包括实验步骤、设计思想、算法描述或开发流程等)

  1. 启动DBMS服务器,视情况决定是否附加实验用数据库。
  2. 在查询编辑器中,打开查询窗口,打开或选择实验数据库,输入完成实验内容的SELECT语句。
  3. 实现单表查询,体会SELECT语句对关系表进行投影、选择、数据排序、查询结果计算等功能的支持。
  • 任务1:(对数据库eshop中数据进行指定条件的简单查询)。
    (1)查询products表中p_price(商品价格)在800以上的商品详细信息。
    (2)查询products表中p_quantity(商品数量)在20和50之间的商品编号、商品名称和商品数量。
    (3)查询orders表中各会员购买商品的总量,并以汉字列标题形式输出会员帐号,商品总额。
    (4)查询members表中家庭地址为“湖南”的会员详细信息。
    (5)查询members表中年龄大于30且性别为“男”的会员详细信息。
    (6)查询orders表各商品销售总量前3名的商品编号和销售总量。
    (7)查询orders表中购买过商品的会员帐号,要求去掉重复行。
    (8)查询orders表已确认、已支付和已配送的订单详细信息。
  • 任务2:(对 “学生-课程”数据库中数据进行指定条件的简单查询)
    (1)查询选修了课程的学生学号。(指定DISTINCT选项)
    (2)查询2014年入学的专业代码为302的学生的学号和姓名,输出列名显示为“学号”、“年龄”。(学生的学号有入学年份(4位)+专业代码(3位)+顺序编号(3位)组成,使用系统提供的字符和日期函数来实现查询)
    (3)查询所开设的含有“设计”字样的课程名字。
    (4)查询选修课程号为“C01”且成绩在80-90分、之间的学生学号和成绩。
    (5)查询缺少了成绩的学生的学号和课程号。
    (6)查询非数学系和非计算机系学生的学号、姓名和所在系。
    (7)查询选修课程号为“C01”课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

五、实验结果(包括设计效果、测试数据、运行结果等)

任务1:(对数据库eshop中数据进行指定条件的简单查询)。

  1. 查询products表中p_price(商品价格)在800以上的商品详细信息。
    在这里插入图片描述
  2. 查询products表中p_quantity(商品数量)在20和50之间的商品编号、商品名称和商品数量。
    SQL 实验项目2_1:单表查询_第1张图片
  3. 查询orders表中各会员购买商品的总量,并以汉字列标题形式输出会员帐号,商品总额。
    SQL 实验项目2_1:单表查询_第2张图片
  4. 查询members表中家庭地址为“湖南”的会员详细信息。
    SQL 实验项目2_1:单表查询_第3张图片
  5. 查询members表中年龄大于30且性别为“男”的会员详细信息。
    SQL 实验项目2_1:单表查询_第4张图片
  6. 查询orders表各商品销售总量前3名的商品编号和销售总量。
    SQL 实验项目2_1:单表查询_第5张图片
  7. 查询orders表中购买过商品的会员帐号,要求去掉重复行。
    SQL 实验项目2_1:单表查询_第6张图片
  8. 查询orders表已确认、已支付和已配送的订单详细信息。
    SQL 实验项目2_1:单表查询_第7张图片

任务2:(对 “学生-课程”数据库中数据进行指定条件的简单查询)

  1. 查询选修了课程的学生学号。(指定DISTINCT选项)
    SQL 实验项目2_1:单表查询_第8张图片
  2. 查询2014年入学的专业代码为302的学生的学号和姓名,输出列名显示为“学号”、“年龄”。(学生的学号有入学年份(4位)+专业代码(3位)+顺序编号(3位)组成,使用系统提供的字符和日期函数来实现查询)
    SQL 实验项目2_1:单表查询_第9张图片
  3. 查询所开设的含有“设计”字样的课程名字。
    在这里插入图片描述
  4. 查询选修课程号为“C01”且成绩在80-90分、之间的学生学号和成绩。
    在这里插入图片描述
  5. 查询缺少了成绩的学生的学号和课程号。
    在这里插入图片描述
  6. 查询非数学系和非计算机系学生的学号、姓名和所在系。
    在这里插入图片描述
  7. 查询选修课程号为“C01”课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
    在这里插入图片描述

六、实验小结(包括收获、心得体会、注意事项、存在问题及解决办法、建议等)

  1. 注意查询要求的详细描述,先确定要查询的表然后确定要输出的列和行。
  2. 输入SQL语句时应注意,除字符串中的中文字符,语句中均使用英文半角操作符号。
  3. 查询执行后没有查询结果呈现,可能是查询语句错误,也可能是实验数据不够丰富,此时,需要对数据库中的数据更新,再进一步去验证。
  4. 对于得不到正确结果的查询,可考虑检查查询条件及子句等来解决。

七、附录(包括作品、流程图、源程序及命令清单等)

本实验报告同步更新于:https://blog.csdn.net/COCO56/article/details/102261262

  • 任务1:(对数据库eshop中数据进行指定条件的简单查询)。

    use eshop
    
    --(1)查询products表中P_price(商品价格)在800以上的商品详细信息。
    select * FROM products where P_price>800;
    
    --(2)查询products表中P_quantity(商品数量)在20和50之间的商品编号、商品名称和商品数量。
    select P_no,P_name,P_quantity from products where P_quantity between 20 and 50;
    
    --(3)查询orders表中各会员购买商品的总量,并以汉字列标题形式输出会员帐号,商品总额。
    select M_account 会员账号, O_quantity 商品总额 from orders;
    
    --(4)查询members表中家庭地址为“湖南”的会员详细信息。
    select * from members where M_address='湖南';
    
    --(5)查询members表中年龄大于30且性别为“男”的会员详细信息。
    select * from members where DATEDIFF(yy, M_birth,GETDATE())>30 and M_sex='男';
    
    --(6)查询orders表各商品销售总量前3名的商品编号和销售总量。
    select top 3 P_no 商品编号,SUM(O_quantity) 销售总额 from orders group by (P_no) order by sum(O_quantity) DESC;
    --order by 子句对查询结果默认为升序(ASC, ascend)排列,降序排列用DESC(descend)关键字
    
    --(7)查询orders表中购买过商品的会员帐号,要求去掉重复行。
    select distinct M_account from orders;
    
    --(8)查询orders表已确认、已支付和已配送的订单详细信息。
    select * from orders where O_confirm_state=1 and O_pay_state=1 and O_send_state=1;
    
  • 任务2:(对 “学生-课程”数据库中数据进行指定条件的简单查询)

    use sc
    
    --(1)查询选修了课程的学生学号。(指定DISTINCT选项)
    select distinct SNo from SC;
    
    --(2)查询2014年入学的专业代码为302的学生的学号和姓名,输出列名显示为“学号”、“年龄”。(学生的学号有入学年份(4位)+专业代码(3位)+顺序编号(3位)组成,使用系统提供的字符和日期函数来实现查询)
    select SNo 学号, SAge 年龄 from Student where SNo like '2014%'
    
    --(3)查询所开设的含有“设计”字样的课程名字。
    select * from Course where CName like '设计';
    
    --(4)查询选修课程号为“C01”且成绩在80-90分、之间的学生学号和成绩。
    select Sno 学号,Grade 成绩 from SC where Grade between 80 and 90 and CNo='C01';
    
    --(5)查询缺少了成绩的学生的学号和课程号。
    select Sno 学号, Grade 课程号 from SC where Grade=null;
    
    --(6)查询非数学系(MA)和非计算机系(CS)学生的学号、姓名和所在系。
    select SNo,SName,SDept from Student where SDept not in ('CS', 'MA')
    
    --(7)查询选修课程号为“C01”课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
    select * from SC where CNo='C01' order by Grade DESC, SNo;
    

你可能感兴趣的:(sql,课本练习)