实验五3. 在项目中设计如下查询,单号题用select命令(写到程序中),双号题用查询设计器:注意:查询前先打开“学生-课程”数据库,并且设为当前库(1)创建程序文件Q1,用select命令查询“计算机”系的学生的学号、姓名、和出生日期,结果按学号升序排。
运行程序查看运行结果。
使用设计器设计:添加表:学生表“字段”选项卡:学号、姓名、出生日期“筛选”选项卡:所在系=’计算机’“排序”选项卡:学号升序使用命令:SELECT 学号,姓名,出生日期;FROM学生;WHERE所在系= "计算机";ORDER BY学号查询结果如下:(2)创建查询文件Q2,查询“计算机”系的学生的姓名、性别、年龄,结果按年龄升序排。
运行查询文件查看运行结果。
使用设计器设计:添加表:学生表“字段”选项卡:姓名、性别、YEAR(DATE())-YEAR(学生.出生日期) AS 年龄“筛选”选项卡:所在系=’计算机’“排序依据”选项卡:YEAR(DATE())-YEAR(学生.出生日期) AS 年龄使用命令:SELECT姓名,性别, YEAR(DATE())-YEAR(学生.出生日期) AS 年龄;FROM学生;ORDER BY 3查询结果如下:(3)创建程序文件Q3,用select命令查询都有哪些系,要求系不能重复。
运行程序查看运行结果。
使用设计器设计:添加表:学生表“字段”选项卡:所在系“杂项”选项卡:选中“无重复记录”复选框使用命令:SELECT DISTINCT 所在系FROM学生查询结果如下:(4)创建查询文件Q4,查询选了“001”号课的学生的姓名和成绩,结果按成绩降序排,结果放到表“成绩001号课”表中。
运行查询文件,将存放查询结果的文件添加到项目的自由表中,浏览该自由表从而查看查询结果。
使用设计器设计:添加表:学生表、选课表“字段”选项卡:姓名、成绩“联接”选项卡:inner join 学生.学号=选课.学号“筛选”选项卡:课程号=’001’“排序依据”选项卡:成绩降序“查询去向”:表“成绩001号课”使用命令:SELECT姓名,成绩;FROM学生INNER JOIN选课ON 学生.学号= 选课.学号;WHERE课程号= "001";ORDER BY成绩DESCINTO TABLE 成绩001号课查询结果如下:(5)创建程序文件Q5,用select命令查询“计算机”系学生选了“001”号课学生的姓名、成绩,结果按成绩降序排。
运行程序查看运行结果。
使用设计器设计:添加表:学生表、选课表“字段”选项卡:姓名、成绩“联接”选项卡:inner join 学生.学号=选课.学号“筛选”选项卡:所在系=’计算机’ and课程号=’001’“排序依据”选项卡:成绩降序使用命令:SELECT姓名,成绩;FROM 学生INNER JOIN选课ON 学生.学号= 选课.学号;WHERE所在系= "计算机" AND课程号= "001";ORDER BY成绩DESC查询结果如下:(6)创建查询文件Q6,查询成绩在80及80分以上的学生的姓名、课程名和成绩,输出时先按课程名升序排,课程名一样的再按成绩降序排。
运行查询文件查看运行结果。
使用设计器设计:添加表:学生表、选课表、课程表“字段”选项卡:姓名、课程名、成绩“联接”选项卡:inner join 学生.学号=选课.学号inner join 课程.课程号=选课.课程号“筛选”选项卡:成绩>=80“排序依据”选项卡:课程名升序、成绩降序使用命令:SELECT姓名,课程名,成绩;FROM学生INNER JOIN选课INNER JOIN课程;ON 课程.课程号=选课.课程号ON 学生.学号=选课.学号;WHERE成绩>= 80;ORDER BY课程名,成绩DESC查询结果如下:(7)创建程序文件Q7,用select命令查询平均成绩大于等于80的学生的学号、姓名平均成绩。
运行程序查看运行结果。
使用设计器设计:添加表:学生表、选课表“字段”选项卡:学号、姓名、AVG(选课.成绩) AS 平均成绩“联接”选项卡:inner join 学生.学号=选课.学号“分组依据”选项卡:学号“满足条件”(筛选组):平均成绩>=80“排序依据”选项卡:学号升序使用命令:SELECT 学生.学号, 姓名, AVG(选课.成绩) AS 平均成绩;FROM 学生INNER JOIN选课ON 学生.学号= 选课.学号;GROUP BY 学生.学号;HAVING 平均成绩=>80查询结果如下:(8)创建查询文件Q8,查询各科成绩的最高分。
结果包括课程名和最高分两列。
运行查询文件查看运行结果。
使用设计器设计:添加表:课程表、选课表“字段”选项卡:课程名、MAX(选课.成绩) AS 最高分“联接”选项卡:inner join 课程.课程号=选课.课程号“分组依据”选项卡:课程名使用命令:SELECT课程名, MAX(选课.成绩) AS 最高分;FROM课程INNER JOIN选课ON课程.课程号= 选课.课程号;GROUP BY 课程.课程名查询结果如下:(9)创建程序文件Q9,用select命令查询选课人数多于10人的课程名和选课人数。
运行程序查看运行结果。
使用设计器设计:添加表:课程表、选课表“字段”选项卡:课程名、COUNT(选课.学号) AS 选课人数“联接”选项卡:inner join 课程.课程号=选课.课程号“分组依据”选项卡:课程名“满足条件”(筛选组):选课人数>=10使用命令:SELECT 选课.课程名, COUNT(选课.学号) AS 选课人数;FROM 课程INNER JOIN选课ON 课程.课程号= 选课.课程号;GROUP BY 选课.课程名;HAVING 选课人数=>10查询结果如下:(10)创建查询文件Q10,查询数学成绩前5名的学生的姓名和数学成绩。
运行查询文件查看运行结果。
使用设计器设计:添加表:学生表、选课表、课程表“字段”选项卡:姓名、成绩“联接”选项卡:inner join 学生.学号=选课.学号inner join 课程.课程号=选课.课程号“筛选”选项卡:课程名=’数学’“排序依据”选项卡:成绩降序“杂项”:不选“全部”复选框,“记录个数”改成5使用命令:SELECT TOP 5 姓名,成绩;FROM学生INNER JOIN选课INNER JOIN课程;ON 课程.课程号= 选课.课程号ON 学生.学号= 选课.学号;WHERE 课程名= "数学";ORDER BY 成绩DESC查询结果如下:4. 打开“客户管理”项目,打开“订货管理”数据库,在该项目中使用查询设计器设计如下查询:习题13(271页)第三题的1、2、3、4、5题。
注意:查询前先打开“订货管理”数据库并设为当前库。
(1)查询客户名为“三益贸易公司”的订购单明细,结果先按“订单号”升序排,同一订单的再按“单价”降序排。
结果存到results14_1中。
使用设计器:添加表:customer、order_list、order_detail“字段”选项卡:order_detail表中的所有字段“联接”选项卡:inner join customer.khh=order_list.khhInner join order_list.ddh= order_detail.ddh“筛选”选项卡:customer.khm=’益贸易公司’“排序依据”选项卡:ddh升序、dj降序“分组依据”选项卡:“杂项”选项卡:“查询去向”:表“results14_1”使用命令:SELECT Order_detail.*;FROM customer INNER JOIN order_list INNER JOIN order_detail ;ON Order_list.ddh = Order_detail.ddh ON Customer.khh = Order_list.khh;WHERE Customer.khm = "三益贸易公司";ORDER BY Order_detail.ddh, Order_detail.dj DESC;INTO TABLE results14_1.dbf查询结果:(2)查询目前有订购单的客户信息,即有对应的order_list记录的customer表中的记录,同时要求按khh升序排,将结果存到results14_2中。
使用设计器:添加表:customer、order_list“字段”选项卡:customer表中的所有字段“联接”选项卡:inner join customer.khh=order_list.khh“排序依据”选项卡:customer.khh“杂项”选项卡:选中复选框“无重复记录”“查询去向”:表“results14_2”使用命令SELECT DISTINCT Customer.*;FROM customer INNER JOIN order_list ;ON Customer.khh = Order_list.khh;ORDER BY Customer.khh;INTO TABLE results14_2.dbf查询运行结果:(3)查询所有订购单的订单号、订购日期、和总金额,按订单号升序排,将查询结果存储到表results14_3中。
使用设计器:添加表:order_list、order_detail“字段”选项卡:ddh、dgrq、qjh、qjm、SUM(dj*sl) as 总金额“联接”选项卡:Inner join order_list.ddh= order_detail.ddh“排序依据”选项卡:ddh“分组依据”选项卡:ddh“查询去向”:表“results14_3”使用命令:SELECT Order_list.ddh, dgrq, SUM(dj* sl) as 总金额;FROM order_list INNER JOIN order_detail ON Order_list.ddh = Order_detail.ddh;GROUP BY Order_list.ddh;ORDER BY Order_list.ddh;INTO TABLE results14_3.dbf查询运行结果:(4)按总金额降序排列出所有客户的客户号、客户名及其订单号和总金额,将查询结果存到表results14_4中。
使用设计器:添加表:customer、order_list、order_detail“字段”选项卡:khh、khm、ddh、SUM(dj*sl) as 总金额“联接”选项卡:inner join customer.khh=order_list.khhInner join order_list.ddh= order_detail.ddh“排序依据”选项卡:SUM(dj*sl) as 总金额降序“分组依据”选项卡:ddh“查询去向”:表“results14_4”使用命令SELECT Customer.khh, khm, Order_list.ddh, SUM(dj*sl) as 总金额;FROM customer INNER JOIN order_list INNER JOIN order_detail ;ON Order_list.ddh = Order_detail.ddh ;ON Customer.khh = Order_list.khh;GROUP BY Order_list.ddh;ORDER BY 4 DESC;INTO TABLE results14_4.dbf查询运行结果:(5)对表order_detail建立查询,把“订单号”的尾部字母相同且订货相同(即“器件号”相同)的订单合并成一张订单,新的“订单号”取原来的尾部字母,“单价”取最低价,“数量”取合计,查询结果先按新的“订单号”升序排,再按“器件号”升序排,将查询结果存到表results14_5中。