天天看點

SQL查詢代碼解析第二篇

作者:憨妹子真會玩

SQL-38: SELECT Count(*) FROM 銷售表;

解析:傳回銷售表的行數

SQL-39: SELECT Count(distinct 店名) FROM 銷售表;

解析:傳回銷售表店名字段的去重個數

SQL-40: SELECT 店名,SUM(銷售額)

FROM 銷售表

WHERE 店名 IN(1,3,7)

GROUP BY 店名

ORDER BY 店名;

解析:查詢銷售表的店名是1、3、7的銷售額,并再按店名排序

SQL-41: SELECT 店号,MIN(銷售數量) AS 最小銷售量 FROM `銷售表` GROUP BY 店号;

解析:查詢銷售表裡每家店号的最小銷售額

SQL-42: SELECT 大類名,count(*) AS 商品數 FROM `商品表` GROUP BY 大類名;

解析: 查詢每個大類對應的商品個數

SQL-43: SELECT 小類名,COUNT(*) AS 商品個數 FROM `商品表` GROUP BY 小類名 HAVING COUNT(*)>2;

解析:查詢小類名的個數大于2的資料

SQL-44:SELECT 店号,MAX(銷售數量) AS 最大銷量

FROM `銷售表`

WHERE 日期 BETWEEN'2020-01-01' AND '2020-01-03'

GROUP BY 店号

HAVING 最大銷量>250;

解析:查詢日期在2020年1月1日到2020年1月3日裡每家店名最大銷量大于250的資料

SQL-45: SELECT 店号,SUM(銷售數量) AS 銷售總量 FROM 銷售表 GROUP BY 店号 ORDER BY 銷售總量 DESC LIMIT 3;

解析:查詢銷售表前三銷售額的店名

SQL-46: SELECT 姓名,國文 FROM `1班` UNION ALL SELECT 姓名,國文 FROM `2班`;

解析:将1班的姓名和國文字段與2班的姓名和國文字段合并

SQL-47: SELECT 姓名,國文,數學,英語 FROM `1班` UNION ALL SELECT 姓名,國文,NULL,英語 FROM `2班`;

解析:将1班和2班資料合并,由于二班沒有數學字段,就用為空

SQL-48: select * from 表1 inner join 表2 on 表1.字段名 = 表2.字段名;

解析:内連接配接

SQL-49: SELECT a.店号,店名,SUM(銷售數量) AS 銷售總量

FROM 銷售表 a

INNER JOIN 店鋪表 b

ON a.`店号`=b.`店号`

WHERE a.店号 in(1,3,7)

GROUP BY 店名;

解析:查詢店号為1.3.7的店名,銷售總數量

SQL-50: SELECT 日期,a.店号,店名,商品編碼,銷售數量

FROM 銷售表 a INNER JOIN 店鋪表 b ON b.店号=a.店号

WHERE 日期 BETWEEN '2020-01-01' and '2020-01-03' and 商品編碼 in('A001','B005') and a.店号 in(1,3,7);

解析:指定日期範圍、商品編碼範圍、店号範圍查詢銷售數量

SQL-51: SELECT a.*,b.*

FROM `銷售表` a LEFT JOIN `商品表` b ON a.商品編碼 = b.商品編碼;

解析:左連接配接

SQL-52: SELECT * FROM 表a LEFT JOIN 表b ON 表a.師傅編号 = 表b.序号

UNION

SELECT * FROM 表a RIGHT JOIN 表b ON 表a.師傅編号 = 表b.序号;

解析:全外連結,表a和表b的資訊都在

SQL-53: SELECT 日期,a.店号,店名,a.商品編碼,商品名稱,銷售數量,銷售數量*進價 AS 銷售成本,銷售數量*售價 AS 銷售金額,銷售數量*(售價-進價) AS 毛利額

FROM 銷售表 a

LEFT JOIN 店鋪表 b

ON a.店号=b.店号

LEFT JOIN 商品表 c

ON a.商品編碼=c.商品編碼

WHERE a.店号 IN (1,3,7) AND 日期 BETWEEN '2020-01-01' AND '2020-01-03'

解析:說明-店鋪表b有店号和店名字段;銷售表a有日期、店号、商品編碼、銷售數量字段;商品表c有商品編碼、商品名稱、大類編碼、大類名、小類編碼、小類名、機關、進價、售價字段。将abc三個表聯接并過濾出店号是1,3,7日期在指定範圍内

SQL-54: SELECT 店号,AVG(銷售數量) AS 平均銷量

FROM `銷售表`

GROUP BY 店号

HAVING AVG(銷售數量)>(SELECT AVG(銷售數量) AS 平均銷量 FROM `銷售表` WHERE 店号 in(3));

解析:查詢大于3号店平均銷售量的店鋪

SQL-55: SELECT 店号,AVG(銷售數量) AS 平均銷量

FROM `銷售表`

GROUP BY 店号

HAVING AVG(銷售數量)<( SELECT AVG(銷售數量) AS 平均銷量 FROM `銷售表`);

解析:查詢低于平均銷量的店鋪,屬于單行子查詢,即字查詢結果是一個值

SQL-56: SELECT 店号,AVG(銷售數量) AS 平均銷量

FROM `銷售表`

GROUP BY 店号

HAVING AVG(銷售數量) > (SELECT AVG(銷售數量) AS 平均銷量 FROM `銷售表` WHERE 店号 in(2)) AND AVG(銷售數量) < (SELECT AVG(銷售數量) AS 平均銷量 FROM `銷售表` WHERE 店号 in(7));

解析:查詢大于2号店的平均銷量,又小于7号店的平均銷量,的店鋪平均銷量,屬于單行子查詢,即子查詢結果是一個值,僅占一行

Tip:多行子查詢的操作符有in/not in/some/any/all;子查詢可以在select後面也可以在from後面的條件裡

SQL-57: INSERT INTO 銷售表(日期,店号,商品編碼,銷售數量)

VALUES('2001-09-11',110,'Z001',153);

解析:在銷售表裡添加一行資料,空值用null

SQL-58: INSERT INTO 銷售表

set 日期='2020-07-30',店号=100,商品編碼='X001',銷售數量=100;

解析:在銷售表裡添加一行資料,空值用null

SQL-59: update 商品表

set 機關='500g'

where 大類編碼 in(01,02);

解析:将商品表中,大類編碼是01和02的機關都改成500g

SQL-60: DELETE FROM 單表 WHERE 電話 LIKE '%4';

解析:删除單表中電話以4結尾的資料

SQL-61: truncate 表

解析:删除表的全部資料

SQL-62: show databases; #展示資料庫

Use 庫名; #進入庫

Show tables; #檢視目前庫裡的所有表

Show tables from 庫名; #檢視指定庫裡的所有表

Select database(); #檢視現在自己在什麼庫裡面

CREATE table 表名(列名 列類型,列名 列類型)

Desc 表名; #檢視表結構

Select version(); #檢視伺服器版本

繼續閱讀