第一部分 SQL查询语句的学习
单表查询
--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值
SELECT d.`订单ID`,d.`客户ID`,d.`雇员ID`,d.`订购日期` FROM `订单` d WHERE d.`订购日期` BETWEEN '1996-07-04 00:00:00' AND '1996-07-15 00:00:00'
ORDER BY `订购日期`
--查询供应商的ID、公司名称、地区、城市和电话字段的值。条件是“地区等于华北”并且“联系人头衔等于销售代表”。
SELECT g.`供应商ID`,g.`公司名称`,g.`地区`,g.`城市`,g.`电话` FROM `供应商` g WHERE `地区` = '华北' AND `联系人职务` = '销售代表'
--查询供应商的ID、公司名称、地区、城市和电话字段的值。其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津
SELECT g.`供应商ID`,g.`公司名称`,g.`地区`,g.`城市`,g.`电话` FROM `供应商` g WHERE `地区` in ('华南','华东') OR `城市` = '天津'
--查询位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值
SELECT g.`供应商ID`,g.`公司名称`,g.`地区`,g.`城市`,g.`电话` FROM `供应商` g WHERE `地区` in ('华南','华东')
多表查询
--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单 ID”的降序排列
SELECT
d.`订购日期`,
d.`订单ID`,
k.`公司名称`,
g.`姓氏`,
g.`名字`
FROM
`订单` d,
`客户` k,
`雇员` g
WHERE
d.`客户ID` = k.`客户ID`
AND d.`雇员ID` = g.`雇员ID`
AND d.`订购日期` BETWEEN '1996-07-01'
AND '1996-07-15'
ORDER BY g.`姓氏` ,g.`名字`,d.`订单ID` DESC
--查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称
SELECT
d.`订单ID`,
y.`公司名称`,
c.`产品名称`
FROM
`订单` d,
`运货商` y,
`产品` c,
`订单明细` m
WHERE
d.`运货商` = y.`运货商ID`
AND d.`订单ID` = m.`订单ID`
AND m.`产品ID` = c.`产品ID`
AND d.`运货商` = y.`运货商ID`
AND d.`订单ID` IN ('10248', '10254')
--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣
SELECT
d.`订单ID`,
c.`产品名称`,
m.`单价`,
m.`折扣`,
m.`数量`
FROM
`订单` d,
`运货商` y,
`产品` c,
`订单明细` m
WHERE
d.`运货商` = y.`运货商ID`
AND d.`订单ID` = m.`订单ID`
AND m.`产品ID` = c.`产品ID`
AND d.`运货商` = y.`运货商ID`
AND d.`订单ID` IN ('10248', '10254')
--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售金额
SELECT
d.`订单ID`,
c.`产品名称`,
m.`单价`*m.`数量` AS 销售金额
FROM
`订单` d,
`运货商` y,
`产品` c,
`订单明细` m
WHERE
d.`运货商` = y.`运货商ID`
AND d.`订单ID` = m.`订单ID`
AND m.`产品ID` = c.`产品ID`
AND d.`运货商` = y.`运货商ID`
AND d.`订单ID` IN ('10248', '10254')
综合查询
--查询所有运货商的公司名称和电话
SELECT * FROM `运货商`
--查询所有客户的公司名称、电话、传真、地址、联系人姓名和联系人头衔
SELECT k.`公司名称`,k.`电话`,k.`传真`,k.`地址`,k.`联系人姓名`,k.`联系人职务` FROM `客户` k
--查询单价介于10至30元的所有产品的产品ID、产品名称和库存量
SELECT c.`产品ID`,c.`产品名称`, c.`库存量` FROM `产品` c WHERE c.`单价` BETWEEN 10 AND 30
--查询单价大于20元的所有产品的产品名称、单价以及供应商的公司名称、电话
SELECT
c.`产品名称`,
c.`单价`,
g.`公司名称`,
g.`电话`
FROM
`产品` c,
`供应商` g
WHERE
c.`供应商ID` = g.`供应商ID`
AND c.`单价` > 20
--查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量
SELECT
d.`订单ID`,
c.`产品名称`,
m.`数量`
FROM
`客户` k,
`订单` d,
`产品` c,
`订单明细` m
WHERE
k.`客户ID` = d.`客户ID`
AND d.`订单ID` = m.`订单ID`
AND m.`产品ID` = c.`产品ID`
AND k.`城市` IN ('上海', '北京')
AND YEAR (订购日期) = 1996
--查询华北客户的每份订单的订单ID、产品名称和销售金额
SELECT
d.`订单ID`,
c.`产品名称`,
m.`单价` * m.`数量`*(1-m.`折扣`) AS 销售金额
FROM
客户 k,
`订单` d,
`产品` c,
`订单明细` m
WHERE
k.`客户ID` = d.`客户ID`
AND d.`订单ID` = m.`订单ID`
AND m.`产品ID` = c.`产品ID`
AND k.`地区` = '华北'
--按运货商公司名称,统计1997年由各个运货商承运的订单的总数量
SELECT
y.`公司名称`,
COUNT(*) 总数量
FROM
`运货商` y,
`订单` d
WHERE
y.`运货商ID` = d.`运货商`
AND YEAR (发货日期) = 1997
GROUP BY
y.`公司名称`
--统计1997年上半年的每份订单上所订购的产品的总数量
SELECT
d.`订单ID`,
SUM(数量) AS 总数量
FROM
`订单` d,
`订单明细` m
WHERE
d.`订单ID` = m.`订单ID`
AND 订购日期 BETWEEN '1997-01-01'
AND '1997-06-30'
GROUP BY
d.`订单ID`
--统计各类产品的平均价格
SELECT
c.`产品ID`,
l.`类别名称`,
SUM(c.`单价` * c.`库存量`) / SUM(c.`库存量`) AS 平均值
FROM
`产品` c,
`类别` l
WHERE
c.`类别ID` = l.`类别ID`
GROUP BY
l.`类别名称`
--统计各地区客户的总数量
SELECT
k.`客户ID`,
k.`地区`,
COUNT(`客户ID`) 地区
FROM
`客户` k
GROUP BY
k.`地区`