SQL和excle对比
学习目标
单表查询
项目背景
SQL 练习环境 SQL Online Compiler - Next gen SQL Editor
商品信息表:https://study-zhibo.oss-cn-shanghai.aliyuncs.com/test/%E5%95%86%E5%93%81%E4%BF%A1%E6%81%AF%E8%A1%A8.csv
订单明细表:https://study-zhibo.oss-cn-shanghai.aliyuncs.com/test/%E8%AE%A2%E5%8D%95%E6%98%8E%E7%BB%86%E8%A1%A8.csv
点击连接MariaDB(属于mysql的变种)
点击import将两个表导入sql练习环境中
注意更改命名和更改column name
在空白区域输入以下代码
SELECT *
FROM test2
WHERE sku_name = '香蕉'
;
然后点击旁边的run按钮(或者按shift+enter)
SQL语句解释
-
SELECT *
:表示选择表中的所有列。 -
FROM test2
:指定从表test2
中查询数据。这里test2是我在导入到sql里面的时候我将订单明细表中将他命名为test2,根据你实际的来 -
WHERE sku_name = '香蕉'
:表示筛选条件,只返回sku_name
列值为“香蕉”的记录。 -
;
:表示SQL语句的结束。
AS重命名字段名
注意:字段名重命名是在执行完代码后才重命名的,所以where查询的时候需要使用原字段名
OR和AND语句
查询嵌套
先进行第一个查询,然后将查询结果重命名为字段,再到对应的字段进行查询由此完成嵌套的子表查询
来道思考题验证一下前面学习的内容吧
我们来将需求实现步骤拆解一下
1.首先是要查询商品订单表
select
sku code as 商品编码,
sku name AS 商品名称,
price AS 价格,
origin_country AS 原产国
from test2 #改成你自己的文件名
;
2.查询张三相关的信息
select
sku code as 商品编码,
sku name AS 商品名称,
price AS 价格,
origin_country AS 原产国
from test1 #改成你自己的文件名
where buyer_name ='张三'#找出所有购买者是张三的数据
;
3.有张三买过的商品的信息作为一个子表
select sku code
from order detail
where buyer_name ='张三'
;
3.将子表作为筛选条件反向筛选出张三没买过的商品的信息输出
select
sku code as 商品编码,
sku name AS 商品名称,
price AS 价格,
origin_country AS 原产国
from test1 #改成你自己的文件名
where sku code not in(
select sku code
from order detail
where buyer_name ='张三')
;