SQL语句 笔记

column 列 row 行

Structured Query Language结构化查询语言 relationship database


Select 字段1, 字段2, 字段3 from 表名 where 字段 条件

Select * from table where 1; *代表所有, where 1表示没有条件。


一、数字条件查询(where)

Select * from table where 字段 = 1;

Operator SQL Example 解释
!=, < <=, > >=, 字段 != 4 等于, 大于,小于
between...and... 字段 between 1.5 and 2 在1.5和2之间
not between...and... 字段 not between 1.5 and 2 不在1.5和2之间
in (...) 字段 in (2, 4, 6) 在集合里
not in (...) 字段 not in (2, 4, 6) 不在集合里

二、文本字符串查询(where)

Select * from table where 字段 like ‘%abc’;

Operator SQL Example 解释
= 字段 = “abc” 等于
!= or <> 字段 != “abc” 不等于
like 字段 like “abc” 等于
not like 字段 not like “abc” 不等于
% 字段 like “%at%”前中后均匹配 模糊匹配
_ 字段 like “an_”只匹配后,不匹配本身 模糊匹配单字符
in (...) 字段 in (a, b, c) 在集合里
not in (...) 字段 not in (a, b, c) 不在集合里

三、查询结果Filtering过滤和sorting排序

Select Distinct 字段1, 字段2 from table where conditions order by 字段 asc limit 2 offset 2;

Operator SQL Example 解释
order by order by 字段1 按字段排序
asc order by 字段1 asc 升序
desc order by 字段1 desc 降序
limit offset limit num_limit  offset num_offset 从offset取limit
order by order by 字段1 asc, 字段2 desc 多列排序

四、多表连接查询

Select * from table1 left join table2 on table1.id = table2.id where 字段 > 1

Operator SQL Example 解释
join...on... t1 join t2 on t1.id = t2.id 按ID连成一个表
inner join t1 inner join t2 on t1.id = t2.id 只保留id相等的row
left join t1 left join t2 on t1.id = t2.id 保留t1的所有row
right join t1 right join t2 on t1.id = t2.id 保留t2的所有row
is/is not null 字段 is/is not null 字段是不是为null空

五、表达式查询

1. Select particle_speed / 2.0 as half_particle_speed (对u结果做了除以2的运算)

from physics_data where ABS(particle_position) * 1.0 > 500;(条件要求这个属性的绝对值乘以10大于500)

2. Select *, 字段*2 from table where 字段/2 > 1;

Operator SQL Example 解释
+ - * / % 字段1 + 字段2 字段之间的加减乘除
substr substr(字段, 0, 4) 字符串截取
as 字段 * 2 as 新字段名 字段取别名

每一种数据库都有自己的一套函数(eg: mysql, sqlserver),包含常用数字、字符串、时间等处理过程,具体的参考对应数据库规则。

As 作为使用别名

Select Description as D, 

六、查询统计

SQL默认支持一组统计表达式,可以进行数据统计,例如:计数,求均值,求和,查询极值。

Select AGG_FUNC(column_or_expression) as aggregate_description, ...

from table where constraint_expression; 

在这里必须指明如何分组,否则统计函数对查询结果全部数据进行统计。也可以通过as取别名来增强可读性。

Select count(*), avg(字段), 字段 from table where 字段 > 1 group by 字段; 

Operator SQL Example 解释

count(*)

count(字段)

count(*)

count(字段, 字段)

计数
min(字段) min(字段) 最小值
max(字段) max(字段) 最大值
avg(字段) avg(字段) 求平均
sum(字段) sum(字段) 求和
group by group by字段1, 字段2 分组
having having 字段 > 100 分组后条件

上一篇:spark-submit提交Spark的cluster模式和client模式区别


下一篇:MySQL专题五——子查询