两天完成牛客网sql必知必会50题(附链接)

sql必知必会50题链接直达

牛客网sql必知必会50题

        • SQL1 从 Customers 表中检索所有的 ID
        • SQL2 检索并列出已订购产品的清单
        • SQL3 检索所有列
        • SQL4 检索顾客名称并且排序
        • SQL5 对顾客ID和日期排序
        • SQL6 按照数量和价格排序
        • SQL7 检查SQL语句
        • SQL8 返回固定价格的产品
        • SQL9 返回更高价格的产品
        • SQL10 返回产品并且按照价格排序
        • SQL11 返回更多的产品
        • SQL12 检索供应商名称
        • SQL13 检索并列出已订购产品的清单
        • SQL14 返回所有价格在 3美元到 6美元之间的产品的名称和价格
        • SQL15 纠错2
        • SQL16 检索产品名称和描述(一)
        • SQL17 检索产品名称和描述(二)
        • SQL18 检索产品名称和描述(三)
        • SQL19 检索产品名称和描述(四)
        • SQL20 别名
        • SQL21 打折
        • SQL22 顾客登录名
        • SQL23 返回 2020 年 1 月的所有订单的订单号和订单日期
        • SQL24 确定已售出产品的总数
        • SQL25 确定已售出产品项 BR01 的总数

SQL1 从 Customers 表中检索所有的 ID

编写 SQL 语句,从 Customers 表中检索所有的cust_id

select cust_id from Customers

SQL2 检索并列出已订购产品的清单

编写SQL 语句,检索并列出所有已订购商品(prod_id)的去重后的清单。

select distinct prod_id from OrderItems

SQL3 检索所有列

需要编写 SQL语句,检索所有列。

select cust_id, cust_name from Customers

SQL4 检索顾客名称并且排序

从 Customers 中检索所有的顾客名称(cust_name),并按从 Z 到 A 的顺序显示结果。

select cust_name from Customers order by cust_name desc

SQL5 对顾客ID和日期排序

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

select cust_id, order_num from Orders order by cust_id, order_date desc

SQL6 按照数量和价格排序

编写 SQL 语句,显示 OrderItems 表中的数量(quantity)和价格(item_price),并按数量由多到少、价格由高到低排序。

select quantity, item_price from OrderItems order by quantity desc, item_price desc

SQL7 检查SQL语句

下面的 SQL 语句有问题吗?尝试将它改正确,使之能够正确运行,并且返回结果根据vend_name逆序排列

SELECT vend_name, 
FROM Vendors 
ORDER vend_name DESC;
select vend_name
from Vendors
order by vend_name desc

SQL8 返回固定价格的产品

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

select prod_id, prod_name
from Products
where prod_price = 9.49

SQL9 返回更高价格的产品

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

select prod_id, prod_name
from Products
where prod_price >= 9

SQL10 返回产品并且按照价格排序

编写 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

SQL11 返回更多的产品

从 OrderItems 表中检索出所有不同且不重复的订单号(order_num),其中每个订单都要包含 100 个或更多的产品。

select distinct order_num
from OrderItems
where quantity >= 100

SQL12 检索供应商名称

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

select vend_name
from Vendors
where vend_country = 'USA' and vend_state = 'CA'

SQL13 检索并列出已订购产品的清单

编写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')
#单双引号都可以表示字符串

SQL14 返回所有价格在 3美元到 6美元之间的产品的名称和价格

编写 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

SQL15 纠错2

修改正确下面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;

SQL16 检索产品名称和描述(一)

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

select prod_name, prod_desc
from Products
where prod_desc like '%toy%'

SQL17 检索产品名称和描述(二)

编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现 toy 一词的产品,最后按”产品名称“对结果进行排序。

select prod_name, prod_desc
from Products
where prod_desc not like '%toy%'
order by Prod_name

SQL18 检索产品名称和描述(三)

编写 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%'

SQL19 检索产品名称和描述(四)

编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots 的产品。提示:只需要用带有三个 % 符号的 LIKE 即可。

select prod_name, prod_desc
from Products
where prod_desc like '%toy%carrots%'

SQL20 别名

编写 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

SQL21 打折

编写 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

SQL22 顾客登录名

编写 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

SQL23 返回 2020 年 1 月的所有订单的订单号和订单日期

编写 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

SQL24 确定已售出产品的总数

编写 SQL 语句,确定已售出产品的总数。

select sum(quantity) items_ordered
from OrderItems

SQL25 确定已售出产品项 BR01 的总数

修改创建的语句,确定已售出产品项(prod_id)为"BR01"的总数。

select sum(quantity) items_ordered
from OrderItems
where prod_id = 'BR01'

你可能感兴趣的:(MySQL,sql,java,数据库)