一、 SQL中单表的查询语句select
1.初始用法:select查询表中的属性列
select 列名,列名,... from 表名
select * from 表名 #查询所有列
2.条件查询:【更精确的查询出特定数据】
select 列名,列名,... from 表名
where condition #condition就是一个限定的条件,可以用and和or组装各种条件
3.指定某个或某些属性列唯一返回(distinct)
eg.某一列中只返回一次某个关键词
select distinct 列名,列名,... from 表名
where condition
4.结果排序(order by)、选取部分结果(limit)
select 列名,列名,... from 表名
where condition
order by 列名 ASC/DESC #升序/降序
limit 需要几行数据的行数 offset 跳过所要数据前面所有行的行数
【注意区分数据和字符串,数据可以直接输入,字符串要加 “ ” 】
二、 SQL中多表的联合查询
1.主键:唯一标识,不会重复
2.多表内部连接 (inner join)
通过on描述关联关系,inner join将两个表格的数据连接到一起
eg:交集概念,表一为:(1,2,3,4),表二为(3,4,5,6),连接后为(3,4)
select 列名,列名,... from 表名
inner join 要连接的表名 on 主表.id = 要连接的表名.id #on后面为匹配条件
where condition
3.多表外连接:
左连接 (left join):表A 连接 B, 保留A的所有行,不管有没有能匹配上
右连接 (right join):与左连接相反
全连接 (full join):不管有没有匹配上,同时保留A和B里的所有行
eg:并集概念,表一为:(1,2,3,4),表二为(3,4,5,6),连接后为(1,2,3,4,5,6)
select 列名,列名,... from 表名
left/right/full join 要连接的表名 on 主表.id = 要连接的表名.id #on后面为匹配条件
where condition
【连接数据的列其中数据要匹配的上】
4.特殊关键字 NULLs
连接时,数据缺失,要用到null填充,用is null和 is not null 来选在某个字段是否等于null
select 列名,列名,... from 表名
where 列名 IS/IS NOT NULL
5.查询中使用表达式计算
select 列名/2,列名+2 from 表名 #列名这里可以计算
select max(列名) from 表名 #最大值
select count(列名) from 表名 #获取这一列的行数
6.分组 GROUP BY
可以按某个列的属性对数据进行分组
select distinct 列名,列名,... from 表名
where condition
GROUP BY 列名
HAVING condition;
对分组之后的数据再做筛选,用HAVING 语句,为简单的where
三、 SQL中一个完整的查询执行顺序
select distinct 列名, 表达式(列名), … FROM 表名
(inner/left/right/full) join 要连接的表名 ON 表名.列名 = 要连接的表名.列名 #连接表
where 筛选条件
GROUP BY 列名 #分组
HAVING 筛选条件
ORDER BY 列名 ASC/DESC #排序
LIMIT 需要几行数据的行数 OFFSET 跳过所要数据前面所有行的行数; #截取数据