基础SQL练习题 适合刚学完SQL语法的小白练习
-- 需求1: 选中employees 表的所有数据
select *
from employees;
-- 需求2: 查询每个客户的 ID, company name, contact name, contact title, city, 和 country.并按照国家名字排序
select customer_id, company_name, contact_name, contact_title, city, country
from customers
order by country;
-- 替换快捷键: ctrl + 字母R
-- 需求3: 查询每一个商品的product_name, category_name, quantity_per_unit, unit_price, units_in_stock 并且通过 unit_price 字段排序
-- 方式1: 显示内连接
select product_name,
category_name,
quantity_per_unit,
unit_price,
units_in_stock
from categories c
join products p
on c.category_id = p.category_id
order by unit_price desc;
-- 方式2: 隐式内连接.
select product_name,
category_name,
quantity_per_unit,
unit_price,
units_in_stock
from categories c,
products p
where c.category_id = p.category_id
order by unit_price desc;
-- 需求4: 列出所有提供了4种以上不同商品的供应商列表所需字段:supplier_id, company_name, and products_count (提供的商品种类数量).
# 步骤1: 计算每个供应商, 供应的商品的总数.
select s.supplier_id,
s.company_name,
count(product_id) products_count
from products p,
suppliers s
where p.supplier_id = s.supplier_id
group by s.supplier_id, s.company_name;
# 步骤2: 基于上述的步骤, 筛选出 供应了4种以上不同商品的供应商信息.
select s.supplier_id,
s.company_name,
count(product_id) products_count
from products p,
suppliers s
where p.supplier_id = s.supplier_id
group by s.supplier_id, s.company_name
having products_count > 4;
# step3: 验证数据. 例如: 供应商id 12, 公司名 Plutzer Lebensmittelgroßmärkte AG, 5类商品.
select *
from products
where supplier_id = 12;
-- 需求5: 提取订单编号为10250的订单详情, 显示如下信息:
-- product_name, quantity, unit_price ( order_items 表), discount , order_date 按商品名字排序
select o.order_id,
product_name,
quantity,
oi.unit_price,
discount,
order_date
from products p,
order_items oi,
orders o
where p.product_id = oi.product_id
and oi.order_id = o.order_id
and o.order_id = 10250
order by product_name;
-- 需求6: 收集运输到法国的订单的相关信息,包括订单涉及的顾客和员工信息,下单和发货日期等.
select e.employee_id,
e.last_name,
e.first_name, # 员工信息.
c.customer_id,
c.company_name, # 客户信息
o.order_date,
o.shipped_date # 下单和发货日期
from employees e
join orders o on e.employee_id = o.employee_id
join customers c on o.customer_id = c.customer_id
where ship_country = 'France';
-- 需求7: 提供订单编号为10248的相关信息,包括product name, unit price (在 order_items 表中), quantity(数量),company_name(供应商公司名字 ,起别名 supplier_name).
select product_name,
oi.unit_price,
quantity,
company_name as supplier_name
from products p,
order_items oi,
suppliers s
where p.product_id = oi.product_id
and p.supplier_id = s.supplier_id
and order_id = 10248;
-- 需求8: 提取每件商品的详细信息,包括 商品名称(product_name), 供应商的公司名称 (company_name,在 suppliers 表中),
-- 类别名称 category_name, 商品单价unit_price, 和每单位商品数量quantity per unit
select product_name,
company_name,
category_name,
unit_price,
quantity_per_unit
from products p,
categories c,
suppliers s
where c.category_id = p.category_id
and p.supplier_id = s.supplier_id;
-- 需求9: 另一种常见的报表需求是查询某段时间内的业务指标, 我们统计2016年7月的订单数量,
# 方式1: between..and..
select count(1) order_cnt
from orders
where order_date between '20