当前位置: 首页 > news >正文

MySQL:SELECT 语句

SELECT FROM语句

在 MySQL 中,可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。

语法格式:

SELECT * / select_list1 (, select_list2, ...) 
FROM table_name1 (, table_name2, ...);
'''
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]'''
  • SELCECT:需要查询的字段可以为一个或多个

  • 使用 * 可以查询所有字段 ,使用’ * '查询时,只能按照数据表中字段的顺序进行排列,不能改变字段的排列顺序

  • 如果忘记了字段名称,可以使用DESC命令查看表的结构

  • FROM:查询数据的来源,可以为一个或多个表

当执行 SELECT 语句时,MySQL在 SELECT 子句之前先执行 FROM 子句

SELECT 语句

可以单独使用 SELECT 语句来执行一些简单的操作

SELECT 1+1;
'''
+-------+
| 1 + 1 |
+-------+
|     2 |
+-------+
1 row in set (0.00 sec)    
'''

可以借助 SELECT 语句来执行 MySQL 中的内置函数:

SELECT NOW();
'''
+---------------------+
| NOW()               |
+---------------------+
| 2021-07-26 08:08:02 |
+---------------------+
1 row in set (0.00 sec)
'''SELECT CONCAT('John',' ','Will');
'''
+--------------------------+
| CONCAT('John',' ','Will') |
+--------------------------+
| John Will                 |
+--------------------------+
1 row in set (0.00 sec)
'''

dual table

使用 SELECT FROM dual 这样的语法来执行一个简单的查询,即从名为 dual 的虚拟表中检索数据。

虚拟表 dual 是一个特殊的表,通常只包含一行和一列,并且在没有实际表可用时用作占位符。

语法结构:

SELECT expression
FROM dual;

由于虚拟表 dual 只包含一行一列,因此无论在查询中使用的表达式或函数返回什么结果,都只会得到一行结果

这种语法特别适用于需要计算一些值或执行简单的查询操作,而无需实际的表存在的情况。

SELECT CURDATE() AS curdate
FROM dual;'''
+------------+
| curdate    |
+------------+
| 2023-09-23 |
+------------+
1 row in set (0.03 sec)
'''

AS 设置别名

为了查询方便,可以使用 AS 关键字来为表和字段指定别名。

语法格式:

SELECT expression AS column_alias;
  • AS 关键字可以省略,省略后需要将表名/字段名 用空格隔开
为字段设置别名
  • 无法在 WHERE 语句中使用,条件表达式中不能使用字段的别名,否则会出现“ERROR 1054 (42S22): Unknown column”这样的错误提示信息。
    因为Mysql 会先执行WHERE再执行 SELECT

  • 设置别名后,可以在[[Sorting data in Tables|ORDER BY]]、 GROUP BY、 HAVING 语句中使用别名来指代字段。

也可以在执行函数后为字段设置别名:

SELECTCONCAT_WS(', ', lastName, firstname) AS `Full name`
FROMemployees;
为表设置别名
  • 表的别名不能与该数据库的其它表同名。字段的别名不能与该表的其它字段同名。

  • 表别名只在执行查询时使用,并不在返回结果中显示。而字段定义别名之后,会返回给客户端显示,显示的字段为字段的别名

  • 为表设置别名后,也可以在[[Subqueries 子查询|子查询]]的 INNER JOINLEFT JOIN
    RIGHT JOIN 语句中使用别名

为表设置别名后,可以通过以下方式访问表中字段:

table_name AS alias_name;
table_name.column_name;'''示例'''
SELECT e.firstName, e.lastName
FROMemployees e
ORDER BY e.firstName;

若遇到两个表具有相同字段名的情况下,在子查询时会报错:

Error Code: 1052. Column 'customerNumber' in on clause is ambiguous

为避免这种错误,可以为表设置一个别名来限定相同字段名的列;若不使用这种方法,则需要用 table_name.column_name 的方法来访问目标字段,这大大降低了可读性。

SELECTcustomerName,COUNT(o.orderNumber) total
FROMcustomers c
INNER JOIN orders o ON c.customerNumber = o.customerNumber
GROUP BYcustomerName
ORDER BYtotal DESC;

相关文章:

  • Android 11 HAL层集成FFMPEG
  • Flink源码学习资料
  • 机体坐标系和导航坐标系
  • 【中项】系统集成项目管理工程师-第2章 信息技术发展-2.1信息技术及其发展-2.1.1计算机软硬件与2.1.2计算机网络
  • springboot防止重复提交的方案有哪些
  • [2019红帽杯]Snake
  • 纯前端导出xlsx表格
  • 深入理解并使用 MySQL 的 SUBSTRING_INDEX 函数
  • STM32中PC13引脚可以当做普通引脚使用吗?如何配置STM32的TAMPER?
  • docker搭建普罗米修斯监控gpu
  • 基于 Three.js 的 3D 模型加载优化
  • Python实现人脸识别
  • 【IEEE出版,会议历史良好、论文录用检索快】第四届计算机科学与区块链国际学术会议 (CCSB 2024,9月6-8)
  • 【项目】星辰博客介绍
  • 【Python】使用库 -- 详解
  • 78. Subsets
  • Hibernate【inverse和cascade属性】知识要点
  • Java-详解HashMap
  • mongodb--安装和初步使用教程
  • ReactNative开发常用的三方模块
  • Vue UI框架库开发介绍
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 当SetTimeout遇到了字符串
  • 翻译:Hystrix - How To Use
  • 复习Javascript专题(四):js中的深浅拷贝
  • 讲清楚之javascript作用域
  • 利用jquery编写加法运算验证码
  • 两列自适应布局方案整理
  • 驱动程序原理
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 小程序开发之路(一)
  • 小李飞刀:SQL题目刷起来!
  • FaaS 的简单实践
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #《AI中文版》V3 第 1 章 概述
  • #162 (Div. 2)
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #每天一道面试题# 什么是MySQL的回表查询
  • (2)STM32单片机上位机
  • (2.2w字)前端单元测试之Jest详解篇
  • (7) cmake 编译C++程序(二)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (二开)Flink 修改源码拓展 SQL 语法
  • (分布式缓存)Redis持久化
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET Micro Framework初体验
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)