目录
SELECT-FROM-WHERE/ORDER BY/ 模式
SELECT
SELECT ‘想要查询的列名’,‘想要查询的列名’
SELECT 后加*代表展示全部内容
SELECT * FROM `products` ;
DISTINCT
去重
SELECT
DISTINCT`firstName`,`jobTitle`
FROM `employees`
输出不重复的first Name和job Title,并且以first Name为主要的去重依据
注意,DISTINCT使用时只能把所有的待查找项放在DISTINCT后面,放在前面会报错的。
SELECT 后可加COUNT(*),
聚合函数
COUNT(*)代表计数,包括了所有的列,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL
COUNT(列名) 查找特定列,会忽略NULL 的值
WHERE中不能使用聚合函数COUNT
SELECT COUNT(*) FROM `products` ;
COUNT还可以和DISTINCT语句连用,表示返回列的不同值函数
SELECT COUNT(DISTINCT `lastName`)FROM `employees`
SELECT 后加MAX('列名'),代表某列的最大值,
SELECT MAX(`MSRP`) FROM `products`;
SELECT 后加MIN('列名'),代表某列的最小值
SELECT MIN(`buyPrice`) FROM `products`
SELECT 后加SUM('列名'),代表某列的总和
SELECT SUM(`quantityInStock`) FROM `products`;
SELECT 后加AVG('列名'),代表某列的平均值
SELECT AVG(`buyPrice`) FROM `products`;
以上五个可以同时使用,他们皆为聚合函数,(即输入多个数据,输出一个数据)
AS
将某个列设置一个别名打出来,
两个数字列可以进行运算
SELECT `productCode`,`productName`,
`quantityInStock`*`buyPrice` AS 'On-Hand Stock Value'
FROM products
FROM
FROM ’哪一个表(table)
WHERE
WHERE 限制条件,作用在列
WHERE中不能使用聚合函数COUNT
在WHERE中可以使用的关系运算符
AND
SELECT * FROM `products` WHERE 'price'>1000 AND 'num'>100;
OR
SELECT * FROM `products` WHERE 'price'>1000 OR 'num'>100;
运算符 | 关系 |
= | 相等 |
> | |
< | |
>= | |
<= | |
<> | 不相等 |
!= | 不相等 |
<>和!=会直接将NULL值排除在外
NULL
NULL表示字段的值为空,(和空字符串 ' ' 是不一样的),严格按照字面意思
来自力扣 584. 寻找用户推荐人
IS与=的区别
IS 通常以IS NULL 或者 IS NOT NULL出现用于判断是否为空值
= 通常用来判断两个值是否相等
LIKE
(模糊查找,%m,m%,%m%),含有
SELECT `productName` FROM `products` WHERE `productName` LIKE '%car'
%m 查找到以m结尾的语句 如 clam
m% 查找到以m开头的语句 如 mini
%m%查找到语句中间含有m的语句 如 immense
IN(精准查找)
找与括号里内容相等的,可以用来替代多个OR语句
SELECT `productName` FROM `products` WHERE `local` IN('CA','LA','NY')
输出products表里local为CA或local为LA或local为NY的producaName
BETWEEN AND(指定查找范围)
SELECT * FROM `products` WHERE 'price' BETWEEN 1000 AND 2000;
GROUP BY
就是合并行
SELECT `Number`
FROM `customers`
GROUP BY `Number
以上代码的意思是以Number为分类依据输出sales
SELECT `country`,AVG(`creditLimit`)
FROM `customers`
WHERE `country` IN ('Spain','Canada','France')
GROUP BY 'country'
查找country` =='Spain'或country` =='Canada'或country` =='France'的值并且以country分组输出country和credit Limit平均值
where与group by 混用
对where查找到的结果进行分组
HAVING
基于分组的结果来限制输出就是用having语句
HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似
having用法详解(引用自having用法详解)
SELECT productVendor
FROM `products`
GROUP BY productVendor
HAVING COUNT( productVendor)>8
按product Vendor分组之后筛选出product Vendor数目>8的并输出
力扣练习题 596. 超过5名学生的课
利用GROUP BY 和 HAVING 语句去筛选,进一步的理解GROUP BY 指的是将数据按一个标准分组,HAVING 是对分组后的结果进行限制
SELECT CLASS
FROM courses
GROUP BY CLASS
HAVING COUNT(DISTINCT student) >= 5
#DISTINCT 用于去重
ORDER BY
排序,等级同SELECT FROM WHERE
SELECT `lastName` FROM `employees` ORDER BY `lastName`
可以有多个排序标准,第一个为主要依据,在第一个相同的情况下以第二个排序标准,以此类推
SELECT `lastName`,`firstName` FROM `employees` ORDER BY `lastName`,`firstName`
默认皆是升序,若想要倒序则加入
SELECT `lastName` FROM `employees` ORDER BY `lastName` DESC