当前位置:网站首页>数据库系统原理与应用教程(064)—— MySQL 练习题:操作题 51-61(八):查询条件的构造、通配符
数据库系统原理与应用教程(064)—— MySQL 练习题:操作题 51-61(八):查询条件的构造、通配符
2022-07-30 17:26:00 【睿思达DBA_WGX】
数据库系统原理与应用教程(064)—— MySQL 练习题:操作题 51-61(八):查询条件的构造、通配符
51、使用通配符构造查询条件(1)
有数据表:Products,表中数据如下:
| prod_name | prod_desc |
|---|---|
| a0011 | usb |
| a0019 | iphone13 |
| b0019 | gucci t-shirts |
| c0019 | gucci toy |
| d0019 | lego toy |
【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含 toy 一词的产品名称。查询结果如下:
| prod_name | prod_desc |
|---|---|
| c0019 | gucci toy |
| d0019 | lego toy |
表结构及数据如下:
/* DROP TABLE IF EXISTS `Products`; CREATE TABLE IF NOT EXISTS `Products` ( `prod_name` VARCHAR(255) NOT NULL COMMENT '产品 ID', `prod_desc` VARCHAR(255) NOT NULL COMMENT '产品名称' ); INSERT INTO `Products` VALUES ('a0011','usb'), ('a0019','iphone13'), ('b0019','gucci t-shirts'), ('c0019','gucci toy'), ('d0019','lego toy'); */
解答:
mysql> select prod_name, prod_desc from Products where prod_desc like '%toy%';
+-----------+-----------+
| prod_name | prod_desc |
+-----------+-----------+
| c0019 | gucci toy |
| d0019 | lego toy |
+-----------+-----------+
2 rows in set (0.02 sec)
52、使用通配符构造查询条件(2)
有数据表:Products,表中数据如下:
| prod_name | prod_desc |
|---|---|
| a0011 | usb |
| a0019 | iphone13 |
| b0019 | gucci t-shirts |
| c0019 | gucci toy |
| d0019 | lego toy |
【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现 toy 一词的产品,并且按 ”产品名称“ 对结果进行排序。查询结果如下:
| prod_name | prod_desc |
|---|---|
| a0011 | usb |
| a0019 | iphone13 |
| b0019 | gucci t-shirts |
解答:
/* select prod_name, prod_desc from Products where prod_desc not like '%toy%' order by prod_name; */
mysql> select prod_name, prod_desc from Products
-> where prod_desc not like '%toy%' order by prod_name;
+-----------+----------------+
| prod_name | prod_desc |
+-----------+----------------+
| a0011 | usb |
| a0019 | iphone13 |
| b0019 | gucci t-shirts |
+-----------+----------------+
3 rows in set (0.00 sec)
53、使用通配符构造查询条件(3)
有数据表:Products,表中数据如下:
| prod_name | prod_desc |
|---|---|
| a0011 | usb |
| a0019 | iphone13 |
| b0019 | gucci t-shirts |
| c0019 | gucci toy |
| d0019 | lego carrots toy |
【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中同时出现 toy 和 carrots 的产品。查询结果如下:
| prod_name | prod_desc |
|---|---|
| d0019 | lego carrots toy |
表结构及数据如下:
/* DROP TABLE IF EXISTS `Products`; CREATE TABLE IF NOT EXISTS `Products` ( `prod_name` VARCHAR(255) NOT NULL COMMENT '产品 ID', `prod_desc` VARCHAR(255) NOT NULL COMMENT '产品名称' ); INSERT INTO `Products` VALUES ('a0011','usb'), ('a0019','iphone13'), ('b0019','gucci t-shirts'), ('c0019','gucci toy'), ('d0019','lego carrots toy'); */
解答:
/* select prod_name, prod_desc from Products where prod_desc like '%toy%' and prod_desc like '%carrots%'; */
mysql> select prod_name, prod_desc from Products
-> where prod_desc like '%toy%' and prod_desc like '%carrots%';
+-----------+------------------+
| prod_name | prod_desc |
+-----------+------------------+
| d0019 | lego carrots toy |
+-----------+------------------+
1 row in set (0.00 sec)
54、使用通配符构造查询条件(4)
有数据表:Products,表中数据如下:
| prod_name | prod_desc |
|---|---|
| a0011 | usb |
| a0019 | iphone13 |
| b0019 | gucci t-shirts |
| c0019 | gucci toy |
| d0019 | lego toy carrots |
【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),返回在描述中以先后顺序同时出现 toy 和 carrots 的产品。查询结果如下:
| prod_name | prod_desc |
|---|---|
| d0019 | lego toy carrots |
表结构及数据如下:
/* DROP TABLE IF EXISTS `Products`; CREATE TABLE IF NOT EXISTS `Products` ( `prod_name` VARCHAR(255) NOT NULL COMMENT '产品 ID', `prod_desc` VARCHAR(255) NOT NULL COMMENT '产品名称' ); INSERT INTO `Products` VALUES ('a0011','usb'), ('a0019','iphone13'), ('b0019','gucci t-shirts'), ('c0019','gucci toy'), ('d0019','lego toy carrots '); */
解答:
mysql> select prod_name, prod_desc from Products where prod_desc like '%toy%carrots%';
+-----------+-------------------+
| prod_name | prod_desc |
+-----------+-------------------+
| d0019 | lego toy carrots |
+-----------+-------------------+
1 row in set (0.00 sec)
55、为列指定别名
有数据表:Vendors(供应商信息),vend_id(供应商 id)、vend_name(供应商名称)、vend_address(供应商地址)、vend_city(供应商城市),表中数据如下:
| vend_id | vend_name | vend_address | vend_city |
|---|---|---|---|
| a001 | tencent cloud | address1 | shenzhen |
| a002 | huawei cloud | address2 | dongguan |
| a003 | aliyun cloud | address3 | hangzhou |
| a003 | netease cloud | address4 | guangzhou |
【问题】编写 SQL 语句,从 Vendors 表中检索 vend_id、vend_name、vend_address 和 vend_city,将 vend_name 重命名为 vname,将 vend_city 重命名为 vcity,将 vend_address 重命名为 vaddress,结果按供应商名称升序排序。查询结果如下:
| vend_id | vname | vaddress | vcity |
|---|---|---|---|
| a003 | aliyun cloud | address3 | hangzhou |
| a002 | huawei cloud | address2 | dongguan |
| a003 | netease cloud | address4 | guangzhou |
| a001 | tencent cloud | address1 | shenzhen |
表结构及数据如下:
/* DROP TABLE IF EXISTS `Vendors`; CREATE TABLE IF NOT EXISTS `Vendors` ( `vend_id` VARCHAR(255) NOT NULL COMMENT '供应商id', `vend_name` VARCHAR(255) NOT NULL COMMENT '供应商名称', `vend_address` VARCHAR(255) NOT NULL COMMENT '供应商地址', `vend_city` VARCHAR(255) NOT NULL COMMENT '供应商城市' ); INSERT INTO `Vendors` VALUES ('a001','tencent cloud','address1','shenzhen'), ('a002','huawei cloud','address2','dongguan'), ('a003','aliyun cloud','address3','alibaba'); */
解答:
/* select vend_id, vend_name vname, vend_address vaddress, vend_city vcity from Vendors order by vname; */
mysql> select vend_id, vend_name vname, vend_address vaddress, vend_city vcity
-> from Vendors order by vname;
+---------+---------------+----------+----------+
| vend_id | vname | vaddress | vcity |
+---------+---------------+----------+----------+
| a003 | aliyun cloud | address3 | alibaba |
| a002 | huawei cloud | address2 | dongguan |
| a001 | tencent cloud | address1 | shenzhen |
+---------+---------------+----------+----------+
3 rows in set (0.00 sec)
56、查询计算列
有数据表:Products,表中数据如下:
| prod_id | prod_price |
|---|---|
| a0011 | 9.49 |
| a0019 | 600 |
| b0019 | 1000 |
【问题】编写 SQL语句,从 Products 表中返回 prod_id、prod_price 和 sale_price。sale_price 是一个计算列,内容为 prod_price 列的 90%。查询结果如下:
| prod_id | prod_price | sale_price |
|---|---|---|
| a0011 | 9.49 | 8.541 |
| a0019 | 600 | 540 |
| b0019 | 1000 | 900 |
【示例解析】sale_price的价格是prod_price的90%
/* DROP TABLE IF EXISTS `c`; CREATE TABLE IF NOT EXISTS `Products` ( `prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID', `prod_price` DOUBLE NOT NULL COMMENT '产品价格' ); INSERT INTO `Products` VALUES ('a0011',9.49), ('a0019',600), ('b0019',1000); */
解答:
mysql> select prod_id, prod_price, prod_price * 0.9 sale_price from Products;
+---------+------------+------------+
| prod_id | prod_price | sale_price |
+---------+------------+------------+
| a0011 | 9.49 | 8.541 |
| a0019 | 600 | 540 |
| b0019 | 1000 | 900 |
+---------+------------+------------+
3 rows in set (0.02 sec)
57、函数的使用(1)
数据表:Customers,表中数据如下:
| cust_id | cust_name | cust_contact | cust_city |
|---|---|---|---|
| a1 | Andy Li | Andy Li | Oak Park |
| a2 | Ben Liu | Ben Liu | Oak Park |
| a3 | Tony Dai | Tony Dai | Oak Park |
| a4 | Tom Chen | Tom Chen | Oak Park |
| a5 | An Li | An Li | Oak Park |
| a6 | Lee Chen | Lee Chen | Oak Park |
| a7 | Hex Liu | Hex Liu | Oak Park |
【问题】编写 SQL 语句,返回顾客 ID(cust_id)、顾客名称(cust_name)和登录名(user_login)。其中登录名全部为大写字母,并由顾客联系人的前两个字符(cust_contact)和其所在城市的前三个字符(cust_city)组成。查询结果如下:
| cust_id | cust_name | user_login |
|---|---|---|
| a1 | Andy Li | ANOAK |
| a2 | Ben Liu | BEOAK |
| a3 | Tony Dai | TOOAK |
| a4 | Tom Chen | TOOAK |
| a5 | An Li | ANOAK |
| a6 | Lee Chen | LEOAK |
| a7 | Hex Liu | HEOAK |
表结构及数据如下:
/* DROP TABLE IF EXISTS `Customers`; CREATE TABLE IF NOT EXISTS `Customers`( cust_id VARCHAR(255) NOT NULL COMMENT '客户id', cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名', cust_contact VARCHAR(255) NOT NULL COMMENT '客户联系人', cust_city VARCHAR(255) NOT NULL COMMENT '客户城市' ); INSERT `Customers` VALUES ('a1','Andy Li','Andy Li','Oak Park'),('a2','Ben Liu','Ben Liu','Oak Park'),('a3','Tony Dai','Tony Dai','Oak Park'),('a4','Tom Chen','Tom Chen','Oak Park'),('a5','An Li','An Li','Oak Park'),('a6','Lee Chen','Lee Chen','Oak Park'),('a7','Hex Liu','Hex Liu','Oak Park'); */
解答:
/* select cust_id, cust_name, upper(concat(left(cust_name, 2),left(cust_city, 3))) user_login from Customers; */
mysql> select cust_id, cust_name,
-> upper(concat(left(cust_name, 2),left(cust_city, 3))) user_login
-> from Customers;
+---------+-----------+------------+
| cust_id | cust_name | user_login |
+---------+-----------+------------+
| a1 | Andy Li | ANOAK |
| a2 | Ben Liu | BEOAK |
| a3 | Tony Dai | TOOAK |
| a4 | Tom Chen | TOOAK |
| a5 | An Li | ANOAK |
| a6 | Lee Chen | LEOAK |
| a7 | Hex Liu | HEOAK |
+---------+-----------+------------+
7 rows in set (0.03 sec)
58、函数的使用(2)
数据表:Orders(订单表),表中的数据如下:
| order_num | order_date |
|---|---|
| a0001 | 2020-01-01 00:00:00 |
| a0002 | 2020-01-02 00:00:00 |
| a0003 | 2020-01-01 12:00:00 |
| a0004 | 2020-02-01 00:00:00 |
| a0005 | 2020-03-01 00:00:00 |
【问题】编写 SQL 语句,返回 2020 年 1 月的所有订单的订单号(order_num)和订单日期(order_date),并按订单日期升序排序。查询结果如下:
| order_num | order_date |
|---|---|
| a0001 | 2020-01-01 00:00:00 |
| a0003 | 2020-01-01 12:00:00 |
| a0002 | 2020-01-02 00:00:00 |
表结构及数据如下:
/* DROP TABLE IF EXISTS `Orders`; CREATE TABLE IF NOT EXISTS `Orders`( order_num VARCHAR(255) NOT NULL COMMENT '订单号', order_date TIMESTAMP NOT NULL COMMENT '订单日期' ); INSERT `Orders` VALUES ('a0001','2020-01-01 00:00:00'), ('a0002','2020-01-02 00:00:00'), ('a0003','2020-01-01 12:00:00'), ('a0004','2020-02-01 00:00:00'), ('a0005','2020-03-01 00:00:00'); */
解答:
/* select order_num, order_date from Orders where year(order_date) = 2020 and month(order_date) = 1 order by order_date; */
mysql> select order_num, order_date from Orders
-> where year(order_date) = 2020 and month(order_date) = 1
-> order by order_date;
+-----------+---------------------+
| order_num | order_date |
+-----------+---------------------+
| a0001 | 2020-01-01 00:00:00 |
| a0003 | 2020-01-01 12:00:00 |
| a0002 | 2020-01-02 00:00:00 |
+-----------+---------------------+
3 rows in set (0.00 sec)
59、聚合函数的使用(1)
数据表:OrderItems,表中数据如下:
| quantity |
|---|
| 10 |
| 100 |
| 1000 |
| 10001 |
| 2 |
| 15 |
【问题】编写 SQL 语句,确定已售出产品的总数。查询结果如下:
| items_ordered |
|---|
| 11128 |
表结构及数据如下:
/* DROP TABLE IF EXISTS `OrderItems`; CREATE TABLE IF NOT EXISTS `OrderItems`( quantity INT(16) NOT NULL COMMENT '商品数量' ); INSERT `OrderItems` VALUES (10),(100),(1000),(10001),(2),(15); */
解答:
mysql> select sum(quantity) items_ordered from OrderItems;
+---------------+
| items_ordered |
+---------------+
| 11128 |
+---------------+
1 row in set (0.00 sec)
60、聚合函数的使用(2)
数据表:OrderItems,表中数据如下:
| quantity | prod_id |
|---|---|
| 10 | AR01 |
| 100 | AR10 |
| 1000 | BR01 |
| 10001 | BR010 |
【问题】编写 SQL 语句,确定已售出产品项(prod_id)为 “BR01” 的总数。查询结果如下:
| items_ordered |
|---|
| 1000 |
表结构及数据如下:
/* DROP TABLE IF EXISTS `OrderItems`; CREATE TABLE IF NOT EXISTS `OrderItems`( quantity INT(16) NOT NULL COMMENT '商品数量', prod_id VARCHAR(255) NOT NULL COMMENT '商品项' ); INSERT `OrderItems` VALUES (10,'AR01'),(100,'AR10'),(1000,'BR01'),(10001,'BR010'); */
解答:
mysql> select sum(quantity) items_ordered from OrderItems where prod_id = 'BR01';
+---------------+
| items_ordered |
+---------------+
| 1000 |
+---------------+
1 row in set (0.01 sec)
61、聚合函数的使用(3)
数据表:Products,表中数据如下:
| prod_price |
|---|
| 9.49 |
| 600 |
| 1000 |
【问题】编写 SQL 语句,确定 Products 表中价格不超过 10 元的最贵产品的价格(prod_price)。查询结果如下:
| max_price |
|---|
| 9.49 |
表结构及数据如下:
/* DROP TABLE IF EXISTS `Products`; CREATE TABLE IF NOT EXISTS `Products` ( `prod_price` DOUBLE NOT NULL COMMENT '产品价格' ); INSERT INTO `Products` VALUES (9.49), (600), (1000); */
解答:
mysql> select max(prod_price) max_price from Products where prod_price <= 10;
+-----------+
| max_price |
+-----------+
| 9.49 |
+-----------+
1 row in set (0.00 sec)
边栏推荐
- C陷阱与缺陷 第7章 可移植性缺陷 7.1 应对C语言标准变更
- [HarekazeCTF2019] Avatar Uploader 1
- KDD‘21推荐系统离散特征表征无embedding table Learning to Embed Categorical Features without Embedding Tables for
- Google earth engine如何实现我们时间列表的排列和选取
- Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
- 向量检索基础方法总结
- 顺通海关查验预约综合管理系统
- FP6606ACAW4 TQFN-20L (3mmx3mm) USB双端口充电控制器 百盛电子代理
- 一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧试读版
- LeetCode318: Maximum product of word lengths
猜你喜欢

