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

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

c20507d2b07b4270ad6f83c4156c0da6.jpg

资料

根据【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!】 整理

资料链接:

百度网盘:

链接:https://pan.baidu.com/s/1KboU_3EZJxrezMWZ2klP6g

提取码:1234

阿里云盘

【MySQL】

1. 查询常量计算

语法:

SELECT 常量运算表达式1, 常量运算表达式2, ...
[ FROM dual ]
SELECT 1+1, 3*2;

查询常量不需要从表中进行查找,可以使用 dual (伪表)补全查询语句的结构。

SELECT 1+1, 3*2
FROM dual;

2. 查询语句的基本语法

查询语句的基本语法:

SELECT 字段1, 字段2, ... 
FROM 表名;

2.1 查询全部字段

语法:

SELECT * 
FROM 表名;
  • * 表示表中的所有字段。

查询employees 表中的所有字段:

SELECT * 
FROM employees;

一般情况下,除非需要使用表中所有的字段数据,否则最好不要使用通配符 *

使用通配符虽然可以节省 输入查询语句 的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。

通配符的优势是,当不知道所需要的列的名称时,可以通过通配符获取它们。

在生产环境下,不推荐直接使用 SELECT * 进行查询。

2.2 查询指定字段

语法:

SELECT 字段1, 字段2, ... 
FROM 表名;

查询表中指定字段,需要保证字段在表中要存在,同时要保证字段名拼写要完全正确。

查询employees 表中 employee_id、last_name、salary字段:

SELECT employee_id, last_name, salary 
FROM employees;

3. 列的别名

查询时,需要对查询的字段进行重命名(取别名),可以使用关键字 AS (alias – 别名)。

查询employees 表中 employee_id、last_name、salary字段:

SELECT employee_id AS id, 
       last_name AS lname, 
       salary AS sal 
FROM employees;

AS 关键字可以省略

SELECT employee_id id, 
     last_name lname, 
     salary sal 
FROM employees;

字段的别名可以使用一对 双引号 引起来,不要使用单引号(由于MySQL语法不严谨,在 MySQL 中不会报错,但在有些数据库中会报错)。

补充:字符串使用单引号引起来,不要使用双引号,会报错。

SELECT employee_id AS "id", 
     last_name AS "lname", 
     salary AS "sal" 
FROM employees;

三个语句的查询结果相同:

字段的别名使用双引号引起来,以便在别名中包含空格或特殊的字符并区分大小写,别名中有空格一定要用双引号包裹。

SELECT employee_id emp_id,
     last_name AS lname,
     department_id "部门id",
     salary * 12 AS "annual sal" 
FROM employees;

4. 去除重复行

默认情况下,查询会返回全部行,包括重复行。

查询员工表中一共有哪些部门id:

没有去重的情况:

SELECT department_id 
FROM employees;

去重的情况(使用关键字 DISTINCT ):

SELECT DISTINCT department_id 
FROM employees;

SELECT salary,DISTINCT department_id
FROM employees;

salary 没有进行去重会全部显示, DISTINCT department_id 会去重,两个发生了冲突,会报错。

[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 'DISTINCT department_id FROM employees' 
at line 1

对 department_id, salary 两者的查询结果进行重复去重:

SELECT DISTINCT department_id, salary 
FROM employees;

只有当 department_id, salary 两个字段的值都一样的记录才会进行去重。

DISTINCT 其实是对后面所有列名的组合进行去重。

最后的结果是 74 条,因为这 74 个结果中部门 id 与 salary 组合后没有重复。如果想要看都有哪些不同的部门(department_id),只需要写 DISTINCT department_id 即可,后面不需要再加其他的列名。



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

热门文章

最新文章