• 数据库系统原理与应用教程(064)—— MySQL 练习题:操作题 51-61(八)


    数据库系统原理与应用教程(064)—— MySQL 练习题:操作题 51-61(八):查询条件的构造、通配符

    51、使用通配符构造查询条件(1)

    有数据表:Products,表中数据如下:

    prod_nameprod_desc
    a0011usb
    a0019iphone13
    b0019gucci t-shirts
    c0019gucci toy
    d0019lego toy

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含 toy 一词的产品名称。查询结果如下:

    prod_nameprod_desc
    c0019gucci toy
    d0019lego 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');
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解答:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    52、使用通配符构造查询条件(2)

    有数据表:Products,表中数据如下:

    prod_nameprod_desc
    a0011usb
    a0019iphone13
    b0019gucci t-shirts
    c0019gucci toy
    d0019lego toy

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现 toy 一词的产品,并且按 ”产品名称“ 对结果进行排序。查询结果如下:

    prod_nameprod_desc
    a0011usb
    a0019iphone13
    b0019gucci 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    53、使用通配符构造查询条件(3)

    有数据表:Products,表中数据如下:

    prod_nameprod_desc
    a0011usb
    a0019iphone13
    b0019gucci t-shirts
    c0019gucci toy
    d0019lego carrots toy

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中同时出现 toy 和 carrots 的产品。查询结果如下:

    prod_nameprod_desc
    d0019lego 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');
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解答:

    /*
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    54、使用通配符构造查询条件(4)

    有数据表:Products,表中数据如下:

    prod_nameprod_desc
    a0011usb
    a0019iphone13
    b0019gucci t-shirts
    c0019gucci toy
    d0019lego toy carrots

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),返回在描述中以先后顺序同时出现 toy 和 carrots 的产品。查询结果如下:

    prod_nameprod_desc
    d0019lego 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 ');
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解答:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    55、为列指定别名

    有数据表:Vendors(供应商信息),vend_id(供应商 id)、vend_name(供应商名称)、vend_address(供应商地址)、vend_city(供应商城市),表中数据如下:

    vend_idvend_namevend_addressvend_city
    a001tencent cloudaddress1shenzhen
    a002huawei cloudaddress2dongguan
    a003aliyun cloudaddress3hangzhou
    a003netease cloudaddress4guangzhou

    【问题】编写 SQL 语句,从 Vendors 表中检索 vend_id、vend_name、vend_address 和 vend_city,将 vend_name 重命名为 vname,将 vend_city 重命名为 vcity,将 vend_address 重命名为 vaddress,结果按供应商名称升序排序。查询结果如下:

    vend_idvnamevaddressvcity
    a003aliyun cloudaddress3hangzhou
    a002huawei cloudaddress2dongguan
    a003netease cloudaddress4guangzhou
    a001tencent cloudaddress1shenzhen

    表结构及数据如下:

     /*
     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');
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    解答:

    /*
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    56、查询计算列

    有数据表:Products,表中数据如下:

    prod_idprod_price
    a00119.49
    a0019600
    b00191000

    【问题】编写 SQL语句,从 Products 表中返回 prod_id、prod_price 和 sale_price。sale_price 是一个计算列,内容为 prod_price 列的 90%。查询结果如下:

    prod_idprod_pricesale_price
    a00119.498.541
    a0019600540
    b00191000900

    【示例解析】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);
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    解答:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    57、函数的使用(1)

    数据表:Customers,表中数据如下:

    cust_idcust_namecust_contactcust_city
    a1Andy LiAndy LiOak Park
    a2Ben LiuBen LiuOak Park
    a3Tony DaiTony DaiOak Park
    a4Tom ChenTom ChenOak Park
    a5An LiAn LiOak Park
    a6Lee ChenLee ChenOak Park
    a7Hex LiuHex LiuOak Park

    【问题】编写 SQL 语句,返回顾客 ID(cust_id)、顾客名称(cust_name)和登录名(user_login)。其中登录名全部为大写字母,并由顾客联系人的前两个字符(cust_contact)和其所在城市的前三个字符(cust_city)组成。查询结果如下:

    cust_idcust_nameuser_login
    a1Andy LiANOAK
    a2Ben LiuBEOAK
    a3Tony DaiTOOAK
    a4Tom ChenTOOAK
    a5An LiANOAK
    a6Lee ChenLEOAK
    a7Hex LiuHEOAK

    表结构及数据如下:

    /*
    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');
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    解答:

    /*
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    58、函数的使用(2)

    数据表:Orders(订单表),表中的数据如下:

    order_numorder_date
    a00012020-01-01 00:00:00
    a00022020-01-02 00:00:00
    a00032020-01-01 12:00:00
    a00042020-02-01 00:00:00
    a00052020-03-01 00:00:00

    【问题】编写 SQL 语句,返回 2020 年 1 月的所有订单的订单号(order_num)和订单日期(order_date),并按订单日期升序排序。查询结果如下:

    order_numorder_date
    a00012020-01-01 00:00:00
    a00032020-01-01 12:00:00
    a00022020-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');
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解答:

    /*
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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);
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    解答:

    mysql> select sum(quantity) items_ordered from OrderItems;
    +---------------+
    | items_ordered |
    +---------------+
    |         11128 |
    +---------------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    60、聚合函数的使用(2)

    数据表:OrderItems,表中数据如下:

    quantityprod_id
    10AR01
    100AR10
    1000BR01
    10001BR010

    【问题】编写 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');
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    解答:

    mysql> select sum(quantity) items_ordered from OrderItems where prod_id = 'BR01';
    +---------------+
    | items_ordered |
    +---------------+
    |          1000 |
    +---------------+
    1 row in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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);
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    解答:

    mysql> select max(prod_price) max_price from Products where prod_price <= 10;
    +-----------+
    | max_price |
    +-----------+
    |      9.49 |
    +-----------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    SpringCloud -Gateway
    VCP-DCV VMware vSphere,即将开课~想了解点击查看
    编译安装redis及配置多实例
    pythorch的numel()函数计算模型大小与现存占用
    了不起的爸爸
    高并发软件(网站,服务器端接口)的评价指标
    算法---判断子序列(Kotlin)
    1359:围成面积
    Python学习笔记之迭代器详解
    如何做校园圈子小程序,需要哪些功能?APP小程序H5公众号功能齐全,PHP书写,uniAPP。源码交付,支持二开!
  • 原文地址:https://blog.csdn.net/weixin_44377973/article/details/126034726