SQL经典练习:电脑商店

news/2025/1/15 18:06:37/

表结构

本文使用的表结构如下:
schema
以下是创建表的语句:

-- 厂商表
CREATE TABLE Manufacturers (Code INTEGER NOT NULL PRIMARY KEY, -- 编号,主键Name VARCHAR(255) NOT NULL, -- 名称
);-- 产品表
CREATE TABLE Products (Code INTEGER NOT NULL PRIMARY KEY, -- 编号,主键Name VARCHAR(255) NOT NULL, -- 名称Price DECIMAL NOT NULL, -- 价格Manufacturer INTEGER NOT NULL, -- 厂商编号FOREIGN KEY (Manufacturer) REFERENCES Manufacturers(Code) -- 外键,引用厂商表
);-- 测试数据
INSERT INTO Manufacturers(Code,Name) 
VALUES (1,'Sony'),(2,'Creative Labs'),(3,'Hewlett-Packard'),(4,'Iomega'),(5,'Fujitsu'),(6,'Winchester');INSERT INTO Products(Code,Name,Price,Manufacturer) 
VALUES (1,'Hard drive',240,5),(2,'Memory',120,6),(3,'ZIP drive',150,4),(4,'Floppy disk',5,6),(5,'Monitor',240,1),(6,'DVD drive',180,2),(7,'CD drive',90,2),(8,'Printer',270,3),(9,'Toner cartridge',66,3),(10,'DVD burner',180,2);

练习题

查看全部产品的名称

SELECT Name FROM Products;

查看全部产品的名称和价格

SELECT Name, Price FROM Products;

查看价格小于等于 200 的产品名称

SELECT Name FROM Products WHERE Price <= 200;

查看价格位于 60 到 120 之间的产品

/* 使用 AND 运算符*/
SELECT * FROM Products
WHERE Price >= 60 AND Price <= 120;/* 使用 BETWEEN 运算符*/
SELECT * FROM Products
WHERE Price BETWEEN 60 AND 120;

查看全部产品的名称和价格,价格以分为单位显示

SELECT Name, Price * 100 AS PriceCents FROM Products;

计算全部产品的平均价格

SELECT AVG(Price) FROM Products;

计算厂商编号为 2 的所有产品的平均价格

SELECT AVG(Price) FROM Products WHERE Manufacturer=2;

统计价格大于等于 180 的产品数量

SELECT COUNT(*) FROM Products WHERE Price >= 180;

查看价格大于等于 180 的产品名称和价格,按照价格降序、名称升序排序

SELECT Name, Price 
FROM Products
WHERE Price >= 180
ORDER BY Price DESC, Name;

查看全部产品以及它们的厂商信息

SELECT * FROM Products, Manufacturers
WHERE Products.Manufacturer = Manufacturers.Code;

查看全部产品的名称、价格以及厂商的名称

SELECT Products.Name, Price, Manufacturers.Name
FROM Products 
JOIN Manufacturers
ON Products.Manufacturer = Manufacturers.Code;

统计每个厂商的平均产品价格,显示厂商编号

SELECT AVG(Price), Manufacturer
FROM Products
GROUP BY Manufacturer;

统计每个厂商的平均产品价格,显示厂商名称

SELECT AVG(Price), Manufacturers.Name
FROM Products 
JOIN Manufacturers
ON Products.Manufacturer = Manufacturers.Code
GROUP BY Manufacturers.Name;

查看平均产品价格大于等于 150 的厂商名称

SELECT AVG(Price), Manufacturers.Name
FROM Products 
JOIN Manufacturers
ON Products.Manufacturer = Manufacturers.Code
GROUP BY Manufacturers.Name
HAVING AVG(Price) >= 150;

查看最便宜的产品名称和价格

SELECT Name, Price
FROM Products
ORDER BY price ASC
LIMIT 1;/* 如果存在多个最便宜的产品,嵌套子查询可以返回多条记录 */
SELECT Name, Price
FROM Products
WHERE Price = (SELECT MIN(Price) FROM Products);

查看每个厂商及其最昂贵的产品名称和价格

SELECT A.Name, A.Price, F.Name
FROM Products A 
JOIN Manufacturers F
ON A.Manufacturer = F.Code
AND A.Price =(SELECT MAX(A.Price)FROM Products AWHERE A.Manufacturer = F.Code);