SLIM: Sparse Linear Methods (TopN推荐)

游戏化产品搭建思路的拆解与探究

分账系统二清解决方案如何助力电商平台合规经营?

Insert data into MySQL in C language

Daily practice------Generate 13-digit bar, Ean-13 code rule: The thirteenth digit is the check code obtained by the calculation of the first twelve digits.

windwons 下GPU环境和pytorch安装

Mongoose模块

Go新项目-编译热加载使用和对比,让开发更自由(3)

torch.optim.Adam() 函数用法

Redis缓存穿透-热点缓存并发重建-缓存与数据库双写不一致-缓存雪崩
随机推荐
JMeter笔记3 | JMeter安装和环境说明
Analysis and Simulation of Short Circuit Fault in Power System Based on MATLAB
Error occurred while trying to proxy request The project suddenly can't get up
bert-base调试心得
【Cloud Store Announcement】Notice of Help Center Update on July 30
Promise入门到精通(1.5w字详解)
Excel导入和导出
报错500,“message“: “nested exception is org.apache.ibatis.binding.BindingException: 解决记录
(18)[系统调用]追踪系统调用(服务表)
Servo System of Hydraulic Steering Gear Based on Fuzzy PID
微信小程序picker滚动选择器使用详解
LeetCode167:有序数组两数之和
华为无线设备配置Mesh业务
Microsoft Office 2019 software download and installation detailed tutorial!
[HarekazeCTF2019] Avatar Uploader 1
un7.30:Linux——如何在docker容器中显示MySQL的中文字符?
升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等
万华化学精细化工创新产品大会
Research on intelligent charging strategy of matlab simulink lithium-ion battery
云厂商做生态需要“真连接、真赋能”,用“技术+真金实银”发展伙伴