目录
一、基础查询
语法:SELECT ( DISTINCT)查询列表
FROM 表名
特点:1、查询列表:可以单个列表、多个列表、常量值、表达式、函数等
2、查询的结果是以一个表格的形式呈现的
补充:起别名:AS 新名字 或者 空格 新名字
去重:DISTINCT:返回唯一不同的值
二、条件查询
语法:SELECT 查询列表
FROM 表名
WHERE 筛选条件
1、按条件运算符筛选
>、 <、 =、 !=、 >=、<=
2、按逻辑表达式筛选
&&(与,and)、||(或,or)、!(非,not)
3、模糊查询
like:多和通配符%使用
between 值1 and 值2:表示在值1到值2的范围内
is null:表示空值
is not null:表示非空
In():在in(value1,value2,.....)中选取任意一个值
三、排序查询
语法:SELECT 查询列表
FROM 表名
【WHERE 筛选条件】
ORDER BY 排序列表(ASC(升序)/DESC(降序))
如果不写默认降序
补充:limit i,n(我在牛客网做题时用到的,补充到我的笔记里,在分页查询中介绍)
i:为查询结果的索引值(默认从0开始),当i=0可以省略
n:为查询结果返回的数量
四、常见函数
1、根据参数作用行数的不同,可以分为
单行函数:输入一行,输出也还是一行,检索一行处理一次;
多行函数:输入多行数据,输出是一个结果,检索出来的数据分成组后在进行处理
2、根据参数类型不同,可以分为
字符型函数:是专门用于字符处理的函数,处理的对象可以是字符或字符串常量,也可以是字符类型的列。
CONCAT(S1,S2):将字符串S2连接到字符S1的后面,若S1为NULL,则返回S2;若S2为NULL,则返回S1;若S1和S2都为空则返回NULL。
LENGTH(S):返回字符串S的长度;若S为NULL,则返回值为NULL。
LOWER(S):返回字符串S的小写形式
UPPER(S):返回字符串S的大写形式
TRIM(S1,S2):删除字符串S1左右两端字符串S2
REPLACE(S1,S2,[S3]):使用S3字符串替换出现在S1字符串中的所有S2字符串,并返回替换后的新字符串;S2的默认值为空字符串
SUBSTR(S,I,[J]):从字符串的第I个位置开始截取长度为J的子字符串,若省略J,则直接截取到尾部
数字类函数:主要用于执行各种数据计算,所有的数字类函数都有数字参数并返回数字值
ABS(N):返回N的绝对值
CEIL(N):返回大于或等于数值N的最小整数
COS(N):返回N的余弦值,N为弧度
EXP(N):返回e的N次幂
FLORR(N):返回大于或等于N的最大整数
LOG(N1,N2):返回以N1为底N2的对数
POWER(N1,N2):返回N1的N2次方
POUND(N1,N2):返回舍入小数点右边N2位的N1的值,N2的默认值为0,这会返回小数点最接近的整数;如果N2为负数,就舍入到小数点左边相应的位上,N2必须为整数
SIGN(N):若N为负数,返回-1,若N为正数,则返回1,若N=0,则返回0
SIN(N):返回N的正弦值,N为弧度
ROUND(N):对N值四舍五入
MOD(A,B):取余:A-A/B*B
FLOOR(N):向下取整,返回<=该参数的最大整数
聚合类函数:用于对一组数据进行计算,并得到相应的结果
AVG(X):计算选择列表项X的平均值
COUNT(X):返回查询结果中的记录数
MAX(X):返回选择列表项目X中的最大值
MIN(X):返回选择列表项目X中的最小值
SUM(X):返回选择列表项目X的数值总和
VARIANCE(X):返回选择列表项目X的统计方差
STDDEV(X):返回选择列表项目X的标准偏差
日期函数
NOW():返回当前系统日期和时间
CURDATE():返回当前系统日期,不包含时间
CURTIME():返回当前系统时间,不包含日期
STR_TO_DATE():将字符通过指定的格式转换成日期
例子:STR_TO_DATE("1998-05-11",“%Y-%M-%D”)
DATE_FORMAT():将日期转换成字符
例子:DATE_FORMAT("1998/05/11",“%Y年%M月%D日”)
DATEDIFF(A,B):返回A和B两者之间的时间
五、分组查询
语法:SELECT 分组函数, 分组的列表(出现在GROUP BY后面)
FROM 表名
【WHERE 筛选条件】
GROUP BY 分组的列表
HAVING 某个条件(一般是数据函数居多吧)
【ORDER BY 排序列表(ASC(升序)/DESC(降序))】
补充:从我个人的角度发现就是如果要用分组查询的话,一般出现每个等相关字样,大概意思就是多个吧(如有说错欢迎补充)
六、连接查询(SQL 99标准)
语法:SELECT 分组函数, 分组的列表(出现在GROUP BY后面)
FROM 表1
【连接类型】 JOIN 表2
ON 连接条件
【WHERE 筛选条件】
【GROUP BY 分组的列表】
【HAVING 某个条件(一般是数据函数居多吧)】
【ORDER BY 排序列表(ASC(升序)/DESC(降序))】
连接类型分类
1、内连接:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
语法:SELECT 分组函数, 分组的列表(出现在GROUP BY后面)
FROM 表1
INNER JOIN 表2
ON 连接条件
【WHERE 筛选条件】
【GROUP BY 分组的列表】
【HAVING 某个条件(一般是数据函数居多吧)】
【ORDER BY 排序列表(ASC(升序)/DESC(降序))】
内连接分三种:
(1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
(2)不等值连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!、&&、 ||;和<>。
(3)自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
2、外连接:outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。(百度百科)
语法:SELECT 分组函数, 分组的列表(出现在GROUP BY后面)
FROM 表1
LEFT/RIGHT/FULL (OUTER) JOIN 表2
ON 连接条件
【WHERE 筛选条件】
【GROUP BY 分组的列表】
【HAVING 某个条件(一般是数据函数居多吧)】
【ORDER BY 排序列表(ASC(升序)/DESC(降序))】
左外连接:左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
右外连接:右向外联接的结果集包括 RIGHT OUTER子句中指定的右表的所有行,而不仅仅是联接列所匹配的行。如果右表的某行在左表中没有匹配行,则在相关联的结果集行中左表的所有选择列表列均为空值。
全外连接:完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
3、交叉连接:交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
七、子查询
含义:子查询,也称为嵌套查询或子选择,是SELECT嵌入在另一个SQL查询的 WHERE 或 HAVING子句中的查询。子查询返回的数据由外部语句使用,与使用文字值的方式相同。
八、分页查询
应用场景:当要显示的数据,一页显示不全,需要分页提交SQL请求
语法: SELECT 分组函数, 分组的列表(出现在GROUP BY后面)
FROM 表1
[LEFT/RIGHT/FULL (OUTER) JOIN 表2]
ON 连接条件
【WHERE 筛选条件】
【GROUP BY 分组的列表】
【HAVING 某个条件(一般是数据函数居多吧)】
【ORDER BY 排序列表(ASC(升序)/DESC(降序))】
LIMIT I,N
I:为查询结果的索引值(默认从0开始),当i=0可以省略
N:为查询结果返回的数量
九、union联合查询
含义:将多条查询语句结果合并成一个结果
特点:1、要求多条查询语句的查询列数是一致的;
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字默认去重,如果使用union all 可以包含重复项
语法:
查询语句1
UNION
查询语句2
UNION
...
应用场景:要查询的结果来自多个表,且多个表没有直接的连接冠希,但查询的信息一致时。
内连接部分内容来源:https://zhidao.baidu.com/question/1643304616319682180.html
外连接部分内容来源:https://blog.csdn.net/qq_36583194/article/details/83788829
常见函数(如需要网上查询)来源:https://blog.csdn.net/qq_43971504/article/details/103605281