《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·007【简单查询】

Judith ·
更新时间:2024-09-21
· 978 次阅读

文章目录一、select语句1、作用2、语法3、空值处理4、反引号、单引号、双引号5、列和表的别名6、distinct去重7、查询表结构8、条件查询(1).限定条件(2).常用比较运算符(3).特殊比较运算符(4).逻辑运算符 一、select语句 1、作用

select语句具备以下功能:

选择 投影 连接 2、语法

select语句格式如下:

select [distinct] * from 表名; select [distinct] 列名列表 from 表名; select [distinct] 表达式 [from 表名];

注:select * from 表名select 所有列 from 表名结果虽然一样,但是从性能上讲select * from 表名的性能要差一点。因此在数据量很大的时候,如果要查询所有值,还是建议用select 所有列 from 表名进行查询

3、空值处理

任何直接包含null值的算术表达式运算后的结果仍然为空值

select null + 100; -- 结果仍为null

ifnull(表达式1, 表达式2)在计算时对null值进行替换处理:当表达式1为null时,整个式子值为表达式1,否则值为表达式2
注:MySQL中的ifnull函数,可以相当于Oracle中的nvl函数

select ifnull(1, 2); -- 结果为1 select ifnull(null, 2); -- 结果为2 4、反引号、单引号、双引号

反引号

反引号用于区分保留字、关键字与其他内容,通常用于列名或者表名。

select `name` from `use`;

单引号

表达某个字符串的值。

select * from emp where ename = 'smith';

如果值中包含单引号,可以在单引号字符串内用两个单引号转义,也可以用在双引号字符串内直接用一个单引号(推荐用法)

select * from emp where ename = 'smi''th'; select * from emp where ename = "smi'th"; -- 推荐写法

双引号

通常用于列的别名,也可以用于表达字符串的值

select * from emp where ename = "smith";

如果值中包含双引号,可以在双引号字符串内用两个双引号转义,也可以用在单引号字符串内直接用一个双引号(推荐用法)

select * from emp where ename = "smi""th"; select * from emp where ename = 'smi"th'; -- 推荐写法 5、列和表的别名

列的别名

用法

列名 新列名 -- 写法1 列名 as 新列名 -- 写法2

注意事项

当新列名中包含空格、大小写、特殊字符时,新列名可以使用反引号、单引号、双引号

英文转中文的常用场景
- 查询中SQL语句别名
- 视图中SQL语句别名
- 前端页面展示页面处理

使用示例

select ename as 姓名, sal as 工资 from emp; select enmae as `NAME`, sal*12 as "年 薪" from emp; 6、distinct去重

使用distinct关键字消除查询结果的重复行

select job from emp; select distinct job from emp; 7、查询表结构

使用desc关键字查询表结构

desc 表名; 8、条件查询 (1).限定条件

使用where子句增加查询限定条件

select [distinct] 列名列表 from 表名 where 条件表达式; (2).常用比较运算符
运算符 含义
= 等于
> 大于
>= 大于等于
< 小于
<= 小于等于
不等于

注意:日期一般不建议使用比较运算符,统一使用日期函数

(3).特殊比较运算符

between ... and ...

between A and B判断要比较的值是否在范围[A,B][\text{A}, \text{B}][A,B]内


注意:

若A>B\text{A} > \text{B}A>B,则between A and B表达式值为false 也可以用于日期的范围

in

in的功能类似于or,判断某个/某些字段是否落在某个集合中


注意:

in支持多列同时判断,但是仅支持子查询

使用示例:

-- 单列判断 select from emp where mgr in(7902, 7566); -- 多列同时判断 select from emp where (job, mgr) in ('CLERK', 7902); -- 错误写法 select from emp where (job, mgr) in (select 'CLERK', 7902); -- 正确写法

like

like运算符用于模糊查询。


注意:

支持通配符——%匹配任意个字符、_匹配单个字符 通常与函数concat(str1, str2, ...)配合使用,这一点主要是便于配合后端程序的使用,比如Java SQL Server中大量存在类似正则表达式书写方式来表示范围的[]运算符,但是MySQL不支持。

使用示例:

-- 查询姓名以S开头的员工 select * from emp where ename like 'S%'; -- 查询姓名包含S的员工 select * from emp where ename like '%S%'; select * from emp where ename like concat('%', 'S', '%'); -- Java中写法

is null

is null用于空值判断,与其相反的是is not null

(4).逻辑运算符

逻辑运算符包括notandor

注意:

not常常和其他运算符组合使用,如not innot betweennot likeis not null

使用逻辑运算符要勤加括号,避免优先级问题


作者:God-Excious



学习笔记 SQL 数据 学习 数据仓库 仓库 Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号