Mysql数据库(六):基本的SELECT语句

news2024/11/26 5:45:53

基本的SELECT语句

  • 前言
  • 一、SELECT...
  • 二、SELECT ... FROM
  • 三、列的别名
  • 四、去除重复行
  • 五、空值参与运算
  • 六、着重号
  • 七、查询常数
  • 八、显示表结构
  • 九、过滤数据



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

一、SELECT…

SELECT 1; #没有任何子句
SELECT 9/2; #没有任何子句

二、SELECT … FROM

  • 语法:
SELECT   标识选择哪些列
FROM     标识从哪个表中选择
  • 选择全部列:
SELECT *
FROM   departments;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pvZLt90x-1686295251158)(images/1554950890895.png)]

  1. 一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。
  2. 使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。
  3. 通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。

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

  • 选择特定的列:
SELECT department_id, location_id
FROM   departments;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NyIcQHqG-1686295251159)(images/1554950947969.png)]

MySQL中的SQL语句是不区分大小写的,因此SELECT和select的作用是相同的,但是,许多开发人员习惯将关键字大写、数据列和表名小写,读者也应该养成一个良好的编程习惯,这样写出来的代码更容易阅读和维护。

三、列的别名

  • 重命名一个列

  • 便于计算

  • 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。

  • AS 可以省略

  • 建议别名简短,见名知意

  • 举例

 SELECT last_name AS name, commission_pct comm
 FROM   employees;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ciO597KW-1686295251160)(images/1554951616598.png)]

SELECT last_name "Name", salary*12 "Annual Salary"
FROM   employees;

在这里插入图片描述

四、去除重复行

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

SELECT department_id
FROM   employees;

在这里插入图片描述

在SELECT语句中使用关键字DISTINCT去除重复行

SELECT DISTINCT department_id
FROM   employees;

在这里插入图片描述

针对于:

SELECT DISTINCT department_id,salary 
FROM employees;

这里有两点需要注意:

  1. DISTINCT 需要放到所有列名的前面,如果写成SELECT salary, DISTINCT department_id FROM employees会报错。
  2. DISTINCT 其实是对后面所有列名的组合进行去重,你能看到最后的结果是 74 条,因为这 74 个部门id不同,都有 salary 这个属性值。如果你想要看都有哪些不同的部门(department_id),只需要写DISTINCT department_id即可,后面不需要再加其他的列名了。

五、空值参与运算

  • 所有运算符或列值遇到null值,运算的结果都为null
SELECT employee_id,salary,commission_pct,
12 * salary * (1 + commission_pct) "annual_sal"
FROM employees;

这里一定要注意,在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。

六、着重号

  • 错误的
mysql> SELECT * FROM ORDER;
ERROR 1064 (42000): 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
  • 正确的
mysql> SELECT * FROM `ORDER`;
+----------+------------+
| order_id | order_name |
+----------+------------+
|        1 | shkstart   |
|        2 | tomcat     |
|        3 | dubbo      |
+----------+------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM `order`;
+----------+------------+
| order_id | order_name |
+----------+------------+
|        1 | shkstart   |
|        2 | tomcat     |
|        3 | dubbo      |
+----------+------------+
3 rows in set (0.00 sec)
  • 结论

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

七、查询常数

SELECT 查询还可以对常数进行查询。对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。

你可能会问为什么我们还要对常数进行查询呢?

SQL 中的 SELECT 语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。

比如说,我们想对 employees 数据表中的员工姓名进行查询,同时增加一列字段corporation,这个字段固定值为“帅哥”,可以这样写:

SELECT '帅哥' as corporation, last_name FROM employees;

八、显示表结构

使用DESCRIBE 或 DESC 命令,表示表结构。

