文章目录
SQL 查询操作符
查询操作符
and; or
“和” “或” 联合多个条件进行查询
select * from fruits
where s_id=101 and f_id="a1";
select * from fruits
where s_id=101 or f_id="a1";
in; not in
判定某个字段的值是否在集合中, 在的话满足查询条件
select * from fruits
where f_name in ("apple","orange");
between…and…
判断某个字段是否在指定范围内.
like “字符串”
用来匹配字符串是否相等
通配符 % _
% 代表任意长度字符串
_ 代表单个字符串
举个栗子:
b%k 代表b开头,k结尾的任意长度字符串
b_k 代表b开头,k结尾的长度为3的字符串
"%e%" 代表包含e的任意字符串, 可查询任意,即e可以在开头和结尾
举例: 查找以b开头, 且字符串长度为2的记录
select * from fruits
where f_id like 'b_';
is [not] null
判定字段的值是否为空值, not是可选参数
distinct 使结果仅显示唯一的值
用来消除重复记录
select distinct s_id from fruits;
as 重命名
可以将表或字段名重命名为别的名称使用, 只在查询时有效
使用过程中 as 可以省略
select *, f_name '水果名', f_price as '价格'
from fruits;
limit 3
查询后只显示limit指定数字的行数记录
select * from fruits
order by f_price desc
limit 3;
连接查询
笛卡尔乘积现象:表1 m行, 表2 n行, 结果是m*n行
笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
如何解决:添加有效的连接条件
mysql : 内连接\左外连接\右外连接\交叉连接
内连接
语法:
select 查询列表
from 表1 别名
【inner】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
特点:
①表的顺序可以调换
②内连接的结果=多表的交集
③n表连接至少需要n-1个连接条件
分类:
- 等值连接 =
- 非等值连接 between and
- 自连接 :它解决了列与列之间的逻辑关系问题,准确的讲是列与列之间的层次关系。
涉及到多表连接, join中表的顺序问题.
当执行
from departments d