查询数据
select 列名 from 表名;
- 查询结果是一张虚拟表,虚拟表不会真正存储
- 每次执行查询只是从数据表中提取数据,并按照表的形式显示出来
- 标识符有特殊符号时,要加上 ``
select
可以查询常量值、表达式、函数
select 100; -- 100
select 100 * 2 'result'; -- 200
select now(); -- 返回当前时间
其别名:
as
select 列名 [as] '别名' from 表名 [as] '别名'; -- as 可以不写
去重:
distinct
select distinct 列名 from 表名;
直接选取指定列创建表
其实就是直接从其他表中选取指定字段的记录作为新表的内容
drop table if exists `AddressList`;
create table `AddressList` (
select `StuName` as '学生姓名', `id`, `Address` from `StuInfo`;
);
where 子句
where 子句通常结合增删改查使用,用于做筛选的条件
select * from `tbName` where `id` = 1;
比较运算符
- 等于:
=
- 不等于:
<>
!=
- 大于:
>
- 大于等于:
>=
- 小于:
<
- 小于等于:
<=
select * from `tbName` where `age` > 18;
逻辑运算符
- 逻辑非:
not
- 逻辑与:
and
- 逻辑或:
or
select * from `StuInfo`
where `Sex` = '男' and `age` > 18;
模糊查询
like
关键字用来进行模糊查询,并且结合 %
以及 _
使用
_
:表示任意一个字符%
:表示任意多个字符
select * from `StuInfo`
where `StuName` not like '张%';
当需要查询的字符里面含有 _
或 %
时,我们可以通过 escape
关键字设置转义字符
-- 查询姓名的第二个字符为 _ 的学生信息
select * from `students`
where `name` like '_&_%' escape '&'; # 设置 & 为转义字符
范围查询
in
:表示在一个非连续的范围内取值between - and -
:表示在一个连续的范围内取值
select * from `students`
where `GradeId` in (1, 4, 8);
select * from `StuInfo`
where `GradeId` between 2 and 4;
注意:between - and -
:-
可以是数字 / 日期;范围是一个闭区间 [ -, - ]
判空
is [not] null
:判断是否为空值 / 非空值=
<>
不能判断null
select * from `tbName`
where `name` is not null;
注意:null
!= 空字符串
<=>
安全等于 <=>
,既可以判断 null
,又可以判断精确数值
select * from `tbName`
where `name` <=> null;
select * from `tbName`
where `salary` <=> 12000;