Back
Featured image of post SQL单表查询

SQL单表查询

SQL复习—单表

单表查询

简单CRUD

INSERT INTO 表名 (字段1,字段2,···,字段n) VALUES (1,2,···,n);

//同时插入多条数据,直接在后面加  ,(1,2,···,n)
DELETE FROM 表名 WHERE 过滤条件;
UPDATE 表名 SET 字段1 = 更新值;
SELECT 字段名···
FROM 表名
WHERE 过滤条件 ;

去重DISTINCT

SELECT DISTINCT department_id,salary
FROM employees;

GROUP BY分组

将结果集按指定字段进行分组

GROUP BY 位于: WHERE之后HAVING之前  (WHERE必须在FROM后面)

HAVING语句

//HAVING语句必须搭配GROUP BY使用

SELECT * FROM tb_name GROUP BY score HAVING count(*)>2

条件控制符

= > < <> IN(1,2,3......) BETWEEN a AND b NOT

AND OR

模糊查询Like()用法:  %  为匹配任意 ,    _  匹配一个字符(可以是汉字)

IS NULL 空值检测

SELECT结构

#方式1
SELECT ...,....,...
FROM ...,...,....
WHERE 多表的连接条件
AND 不包含组函数的过滤条件
GROUP BY ...,...
HAVING 包含组函数的过滤条件
ORDER BY ... ASC/DESC
LIMIT ...,...

#方式2
SELECT ...,....,...
FROM ... JOIN ...
ON 多表的连接条件
JOIN ...
ON ...
WHERE 不包含组函数的过滤条件
AND/OR 不包含组函数的过滤条件
GROUP BY ...,...
HAVING 包含组函数的过滤条件
ORDER BY ... ASC/DESC
LIMIT ...,...

#其中:
#1from:从哪些表中筛选
#2on:关联多表查询时,去除笛卡尔积
#3where:从表中筛选的条件
#4group by:分组依据
#5having:在统计结果中再次筛选
#6order by:排序
#7limit:分页

SELECT查询两个顺序

  1. 关键字的顺序不能颠倒:
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT...
  1. SELECT 语句的执行顺序(在 MySQL 和 Oracle 中,SELECT 执行顺序基本相同):
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT 的字段 -> DISTINCT -> ORDER BY -> LIMIT

image-20220419210854587

常用五大聚合函数

AVG() \ SUM() :只适用于 数值类型

SELECT AVG(salary): 求平均值
SELECT SUM(salary): 求和

MAX | MIN :适用于数值类型、字符串类型(比较 ACSII 值)、日期时间类型

MAX() 返回字段中的最大值

SELECT MAX(age) AS maxAge FROM Student;
---- age最大值

MIN() 返回字段中的最大值

SELECT MIN(age) AS minAge FROM Student;
---- age最小值

COUNT函数 计算表中有多少行记录

COUNT(*)
COUNT(1)
COUNT(具体字段): 不能计算null值,所以不一定对
推荐使用 COUNT(*)

注意: AVG(字段) = SUM(字段) / COUNT(字段)
即:AVG求平均值函数默认 不计算null值
  • 使用MyISAM存储引擎,COUNT(*) / COUNT(1) / COUNT(具体字段) ,效率相同,为O(1) (MyISAM每张数据表都有一个 meta信息 存储记录总数)
  • 使用InnoDB存储引擎,效率:COUNT(*) = COUNT(1) > COUNT(具体字段)

其他函数

LOWER(s) 将字符串 s 的所有字母变成小写字母

SELECT LOWER('RUNOOB');
---- 返回runoob

UPPER(s) 将字符串 s 的所有字母变成大写字母

SELECT UCASE('runoob');
---- 返回RUNOOB
承认自己的无知 , 乃是开启智慧的大门
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy