-
SQL(Structured Query Language 结构化查询语句),主要用于设计、创建、管理关系型数据库。
-
关系型数据库,类似于二维表,有每行每列组成,规整且易于维护,可以理解为sql语句代替了excel中的图形化命令,常见关系型数据库如SQL Server、Mysql、ORACLE、PostgreSQL等等,但灵活度较低
-
非关系型数据库存储结构不固定,每个元组可以有不一样的字段,速度快,成本低,灵活度高但查询复杂度较
-
-
SQL简单查询
-
SQL简单查询关键词
-
SQL查询基本框架
-


-
有了关键词和基本框架 ,就可以组成最基本的sql语句了
查询所有数据👇
select * from 表名;
查询某一列数据👇
select 列名 from 表名;
查询指定多列内容👇
select 列名1,列名2 from 表名;
比如查询成绩信息👇
select name.math from score;
-
去重(distinct),将语句执行后去除重复的数据
格式👇
select distinct 列名 from 表名;
-
排序(order by),对一列或多列进行排序,默认是升序(asc)
格式👇
select 列名 from 表名 order by 列名1,列名2 asc/desc; (desc表示降序排列)
-
限制结果(limit),可限制查询行数
格式👇
#返回表的前N行
select 列名 from 表名 limit n ;
#返回表的特定行
select 列名 from 表名 limit n,m ;(从n+1行开始,返回m行)
-
过滤查询(where),为查询语句增加过滤条件
格式👇
select * from 表名 where 条件语句;
条件语句包括以下







-
别名(as),用于为表或表中的列提供临时名称,具有可读性,但只存在于查询期间
格式👇
select 列名 as 别名 from 表名

sql复杂查询
-
计算字段,字段之间可以进行加减乘除运算

-
拼接字段(concat),可以将多个字段凭借起来,即将多个字符串连接成一个字符串

-
文本处理(字符串函数),通过各种函数,对数据进行选择

-
日期处理(时间函数)


-
聚合,SQL中提供的聚合函数可以用来统计、求和


-
分组(group by),可对数据进行分组,HAVING可对分组后的数据进行过滤,但SQL效率会降低

-
case when,实现对定量数据的定行描述\


针对NULL值应单独解决,否则容易出现BUG

-
视图(view),视图不是关键词,是基于sql语句的结果形成的可视化表,同样包含行和列,和真实表相近


嵌套查询
-
子查询,将一个查询语句包含在另一个查询语句中,而且子查询可嵌套在各个位置,但主要还是在select,where,having之后

-
关联子查询,对于外部查询返回的每一行数据,内部查询都要执行一次。在关联子查询中信息流是双向的。外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回他的记录,然后,外部查询根据返回的记录做出决策。

多表查询
-
内连接(inner join),仅将两个表中满足连接条件的行组合起来作为结果集,且在内连接中,只有两个表中匹配的行才能在结果集中出现



-
坐外连接(left join),以左表为基准,在内连接的基础上,包含坐标中所有不符合条件的数据行,并在其中的右表列填写NULL


-
右外连接(right join),以右表为基准,在内连接的基础上,包含坐标中所有不符合条件的数据行,并在其中的左表列填写NULL


-
全连接(full join),在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL



-
联合查询(union),可实现对多个select语句的同时查询,并将查询结果作为单个结果集返回。关键词“union”可对结果集进行去重,“union all”不能对结果集进行去重。
-
-
交叉连接(corss join),将两个表的交叉连接,返回左表中的所有行,左表中的每一行与右表中的所有行组合,即这两个表所有数据行的笛卡儿积


欢迎大家前来交流!