sql必知必会(第五版)挑战题

目录

第1课 了解SQL

 第2课 检索数据

第3课 排序检索数据

第4课 过滤数据

 第5课 高级数据过滤

第6课 用通配符进行过滤

第7课 创建计算字段

第8课 使用函数处理数据

第9课 汇总数据

第10课 分组数据

第11课 使用子查询

第12课 联结表

第13课 创建高级联结

第14课 组合查询

第15课 插入数据

第16课 更新和删除数据

第17课 创建和操纵表

第18课 使用视图


第1课 了解SQL


 第2课 检索数据

1.编写SQL语句,从Customers表中检索所有的ID(cust_id)。

2.OrderItems表包含了所有已订购的产品(有些已被订购多次)。编写SQL语句,检索并列出已订购产品(prod_id)的清单(不用列每个订单,只列出不同产品的清单)。提示:最终应该显示7行。

3.编写SQL语句,检索Customers表中所有的列,再编写另外的SELECT语句,仅检索顾客的ID。使用注释,注释掉一条SELECT语句,以便运行另一条SELECT语句。(当然,要测试这两个语句。) 

1.select cust_id 
  from Customers;

2.select distinct prod_id 
  from OrderItems;

3.select * 
  # SELECT cust_id 
  from Customers

第3课 排序检索数据

1.编写SQL语句,从Customers中检索所有的顾客名称(cust_names),并按从Z到A的顺序显示结果。

2.编写SQL语句,从Orders表中检索顾客ID(cust_id)和订单号(order_num),并先按顾客ID对结果进行排序,再按订单日期倒序排列。

3.显然,我们的虚拟商店更喜欢出售比较贵的物品,而且这类物品有很多。编写SQL语句,显示OrderItems表中的数量和价格(item_price),并按数量由多到少、价格由高到低排序。

4.下面的SQL语句有问题吗?(尝试在不运行的情况下指出。) 

SELECT vend_name,
FROM Vendors
ORDER vend_name DESC;
1.select cust_names 
  from Customers
  order by cust_names desc;

2.select cust_id , order_num
  from Orders
  order by cust_id , order_num desc;

3.select item_num, item_price 
  from OrderItems 
  order by item_num desc, item_price desc;

4.第一行后面不应该有,
  第三行order 后面没有 by

第4课 过滤数据

1.编写SQL语句,从Products表中检索产品ID(prod_id)和产品名称(prod_name),只返回价格为9.49美元的产品。

2.编写SQL语句,从Products表中检索产品ID(prod_id)和产品名称(prod_name),只返回价格为9美元或更高的产品。

3.结合第3课和第4课编写SQL语句,从OrderItems表中检索出所有不同订单号(order_num),其中包含100个或更多的产品。

4.编写SQL语句,返回Products表中所有价格在3美元到6美元之间的产品的名称(prod_name)和价格(prod_price),然后按价格对结果进行排序。(本题有多种解决方案,我们在下一课再讨论,不过你可以使用目前已学的知识来解决它。)

1.select prod_id , prod_name 
  from Products
  where prod_price = 9.49;

2.select prod_id , prod_name
  from Products
  where prod_price >= 9;

3.select distinct order_num
  from OrderItems
  where quantity >=100;

4.select prod_name , prod_price
  from Products
  where prod_price between 3 and 6
  order by prod_price;

 第5课 高级数据过滤

1.编写SQL语句,从Vendors表中检索供应商名称(vend_name),仅返回加利福尼亚州的供应商(这需要按国家[USA]和州[CA]进行过滤,没准其他国家也存在一个加利福尼亚州)。提示:过滤器需要匹配字符串。

2.编写SQL语句,查找所有至少订购了总量100个的BR01、BR02或BR03的订单。你需要返回OrderItems表的订单号(order_num)、产品ID(prod_id)和数量,并按产品ID和数量进行过滤。提示:根据编写过滤器的方式,可能需要特别注意求值顺序。

3.现在,我们回顾上一课的挑战题。编写SQL语句,返回所有价格在3美元到6美元之间的产品的名称(prod_name)和价格(prod_price)。使用AND,然后按价格对结果进行排序。

4.下面的SQL语句有问题吗?(尝试在不运行的情况下指出。) 

      SELECT vend_name
      FROM Vendors
      ORDER BY vend_name
      WHERE vend_country = 'USA' AND vend_state = 'CA';
1.select vend_name 
  from Vendors
  where vend_country = "USA"
  and
  vend_state = "CA";

2.select order_num , prod_id , quantity
  from OrderItems
  where prod_id IN ('BR01','BR02','BR03') 
  and 
  quantity >=100;

3.select prod_name , prod_price
  from products
  where prod_price >= 3 
  and 
  prod_price <= 6
  order by prod_price;

4.order by 在where子句之后

第6课 用通配符进行过滤

1.编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含toy一词的产品。

2.反过来再来一次。编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现toy一词的产品。这次,按产品名称对结果进行排序。

3.编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中同时出现toy和carrots的产品。有好几种方法可以执行此操作,但对于这个挑战题,请使用AND和两个LIKE比较。

4.来个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值