专栏首页JavaEdgeMySQL8.0关系数据库基础教程(三)-select语句详解

MySQL8.0关系数据库基础教程(三)-select语句详解

1 查询指定字段

  • 在 employee 表找出所有员工的姓名、性别和电子邮箱。
  • SELECT 表示查询,随后列出需要返回的字段,字段间逗号分隔
  • FROM 表示要从哪个表中进行查询
  • 分号为语句结束符

这种查询表中指定字段的操作在关系运算中被称为投影(Projection)

使用 SELECT 子句进行表示。投影是针对表进行的垂直选择,保留需要的字段用于生成新的表

投影操作中包含一个特殊的操作,就是查询表中所有的字段。

2 查询全部字段

  • ‘*’ 表示全部字段

数据库在解析该语句时,会使用表中的字段名进行扩展:

SELECT emp_id, emp_name, sex, dept_id, manager,
       hire_date, job_id, salary, bonus, email
  FROM employee;

虽然星号可以便于快速编写查询语句,但是在实际项目中不推荐使用:

  • 程序可能并不需要所有的字段,避免返回过多的无用数据
  • 当表结构发生变化时,星号返回的信息也会发生改变

除了查询表的字段之外,SELECT 语句还支持扩展的投影操作,包括基于字段的算术运算、函数和表达式等。

3 多字段查询

返回员工的姓名、一年的工资(12 个月的月薪)以及电子邮箱的大写形式:

结果中,返回字段的名称不是很好理解;能不能给它指定一个更明确的标题呢?

4 别名(Alias)

为了提高查询结果的可读性,可以使用别名为表或者字段指定一个临时的名称。SQL 中使用关键字 AS 指定别名。

别名中的关键字 AS 可以省略。

为 employee 表指定了一个表别名 e,然后为查询的结果字段指定了 3 个更明确的列别名(使用双引号)。在查询中为表指定别名之后,引用表中的字段时可以加上别名限定,例如 e.emp_name,表示要查看哪个表中的字段。

在 SQL 语句中使用别名不会修改数据库中存储的表名或者列名,别名只在当前语句中生效。

5 注释

分为单行注释和多行注释

  • 单行注释以两个连字符(–)开始,直到这一行结束
  • SQL 使用 C 语言风格的多行注释(/* … */)

# 也可以用于表示单行注释。

6 无表查询

  • 计算一个表达式的值:

用于快速查找信息。这种语法并不属于 SQL 标准,而是数据库产品自己的扩展。

7 总结

SQL 不仅仅能够查询表中的数据,还可以返回算术运算、函数和表达式的结果。在许多数据库中,不包含 FROM 子句的无表查询可以用于快速获取信息。另外,别名和注释都可以让我们编写的 SQL 语句更易阅读和理解。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 接口优化概述

    JavaEdge
  • MySQL8.0基础教程 - 事务隔离级别解决之道

    隔离性是事务的基本特性之一,它可以防止数据库在并发处理时出现数据不一致的情况。最严格的情况下,我们可以采用串行化的方式来执行每一个事务,这就意味着事务之间是相互...

    JavaEdge
  • Java字节码修改库ASM#ClassReader实现原理及源码分析

    ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。

    JavaEdge
  • RocketMQ

    不会永久保存消息文件,而是启用文件过期策略,在磁盘空间不足或在凌晨4点删除过期文件,文件默认保存72小时,删除时不会判断该文件上的消息是否被消费

    spilledyear
  • 一、JavaWeb应用的概念、Servlet容器

    JavaWeb应用由一组Servlet、HTML页、类,以及其他可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行

    桑鱼
  • 走进Java接口测试之从0到1搭建数据驱动框架(用例管理)

    先吐个槽,参加过很多技术大会,也看过个很多技术类文章,发现大部分存在一个通病,即:都会提问题,提思路,但是都不会讲具体的落地方案,所以我写东西给自己定了一个目标...

    高楼Zee
  • java迭代器应用 源码探究

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • IIT 坎普尔咨询集团:将机器学习和管理咨询的方法应用到社会公益中(CS)

    IIT坎普尔咨询集团(IIT Kanpur Consulting Group)是印度的先驱研究机构之一,他们致力于研究机器学习和策略咨询在社会公益中的应用。该集...

    Pamela_Lin
  • python动态语言特性小结

    1 moduleNames = ['sys', 'os', 're', 'unittest']

    py3study
  • Java之JVM知识点整理

    昨天的排版并不是很满意,而且每天公众号只能发布一篇文章,近期资料看了很多,需要复习巩固一下,在群里,私聊小伙伴问了很多问题,今天都得到了解决。

    疯狂的KK

扫码关注云+社区

领取腾讯云代金券