DESCRIBE employees;DESC employees;
mysql> desc employees;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id    | int(6)      | NO   | PRI | 0       |       |
| first_name     | varchar(20) | YES  |     | NULL    |       |
| last_name      | varchar(25) | NO   |     | NULL    |       |
| email          | varchar(25) | NO   | UNI | NULL    |       |
| phone_number   | varchar(20) | YES  |     | NULL    |       |
| hire_date      | date        | NO   |     | NULL    |       |
| job_id         | varchar(10) | NO   | MUL | NULL    |       |
| salary         | double(8,2) | YES  |     | NULL    |       |
| commission_pct | double(2,2) | YES  |     | NULL    |       |
| manager_id     | int(6)      | YES  | MUL | NULL    |       |
| department_id  | int(4)      | YES  | MUL | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
11 rows in set (0.00 sec)

其中,各个字段的含义分别解释如下:

  • Field:表示字段名称。
  • Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
  • Null:表示该列是否可以存储NULL值。
  • Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
  • Default:表示该列是否有默认值,如果有,那么值是多少。
  • Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

九、过滤数据

  • 背景:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7cflOVEW-1686295668849)(images/1554952199742.png)]

  • 语法:

    SELECT 字段1,字段2
    FROM 表名
    WHERE 过滤条件
    
    • 使用WHERE 子句,将不满足条件的行过滤掉
    • WHERE子句紧随 FROM子句
  • 举例

SELECT employee_id, last_name, job_id, department_id
FROM   employees
WHERE  department_id = 90 ;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/629824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何监控EMC VNX控制器的启动过程

这里我们要讨论的内容基本上适用于所有的EMC VNX中端存储系统,包含老的Clariion CX3,CX4,VNX1和VNX2,其实VNXe和Unity很多内容也是一样的。当然由于VNXe和Unity 操作系统的大的变化,差异也是比较大的。 导致EMC Clarr…

什么是M-LAG?为什么需要M-LAG?

M-LAG(Multichassis Link Aggregation Group)提供一种跨设备链路聚合的技术。M-LAG通过将两台接入交换机以同一个状态和用户侧设备或服务器进行跨设备的链路聚合,把链路的可靠性从单板级提升到设备级。同时,由于M-LAG设备可以单独…

如何设计一个完整的交互流程,提升产品用户体验

交互流程设计是一项关乎用户体验的重要工作。通过设计和规划用户与产品或服务的交互方式和流程,我们可以提高用户的满意度和使用效果。在本文中,我们将深入探讨交互流程设计的关键要素以及其对用户体验的重要性。 交互流程设计本质是通过设计和规划用户与…

【Python】Python进阶系列教程-- Python3 SMTP发送邮件(六)

