[MySQL] 基本的SELECT语句(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: [MySQL] 基本的SELECT语句(二)

5. 空值参与运算

空值:null

在 MySQL 中, 空值不等于空字符串。一个空字符串是长度为 0 的字符串,而一个空值是表示没有具体值。

null 不等同于 0 (数值为0,不为空),''(长度为0的字符串,不为空),'null'(字符串,不为空)。

SELECT * 
FROM employees;

空值参与运算,结果一定也为空。

SELECT employee_id, salary AS "月工资", 
     salary*(1+commission_pct)*12 AS "年工资", 
     commission_pct 
FROM employees;

由于有些记录的 commission_pct 中值为空,所以该记录对应的计算出来的“年工资”也为空。

实际问题的解决方案:引入 IFNULL()

SELECT
    employee_id,
    salary AS "月工资",
    # 如果 commission_pct 为空,使用 0 进行代替
    salary*(1+IFNULL(commission_pct, 0))*12 AS "年工资",
    commission_pct
FROM employees;

6. 着重号

着重号:` (键盘左上角,1旁边)

当表名或字段名与关键字一样时,需要使用着重号将表名或字段名引起来。

SELECT * 
FROM ORDER;

报错

[42000][1064] You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server 
version for the right syntax to use near 'ORDER' at line 1
SELECT * 
FROM `order`;

我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,在 SQL 语句中使用一对 `(着重号)引起来。

7. 查询常数

常数会与查询结果的每行进行拼接。

SELECT
    'hello',
    123,
    employee_id,
    last_name
FROM employees;

8. 显示表结构

语法:

DESCRIBE 表名;

简写:

DESC 表名;

显示employees表的结构:

DESCRIBE employees;
DESC employees;

查询结果,显示了表中字段的详细信息。

  • 其中,各个字段的含义分别解释如下:
  • (1) Field:表示字段名称。
  • (2) Type:表示字段类型
  • (3) Null:表示该列是否可以存储 NULL 值。
  • (4) Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分;UNI 表示该列是 UNIQUE 索引的一部分;MUL 表示在列中某个给定值允许出现多次。
  • (5) Default:表示该列是否有默认值,如果有,那么值是多少。
  • (6) Extra:表示可以获取的与给定列有关的附加信息,例如 AUTO_INCREMENT 等。

9. 过滤数据

使用 WHERE 字句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句,过滤条件声明在 FROM 结构的后面。

语法:

SELECT 字段1, 字段2, ...
FROM 表名
WHERE 过滤条件;

查询90号部门的员工信息:

SELECT *
FROM employees
WHERE department_id=90;

查询 last_name 为 ‘King’ 的员工信息:

SELECT *
FROM employees
WHERE last_name='King';

SELECT *
FROM employees
WHERE last_name='king';

该语句的查询结果与上面相同

原因:在 windows 环境下,对大小写不敏感导致 MySQL 中对大小写也不敏感,但是由于 MySQL 的不严谨导致字符串中的大小写也不进行区分,所以上面的两句结果相同。

在其他数据中不会出现这种情况。

在 windows 环境下不区分大小,指的是字段名,表名,关键字,不包括引号内的字符串。

10. 基本的SELECT语句练习

【题目】

# 1.查询员工12个月的工资总和,并起别名为ANNUAL SALARY
# 2.查询employees表中去除重复的job_id以后的数据 
# 3.查询工资大于12000的员工姓名和工资 
# 4.查询员工号为176的员工的姓名和部门号 
# 5.显示表 departments 的结构,并查询其中的全部数据

【答案】

1.查询员工12个月的工资总和,并起别名为ANNUAL SALARY

# 理解 1 :计算12月的基本工资
SELECT
    employee_id,
    last_name,
    salary*12 AS "ANNUAL SALARY"
FROM employees;

# 理解 2 :计算12月的基本工资和奖金
SELECT
    employee_id,
    last_name,
    salary*12*(1+IFNULL(commission_pct,0)) AS "ANNUAL SALARY"
FROM employees;

2.查询employees表中去除重复的job_id以后的数据

SELECT DISTINCT job_id
FROM employees;

3.查询工资大于12000的员工姓名和工资

SELECT
    last_name,
    salary
FROM employees
WHERE salary>12000;

4.查询员工号为176的员工的姓名和部门号

SELECT
    last_name,
    department_id
FROM employees
WHERE employee_id=176;

5.显示表 departments 的结构,并查询其中的全部数据

DESC departments;
DESCRIBE departments;

SELECT *
FROM departments;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
3月前
|
存储 关系型数据库 MySQL
在 MySQL 中使用 Insert Into Select
【8月更文挑战第11天】
585 0
在 MySQL 中使用 Insert Into Select
|
4月前
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
49 2
|
5月前
|
关系型数据库 MySQL Linux
mysql 将select结果导出文件 linux
mysql 将select结果导出文件 linux
67 3
|
4月前
|
关系型数据库 MySQL 索引
MySQL之优化SELECT语句
以上只是一些基本的优化策略,具体的优化方案还需要根据实际的业务需求和数据情况来定制。
50 0
|
5月前
|
关系型数据库 MySQL 数据库
MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能
MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能
|
5月前
|
SQL 关系型数据库 MySQL
深入探索MySQL SELECT查询:从基础到高级,解锁数据宝藏的密钥
深入探索MySQL SELECT查询:从基础到高级,解锁数据宝藏的密钥
|
6月前
|
存储 SQL 关系型数据库
【MySQL进阶之路 | 基础篇】基本的SELECT语句及DESC显示表结构
【MySQL进阶之路 | 基础篇】基本的SELECT语句及DESC显示表结构
|
5月前
|
存储 关系型数据库 MySQL
mysql 存储过程游标 循环输出select 查询结果
mysql 存储过程游标 循环输出select 查询结果
115 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
1220 0
下一篇
无影云桌面