sql必知必会50题链接直达
编写 SQL 语句,从 Customers 表中检索所有的cust_id
select cust_id from Customers
编写SQL 语句,检索并列出所有已订购商品(prod_id)的去重后的清单。
select distinct prod_id from OrderItems
需要编写 SQL语句,检索所有列。
select cust_id, cust_name from Customers
从 Customers 中检索所有的顾客名称(cust_name),并按从 Z 到 A 的顺序显示结果。
select cust_name from Customers order by cust_name desc
编写 SQL 语句,从 Orders 表中检索顾客 ID(cust_id)和订单号(order_num),并先按顾客 ID 对结果进行排序,再按订单日期倒序排列。
select cust_id, order_num from Orders order by cust_id, order_date desc
编写 SQL 语句,显示 OrderItems 表中的数量(quantity)和价格(item_price),并按数量由多到少、价格由高到低排序。
select quantity, item_price from OrderItems order by quantity desc, item_price desc
下面的 SQL 语句有问题吗?尝试将它改正确,使之能够正确运行,并且返回结果根据vend_name逆序排列
SELECT vend_name, FROM Vendors ORDER vend_name DESC;
select vend_name
from Vendors
order by vend_name desc
从 Products 表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9.49 美元的产品。
select prod_id, prod_name
from Products
where prod_price = 9.49
编写 SQL 语句,从 Products 表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9 美元或更高的产品。
select prod_id, prod_name
from Products
where prod_price >= 9
编写 SQL 语句,返回 Products 表中所有价格在 3 美元到 6 美元之间的产品的名称(prod_name)和价格(prod_price),然后按价格对结果进行排序
select prod_name, prod_price
from Products
where prod_price between 3 and 6
order by prod_price asc
从 OrderItems 表中检索出所有不同且不重复的订单号(order_num),其中每个订单都要包含 100 个或更多的产品。
select distinct order_num
from OrderItems
where quantity >= 100
编写 SQL 语句,从 Vendors 表中检索供应商名称(vend_name),仅返回加利福尼亚州的供应商(这需要按国家[USA]和州[CA]进行过滤,没准其他国家也存在一个CA)
select vend_name
from Vendors
where vend_country = 'USA' and vend_state = 'CA'
编写SQL 语句,查找所有订购了数量至少100 个的 BR01、BR02 或BR03 的订单。你需要返回 OrderItems 表的订单号(order_num)、产品 ID(prod_id)和数量(quantity),并按产品 ID 和数量进行过滤。
select order_num, prod_id, quantity
from OrderItems
where quantity >= 100 and prod_id in ("BR01","BR02","BR03")
# 或者是
select order_num, prod_id, quantity
from OrderItems
where quantity >= 100 and prod_id in ('BR01','BR02','BR03')
#单双引号都可以表示字符串
编写 SQL 语句,返回所有价格在 3美元到 6美元之间的产品的名称(prod_name)和价格(prod_price),使用 AND操作符,然后按价格对结果进行升序排序
select prod_name, prod_price
from Products
where prod_price >= 3 and prod_price <= 6
order by prod_price asc
修改正确下面sql,使之正确返回
SELECT vend_name FROM Vendors ORDER BY vend_name WHERE vend_country = 'USA' AND vend_state = 'CA';
SELECT vend_name
FROM Vendors
WHERE vend_country = 'USA' AND vend_state = 'CA'
ORDER BY vend_name;
编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含 toy 一词的产品名称
select prod_name, prod_desc
from Products
where prod_desc like '%toy%'
编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现 toy 一词的产品,最后按”产品名称“对结果进行排序。
select prod_name, prod_desc
from Products
where prod_desc not like '%toy%'
order by Prod_name
编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中同时出现 toy 和 carrots 的产品。有好几种方法可以执行此操作,但对于这个挑战题,请使用 AND 和两个 LIKE 比较。
select prod_name, prod_desc
from Products
where prod_desc like '%toy%' and prod_desc like '%carrots%'
编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots 的产品。提示:只需要用带有三个 % 符号的 LIKE 即可。
select prod_name, prod_desc
from Products
where prod_desc like '%toy%carrots%'
编写 SQL 语句,从 Vendors 表中检索vend_id、vend_name、vend_address 和 vend_city,将 vend_name重命名为 vname,将 vend_city 重命名为 vcity,将 vend_address重命名为 vaddress,按供应商名称对结果进行升序排序。
# as 可以省略
select vend_id, vend_name as vname, vend_address as vaddress, vend_city as vcity
from Vendors
order by vend_name
编写 SQL语句,从 Products 表中返回 prod_id、prod_price 和 sale_price。sale_price 是一个包含促销价格的计算字段。提示:可以乘以 0.9,得到原价的 90%(即 10%的折扣)
select prod_id, prod_price, prod_price * 0.9 as sale_price
from Products
编写 SQL 语句,返回顾客 ID(cust_id)、顾客名称(cust_name)和登录名(user_login),其中登录名全部为大写字母,并由顾客联系人的前两个字符(cust_contact)和其所在城市的前三个字符(cust_city)组成。提示:需要使用函数、拼接和别名。
select cust_id, cust_name,
upper(concat(left(cust_name, 2), left(cust_city,3))) user_login
from Customers
编写 SQL 语句,返回 2020 年 1 月的所有订单的订单号(order_num)和订单日期(order_date),并按订单日期升序排序
select order_num, order_date
from Orders
where date_format(order_date, "%Y%m") = "202001"
order by order_date
编写 SQL 语句,确定已售出产品的总数。
select sum(quantity) items_ordered
from OrderItems
修改创建的语句,确定已售出产品项(prod_id)为"BR01"的总数。
select sum(quantity) items_ordered
from OrderItems
where prod_id = 'BR01'