文章目录 前言实例使用Python发送HTML格式的邮件Python 发送带附件的邮件在 HTML 文本中添加图片使用第三方 SMTP 服务发送 前言 往期回顾: Python进阶系列教程-- Python3 正则表达式(一)Python进阶系列教程-- Python3 CGI编程(…

chatgpt赋能python:Python怎么倒序输出字符串

Python怎么倒序输出字符串 Python是一种高级编程语言,它可以让开发人员快速编写代码。在Python中,字符串是一种非常常见的数据类型,其支持各种字符串操作。在这篇文章中,我们将讨论如何在Python中倒序输出字符串。 倒序输出字符…

openGauss5.0企业版使用指南之企业版安装

文章目录 0. 前言1. 安装1.1 获取安装包1.1.1 操作步骤1.1.2 准备软硬件安装环境1.1.3 软硬件环境要求1.1.4 修改操作系统配置1.1.5 **关闭操作系统防火墙**1.1.6 **设置字符集参数**1.1.7 **设置时区和时间**1.1.8 **(可选)关闭swap交换内存**1.1.9 **关…

MOVEit Transfer 漏洞似乎被广泛利用

Progress Software 已在其文件传输软件 MOVEit Transfer 中发现一个漏洞,该漏洞可能导致权限提升和潜在的未经授权访问环境,该公司在一份安全公告中表示。 在 MOVEit Transfer Web 应用程序中发现了一个 SQL 注入漏洞,可能允许未经身份验证…

【ARMv8 SIMD和浮点指令编程】NEON 逻辑指令——与或非有多少?

NEON 逻辑指令主要包括与、或、异或、位清除、或非、为 False 时按位插入、为 True 时按位插入和按位选择指令,下面我们来详细学习这些指令。 一、逻辑指令 1.1 AND 按位与(向量),该指令将两个源 SIMD&FP 寄存器按位与,并将结果写入目标 SIMD&FP 寄存器。 AND …

基于JDBC的账务管理系统

一、项目介绍 1.1 项目目标 本项目为JAVAEE基础和数据库的综合项目,包含了若干个知识点,达到将从基础班到现在所学的知识综合使用,提高了我们对项目的理解与知识点的运用。熟练View层、Service层、Dao层之间的方法相互调用操作熟练使用工具类…

chatgpt赋能python:Python怎么入侵别人微信:一种黑客行为的技术探讨

Python怎么入侵别人微信:一种黑客行为的技术探讨 随着社交媒体微信的普及和使用程度的不断提高,对微信的攻击和入侵成为了目前互联网安全领域的热点问题之一。其中,Python编程语言的广泛应用和强大的功能使得其逐渐成为了微信黑客行为的利器…

robots.txt的作用是什么,看完了我默默加在了自己网站上

文章目录 背景robots.txt的主要作用使用示范User-agentDisallowAllowSitemap 总结 背景 最近在研究网站SEO相关的东西,第一次接触到robots.txt,才发现实际上很多网站都用到了它,尤其是对搜索引擎依赖特别高的C端系统或者网站,是一…

论文解读:SuperGlue: Learning Feature Matching with Graph Neural Networks

SuperGlue: Learning Feature Matching with Graph Neural Networks 发表时间:2020 论文地址:https://arxiv.org/abs/1911.11763 项目地址:http://github.com/magicleap/SuperGluePretrainedNetwork。 本文介绍了一种通过联合寻找对应和拒绝…

Git介绍及安装

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Git ⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正&#x…

通往AGI之路;首个自研全开源自然语言低代码 GPT 应用快速开发框架PromptAppGPT

🦉 AI新闻 🚀 商汤科技将发布元萝卜AI下棋机器人新品(围棋版) 摘要:商汤科技将于6月14日召开元萝卜AI下棋机器人新品发布会,预计会发布下棋机器人(围棋版)。这款AI下棋机器人融合了传统围棋文化和人工智能技术,拥有落…

论文解读:Segment Anything

Segment Anything 发表时间:2023 论文地址:https://arxiv.org/abs/2304.02643 项目地址:https://github.com/facebookresearch/segment-anything 介绍了Segment Anything(SA)项目:一个新的任务、模型集和…

ViT 论文逐段精读——B站up:跟李沐学AI讲解笔记

https://www.bilibili.com/video/BV15P4y137jb Vision Transformer 挑战了 CNN 在 CV 中绝对的统治地位。Vision Transformer 得出的结论是如果在足够多的数据上做预训练,在不依赖 CNN 的基础上,直接用自然语言上的 Transformer 也能 CV 问题解决得很好…

PotPlayer结合alist播放网盘视频

目录 1. PotPlayer的下载安装2. 新建专辑3. 测试播放视频总结 欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 书接上文 AList挂载工具安装搭建使用教程,快速访问多个网盘的资源(保姆级图…

12-git-pycharm配置.ignore文件

pycharm配置.ignore文件 前言安装插件使用添加其他忽略文件 前言 在开发中经常需要配置提交git的忽略文件,本篇来学习下使用pycharm自动生成.ignore文件 安装插件 Files->setting->Plugins,搜索ignore 使用 右键项目根目录,新建.…

AI大模型私有化部署流程

私有化部署AI大模型需要一定的GPU支持,适合有一定经济实力的公司,今天和大家分享一下如何进行私有化部署,这涉及很专业的知识,包括硬件和软件环境、模型部署、API集成、测试验证等,这里只是初步讨论一下,希…

chatgpt赋能python:Python分词:从原理到实践

Python分词:从原理到实践 分词是自然语言处理中的关键步骤之一,它是指将一句话或一段文本分成若干个词语(token)并进行标注。Python作为一种非常流行的编程语言,具备强大的文本处理能力,而分词也是它的强项…