SELECT语句基础
1、从表中选取符合条件的数据
语法:
SELECT <列名>,……
FROM <表名>
WHERE <条件表达式>;
例:
SELECT product_name #其中*代表全部列的意思,设定汉语别名的时候需要使用双引号
FROM product
WHERE product_type = '衣服';
-- 使用DISTINCT删除product_type列中重复的数据
SELECT DISTINCT product_type
FROM product;
2、从表中选取数据并进行运算
= 相等;<>不相等;>=大于等于;<=小于等于
例:
SELECT product_name,sale_price,sale_price * 2 AS "sale_price x2"
FROM product;
WHERE sale_price>= 500;
SELECT product_name,purchase_price
FROM product
WHERE purchase_price IS NULL;/WHERE purchase_price IS NOT NULL;
3、逻辑运算符
NOT运算符
SELECT product_name,product_type,sale_price
FROM product
WHERE NOT sale_price >= 1000;
AND/OR运算符
AND运算符为取交集
OR取并集
例:AND的运算优先于OR,想要优先执行OR运算,可以使用括号:
SELECT product_name, product_type, regist_date
FROM product
WHERE product_type = '办公用品'
AND ( regist_date = '2009-09-11'
OR regist_date = '2009-09-20');
练习题一
2.1
SELECT product name,regist_date
FROM product
WHERE regist>=‘2009-4-28’
2.2
1、返回所有purchase_price为空的行
2、返回所有这个非空的行
3、返回所有非空的行
2.3
SELECT product_name
FROM product
WHERE saleprice-purchase price>500
2.4
SELECT product_name,product_type,0.9*saleprice-purchase price AS profit
FROM product
WHERE 0.9*saleprice-purchase price>100 AND(product_type="办公用品" OR product_type="厨房用具")
2.4 对表进行聚合查询
聚合函数
COUNT:计算表中的记录数(行数)
SUM:计算表中数值列中数据的合计值
AVG:计算表中数值列中数据的平均值
MAX:求出表中任意列中数据的最大值
MIN:求出表中任意列中数据的最小值
例:
SELECT COUNT(purchase_price)
FROM product;
聚合函数删除重复值
- 计算去除重复数据后的数据行数
SELECT COUNT(DISTINCTproduct_type)
FROM product;
2.5 对表进行分组
GROUP BY 语句
SELECT <列名1>,<列名2>, <列名3>, ……
FROM <表名>
GROUP BY <列名1>, <列名2>, <列名3>, ……;
-- 按照商品种类统计数据行数
SELECT product_type, COUNT(*)
FROM product
GROUP BY product_type;
HAVING分组后过滤
SELECT product_type, COUNT(*)
FROM product
GROUP BY product_type
HAVINGCOUNT(*) = 2;#可以使用数字、聚合函数和GROUP BY当中特定列明
2.6对查询结果排序
ORDER BY
SELECT <列名1>, <列名2>, <列名3>, ……
FROM <表名>
ORDER BY <排序基准列1>, <排序基准列2>, ……
例:
默认为升序排列,降序排列为DESC
SELECT product_id, product_name, sale_price, purchase_price
FROM product
ORDER BY sale_price DESC;
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
练习题第二部分
2.5 改为
SELECT product id,SUM(product id)
FROM product
WHERE regist_date>'2009-09-01'
GROUP BY product_type
2.6
SELECT product type,SUM(product type)
FROM product
WHERE1.5*SUM(sale_price)=SUM(purchase price)
2.7
ORDER BY regist_date