DQL查询数据
(Data Query Language : 数据库查询语句)
基本操作:
- 查询所有
select * from 表名 - 查询指定字段
select 字段 from表名 - 起别名(可以给字段起别名,也可以给表起别名)
select 字段 as 别名 , 字段 as 别名 from 表名 as 别名 - 函数 concat(a,b)(将 a , b 拼接起来)
select concaat(a,b) from 表名
去重 distinct :
select distinct 字段 from 表名
模糊查询:比较运算符
运算符 | 含义 |
---|---|
IS NULL | 是否为空 |
IS NOT NULL | 是否不为空 |
BETWEEN…AND… | 在…之间… |
LIKE | SQL匹配,如果匹配成功则为真 |
IN | 如果在其中某一个值,则为真 |
联表查询 : join
思路:
- 分析需求 分析需要查询的字段来自哪款表
- 确定使用哪种连接查询
- 确定交叉点
- 确定判断条件
语句:
select 数据
from 表名
[left,right,inner] join 表名
on 条件
分为七种
SQL中ON和WHERE的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
** on是笛卡尔积,where是筛选条件,对于内连接来说并无太大区别,但对于左右连接,on会把一方的都拿进来,where则会进行过滤 **
操作 | 描述 |
---|---|
inner join | 如果表中至少有一个匹配,则返回行 |
left join | 会从左表中返回所有值,及时右表中没有匹配 |
rightjoin | 会从右表中返回所有值,及时左表中没有匹配 |
自连接
将一张表做两张表看
分页 limit 和 排序 order by
排序 : 升序 ASC , 降序 DESC
limit 数据起始下标 一页数据量
常用函数
分组 group by 字段
分组后不能用where进行筛选
要用having 条件