查看平均产品价格大于 145 并且至少生产 2 种产品的厂商名称

SELECT m.Name, Avg(p.price) AS p_price, COUNT(p.Manufacturer) AS m_count
FROM Manufacturers m, Products p
WHERE p.Manufacturer = m.code
GROUP BY m.Name
HAVING Avg(p.price) >= 150 AND COUNT(p.Manufacturer) >= 2;

增加一个新的产品

新产品的信息如下:名称为 Loudspeakers,价格为 70,厂商编号为 2。

 INSERT INTO Products( Code, Name , Price , Manufacturer)VALUES ( 11, 'Loudspeakers' , 70 , 2 );

将编号为 8 的产品更名为“Laser Printer”

UPDATE Products
SET Name = 'Laser Printer'
WHERE Code = 8;

将全部产品打九折

UPDATE Products
SET Price = Price - (Price * 0.1);

将价格大于等于 120 的产品打九折

UPDATE Products
SET Price = Price - (Price * 0.1)
WHERE Price >= 120;

http://www.ppmy.cn/news/7373.html

相关文章

Java8 Stream详细用法介绍

Java8 Stream详细用法介绍一、Stream概述1.1、流的定义1.2、流与集合1.3、流的特性1.4、Stream的创建1.5、Stream操作分类二、Stream API 使用2.1 中间操作2.1.1、filter() 过滤2.1.2、map与flatMap 映射2.1.3、sorted() 排序2.2 终止操作2.2.1、forEach() 遍历2.2.2、collect(…

Netty面试题大全

Netty面试题大全 目录 文档索引 面试题汇总 Q&#xff1a;Netty是什么&#xff1f;为什么需要Netty&#xff1f; Q&#xff1a;Netty为什么性能高? Q&#xff1a;Netty有哪些组件&#xff1f; Q&#xff1a;Netty如何解决半包读写问题&#xff1f; Q&#xff1a;Netty如…

ESP8266 WIFI模块的使用

ESP8266 wiFI 可以用作连接周边的无线设备&#xff0c;也可以作为发送器供其他设备连接通常在产品中&#xff0c;我们经常用作无线的接收使用&#xff0c;也可能会用作在线升级使用等。 说点题外话&#xff1a;虽然在线升级已经较为成熟&#xff0c;但我不推荐在一些重要的产品…

C# 并行编程

一 并行任务库TPL 1 并行任务库&#xff08;TPL&#xff0c;Task Parallel Library&#xff09; 2 最重要的是Task类&#xff0c;还有Parallel类 3 Task类&#xff0c;是利用线程池来进行任务的执行 比如直接用ThreadPool更优化&#xff0c;而且编程更方便 4 Paallel类&…

[01] 两整数之和

371 两整数之和题目给你两个整数 a 和 b &#xff0c;不使用 运算符 和 - ​​​​​​​&#xff0c;计算并返回两整数之和。题解思路魔鬼细节细节一解析细节二解析细节三解析细节四解析代码循环写法递归写法参考题解题目 给你两个整数 a 和 b &#xff0c;不使用 运算符 和…

Python爬虫进行正则数据解析实战

今天继续给大家介绍Python爬虫相关知识&#xff0c;本文主要内容是Python爬虫进行正则数据解析实战。 一、需求分析 今天&#xff0c;我们尝试使用re正则表达式来对爬取到的页面进行数据解析。需求如下&#xff1a; 针对网页&#xff1a;https://blog.csdn.net/weixin_402282…

不懂PO 设计模式?这篇实战文带你搞定 PO

1080442 73.1 KB 为UI页面写测试用例时&#xff08;比如web页面&#xff0c;移动端页面&#xff09;&#xff0c;测试用例会存在大量元素和操作细节。当UI变化时&#xff0c;测试用例也要跟着变化&#xff0c; PageObject 很好的解决了这个问题&#xff01; 使用UI自动化测试工…

python:什么?你听MP3居然还要付费?看我一键......

前言 大家早好、午好、晚好吖 ❤ ~ 在我们上班空闲\游玩\散步的时候,总会习惯的拿出手机放首音乐来听一听 但是吧,有时候我们听一首歌起劲的时候,它会你提醒你 这时候怎么办呢&#xff1f;通常我们是下一首&#xff0c;或者充值 但是手头不宽裕但又想听怎么办&#xff1f; …