• 数据库SQL练习


    数据库模式由四个关系组成,这四个关系的模式是:
    Product(maker, model, type)
    PC(model, speed, ram, hd, price)
    Laptop(model, speed, ram, hd, screen, price)
    Printer(model, color, type, price)
    其中关系Product给出了各种产品的制造厂商maker,型号model,类型type(台式机,笔记本电脑或者打印机),这里简单假设所有产品的型号都惟一,而不管它是由哪个制造商生产的;

    关系PC对于不同型号给出了如下属性——处理器速度speed(单位GHz)、RAM容量ram(单位GB)、硬盘容量hd(单位TB);
    关系Laptop(笔记本电脑)除了显示器(screen)尺寸外,其他各属性与PC一致,

    关系Printer对于每种型号,有如下属性:是否彩色color(如果是,值为true)、处理类型type(激光、喷墨)、价格price。
    用SQL完成完成下列操作

    1) 找出所有打印机制造厂商;

    1. mysql> select maker
    2. -> from Product
    3. -> where type = 'printer';

    2) 找出速度在1.2以上的PC的制造商;

    1. mysql> select distinct maker
    2. -> from Product
    3. -> join PC on PC.model = Product.model
    4. -> where PC.speed > 1.2;

    3) 查询只卖笔记本电脑不卖PC的厂商;

    1. mysql> select distinct maker
    2. -> from Product P
    3. -> join Laptop L on P.model = L.model
    4. -> where maker not in (
    5. -> select maker
    6. -> from Product
    7. -> join PC on Product.model = PC.model
    8. -> );

    4) 找出售卖产品既包括笔记本、台式机、打印机的厂商;

    1. mysql> select distinct maker
    2. -> from Product
    3. -> where
    4. -> maker in (
    5. -> select maker
    6. -> from PC,Product
    7. -> where PC.model = Product.model
    8. -> ) and
    9. -> maker in (
    10. -> select maker
    11. -> from Laptop,Product
    12. -> where Laptop.model = Product.model
    13. -> ) and
    14. -> maker in (
    15. -> select maker
    16. -> from Printer,Product
    17. -> where Printer.model = Product.model
    18. -> ) ;

    5) 找出售卖产品涵盖市面所有打印机的厂商;

    1. mysql> select distinct maker
    2. -> from Product
    3. -> join Printer on Product.model = Printer.model
    4. -> group by maker
    5. -> having count(Product.model) = (
    6. -> select count(model)
    7. -> from Printer
    8. -> );

    6) 找出专售(只卖此款并且型号最全)彩色喷墨打印机的厂商;

    1.找出不生产其他(非彩色喷墨)打印机的厂家
    2.厂家group by分组,通过having查询出种类(彩色喷墨)齐全的厂家

    1. mysql> select distinct maker
    2. -> from (
    3. -> select distinct maker,Product.model as model
    4. -> from Product
    5. -> join Printer on Product.model = Printer.model
    6. -> where Printer.color = 'true' and Printer.type = 'inkjet'
    7. -> ) T1
    8. -> where maker not in(
    9. -> select distinct maker
    10. -> from Product
    11. -> join Printer on Product.model = Printer.model
    12. -> where Printer.color != 'true' or Printer.type != 'inkjet'
    13. -> )
    14. -> group by maker
    15. -> having count(model) = (
    16. -> select count(model)
    17. -> from printer
    18. -> where color = 'true' and type = 'inkjet'
    19. -> );

    7) 找出比任何一台PC机都慢的笔记本电脑;

    1. mysql> select distinct *
    2. -> from Laptop
    3. -> where Laptop.speed < all(
    4. -> select speed
    5. -> from PC
    6. -> );

    8)  找出最低价格的彩色打印机的制造商;

    1. mysql> select distinct maker
    2. -> from product
    3. -> where model in(
    4. -> select model
    5. -> from printer
    6. -> where price=(
    7. -> select min(price)
    8. -> from printer
    9. -> where color='true' and type='inkjet'
    10. -> )
    11. -> );

    9) 查询价格在6000以上的笔记本电脑的平均价格;

    需要利用子查询,直接用AVG(price)得出的是分组后,每组的平均值

    1. mysql> select AVG(price)
    2. -> from(
    3. -> select price
    4. -> from Laptop
    5. -> group by price
    6. -> having price > 6000
    7. -> ) T;

    10) 找出至少生产3种不同型号的PC的制造商及其最高销售价格;

    1. mysql> select maker,max(price)
    2. -> from Product
    3. -> join PC on PC.model = Product.model
    4. -> group by maker
    5. -> having count(*)>=3;

    11) 向数据库中插入如下信息:制造商C生产的型号为1100的笔记本电脑,速度为2.2,RAM为16,硬盘大小2,显示器12.5,售价为8499;

    1. insert into Product values('C','1100','laptop');
    2. insert into Laptop values('1100',2.2,16,2,12.5,8499);

    12) 厂商A收购了厂商B,将所有B生产的产品改为由A生产。

    1. update Product
    2. set maker = 'B'
    3. where maker = 'A';

  • 相关阅读:
    数据结构与算法之构建二叉搜索树
    类和对象(中上)
    爬虫初学篇——看完这些还怕自己入门不了?
    Linux—-vim基础使用
    电子抄表是什么?什么叫电子抄表?
    【BSP开发学习4】Linux 内核时间管理
    30.链表练习题(1)(王道2023数据结构2.3.7节1-15题)
    【无标题】
    大学校园安全如何保障?学到了视频监控的神技!
    Swift依赖注入:解锁代码解耦与测试的大门
  • 原文地址:https://blog.csdn.net/liangcha_xyy/article/details/134417632