1、查询语法的基本结构如下:
select 列名-----要查询的字段
from 表名-----要选项的表
where 限制条件-----过滤数据
group by 列名-----分组数据
having 列名-----分组后过滤
order by 列名-----排序数据
limit N-----限制条数
关键字顺序:SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
SQL语句注释:
如果是单行注释可以用"--" (行前面加:--)
如果是段落注释可以用"/* */ "(段首:/* 段尾:*/)
2、检索单个列
这里查询用到 select 命令,从哪个表里选取哪个列,select 后跟列名,from 后跟表名。
如:SELECT 列名 FROM 表;
3、检索多个列
如:SELECT 列1,列2,…… FROM 表;
4、检索所有列
如:SELECT * FROM 表;
5、去重检索
① 用distinct检索不同的记录,也就是去重
如:SELECT DISTINCT 列 FROM 表;
② 用distinct检索多列不同记录,以下示例代表<列1&列2>去重
如: SELECT DISTINCT 列1,列2 FROM 表;
③ 用group by检索不同记录
如: SELECT 列 FROM 表 GROUP BY 列;
④ 用group by检索多列不同记录
如:SELECT 列1,列2 FROM 表 GROUP BY ALL 列1,列2;
6、对检索结果进行条数限制
① mysql:SELECT 列 FROM 表 LIMIT m; m代表限制的条数
SELECT 列 FROM 表 LIMIT m,n; 代表获取第m行以后的n行数据
② sql server: SELECT TOP m 列 FROM 表 ; m代表限制的条数
获取第7条~9条记录: select top 3 列 from 表 where 列 not in (select top 6 列 from 表)
7、排序
ASC是ascend 升序意思
DESC是descend 降序意思
① 升序
排序用到 order by 关键字,默认是升序,也可以直接写明 ASC
如:SELECT 列 FROM 表 ORDER BY 列;
SELECT 列 FROM 表 ORDER BY 列 ASC;
② 降序
如:SELECT 列 FROM 表 ORDER BY 列 DESC;
③ 多个列排序
如:SELECT 列1,列2 FROM 表 ORDER BY 列1 ASC,列2 DESC;
8、过滤数据
过滤/筛选数据通常用到 where 子句,它常用的查询条件如下表所示:
① 单条件过滤
单条件过滤,后常跟比较运算符=,<,<=,>,>=,<>
如:select 列 from 表 where 列 > 值;
② 多条件过滤
多条件过滤常用到逻辑运算符:AND OR NOT
如:select 列 from 表 where 列 > 值 and 列 < 值;
③ 范围过滤
指定范围通常用到 between and 命令,between 后是范围的下限,and 后跟上限。
如:select 列 from 表 where 列 between 值1 and 值2;
④ 集合筛选
IN 功能是筛选在某一集合里的数据
select 列 from 表 where 列 IN (值 1,值 2,值 3);
不在集合里的筛选就是 NOT IN
select 列 from 表 where 列 NOT IN (值 1,值 2,值 3);
9、缺失值判断
缺失值为 null,查询数据是否为空,where 条件子句后用 is null
select 列 from 表 where 列 is null;
值不为空值,用 is not null,注意不是 not is null,
select 列 from 表 where 列 is not null;
有的缺失值可能是空格,可以用!=或<>
select 列 from 表 where 列 != '';
10、模糊匹配
模糊匹配用 LIKE
select 列 from 表 where 列 LIKE 条件;
百分号(%)表示多个任意想要匹配的字符。
如 like ‘a%’ 表示以 a 开头的任意长度字符串,like '%a'表示以a结尾的任意长度字符串,也可以用‘%a%’表示含有a的任意长度字符串。