【MySQL新手到通关】第三章 基本的SELECT语句

news2025/1/12 8:44:02

文章目录

  • 1. SQL 概述
    • 1.1 SQL 背景知识
  • 1.2 SQL 分类
  • 2. SQL语言的规则与规范
    • 2.1 基本规则
    • 2.2 注释
    • 2.3 数据导入指令
  • 3. 基本的SELECT语句
    • 3.1 SELECT ... FROM
    • 3.2 列的别名
    • 3.3 去除重复行
    • 3.4 空值参与运算
    • 3.5 着重号
  • 4. 显示表结构
  • 5. 基本的过滤数据


在这里插入图片描述


在这里插入图片描述

1. SQL 概述

1.1 SQL 背景知识

  • 1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几
    十年里,无数的技术、产业在这片江湖里沉浮,有的方兴未艾,有的已经几幕兴衰。但在这片浩荡
    的波动里,有一门技术从未消失,甚至“老当益壮”,那就是 SQL。
    • 45 年前,也就是 1974 年,IBM 研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门
      结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他
      语言, SQL 的半衰期可以说是非常长 了。
  • 不论是前端工程师,还是后端算法工程师,都一定会和数据打交道,都需要了解如何又快又准确地
    提取自己想要的数据。更别提数据分析师了,他们的工作就是和数据打交道,整理不同的报告,以
    便指导业务决策。
  • SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言, 与数
    据直接打交道 ,由 IBM 上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标
    准,先后有 SQL-86 , SQL-89 , SQL-92 , SQL-99 等标准。
    • SQL 有两个重要的标准,分别是 SQL92 和 SQL99,它们分别代表了 92 年和 99 年颁布的
      SQL 标准,我们今天使用的 SQL 语言依然遵循这些标准。
  • 不同的数据库生产厂商都支持SQL语句,但都有特有内容。

1.2 SQL 分类

SQL语言在功能上主要分为如下3大类:

  • DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视
    图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
    • 主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。
  • DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库
    记录,并检查数据完整性。
    • 主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。
    • SELECT是SQL语言的基础,最为重要。
  • DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权
    限和安全级别。
    • 主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等。
  1. 因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语 言)。
  2. 还有单独将 COMMIT 、 ROLLBACK取出来称为TCL (Transaction Control Language,事务控制语 言)。



在这里插入图片描述

2. SQL语言的规则与规范

2.1 基本规则

  • SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
  • 每条命令以 ; 或 \g 或 \G 结束
  • 关键字不能被缩写也不能分行
  • 关于标点符号
    • 必须保证所有的()、单引号、双引号是成对结束的
    • 必须使用英文状态下的半角输入方式
    • 字符串型和日期时间类型的数据可以使用单引号(’ ')表示
    • 列的别名,尽量使用双引号(" "),而且不建议省略as

2.2 注释

可以使用如下格式的注释结构

单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */

2.3 数据导入指令

在命令行客户端登录mysql,使用source指令导入

mysql> source d:\mysqldb.sql



在这里插入图片描述

3. 基本的SELECT语句

3.1 SELECT … FROM

语法

SELECT 标识选择哪些列
FROM 标识从哪个表中选择

举例:查全部

SELECT * FROM `procatch_work_om_log`

在这里插入图片描述

举例:查某列

SELECT id, operator_desc, remark FROM `procatch_work_om_log`

在这里插入图片描述


3.2 列的别名

  • 重命名一个列
  • 便于计算
  • 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或
  • 特殊的字符并区分大小写。
  • AS 可以省略
  • 建议别名简短,见名知意

举例

SELECT id, operator_desc as '描述', remark as '备注' FROM `procatch_work_om_log`

在这里插入图片描述


3.3 去除重复行

默认情况下,查询会返回全部行,包括重复行。如下:
在这里插入图片描述

用 DISTINCT 关键字加到列前去重

SELECT DISTINCT relation_id FROM `procatch_work_om_file`

去重效果如下:
在这里插入图片描述

这里有两点需要注意:

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

3.4 空值参与运算

所有运算符或列值遇到null值,运算的结果都为null

SELECT id,name, salary
FROM employees;

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


3.5 着重号

错误的

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语句中使用一对 ``(着重号)引起来。



在这里插入图片描述

4. 显示表结构

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

DESCRIBE employees;DESC employees;

在这里插入图片描述

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

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



在这里插入图片描述

5. 基本的过滤数据

如下是全查的
在这里插入图片描述

过滤出仓库管理员是 李子柒 的所有仓库

SELECT * FROM `procatch_work_om_warehouse` where warehouse_admin_name = '李子柒'

在这里插入图片描述

具体的过滤数据专题 后面会详细讲解。


在这里插入图片描述

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

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

相关文章

计讯物联打造医疗设备远程质检“新神器”TG453,引领医疗设备数字化浪潮

方案背景 基于物联网的普及与推广,物联网技术在医疗行业得到更广泛的应用。在医院的日常诊疗工作开展中,CT、呼吸机、监护仪、注射泵、核磁共振、DR系统、工频X光机等医疗设备稳定无故障地运行对于医院、患者而言具有重要影响。医疗设备在长期使用过程中…

讨论:为什么越来越多的企业开始搭建属于自己的知识库?

随着信息技术的发展,人们可以在互联网上随时随地获取各种信息。企业作为一个独立的组织体系,其运营和管理需要依赖于大量的知识和信息。因此,建立一个属于自己的知识库,可以帮助企业更好地管理和共享知识,提高员工的工…

VS Code 大量 Java 新功能来袭!

大家好,欢迎来到 Visual Studio Code Java 的 4 月更新!在此博客中,我们将带来大量基础用户体验更新,其中包括调试功能改进、Maven 插件中的配置文件支持、全新 Java Project Explorer 的用户界面和 Spring Boot 项目的可视化增强…

2.shell脚本基本操作及案例

本文介绍了shell脚本的基本建立过程,并举了4个案例。关键是例3的shell脚本检测局域网ip地址机器是否宕机,例4的shell脚本获取本机ip地址 一、第一个shell脚本 1、定义解释器 #!/bin/bash echo "hello world" #! 是一个约定的标记…

[玩游戏想道理]底层能力提升

继续金铲铲中想道理; overview 很多熟悉的情况是调用记忆即可,但是新的情况则需要使用底层能力,包括不限于做事的方式倾向,对事物的深刻理解等等; 既有事情更多在调用和打磨记忆,新的事物更多调用和打磨底…

『C++』C++的IO流详解

「前言」文章是关于C的IO流 「归属专栏」C嘎嘎 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 就像山看水,水流山还在, 喜欢之人,只管远去, 我只管喜欢。 ——烽火戏诸侯《剑来》 目录 一…

留学热议话题:在美国可以用ChatGPT写作业吗?

今年,学术界最热议的话题要数人工智能技术非大语言数据模型ChatGPT了。随着ChatGPT等智能写作助手在学生群体中的应用和日益普及,极大程度地影响了学生们的传统学习方法。然而,在享受技术革新带来便利的同时,不恰当的运用这些软件…

rails routes的使用

Rails routes 是用于确定应该将请求发送到哪个控制器和操作的一种机制。在 Rails 应用程序中,可以通过定义路由来映射 URL 到控制器操作。可以使用 rails routes 命令查看当前应用程序中定义的所有路由。 以下是一些常见的用法: 查看所有路由&#xff…

从三个层次来介绍用于机器人主控板的设计思想

在很多人眼里,主控板有着密密麻麻的芯片引脚与PCB走线,看起来非常难的样子。其实恰恰相反,主控板的设计有着其特有的设计规律,其实说白了就像搭积木,在满足单片机最小系统的条件下,需要哪些功能&#xff0c…

chatgpt赋能Python-python_head_first

Python Head First:学习Python编程的必备指南 如果你是一位编程新手,尤其是对Python感兴趣,那么Head First Python是你需要阅读的书籍之一。这本书通过富有趣味性的教学方法,让你轻松理解Python编程语言。 了解Python编程 Pyth…

物联网通信协议-MQTT及使用python实现

MQTT概念及其原理 简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量 级"通讯协议,该协议构建于TCP/IP协议上,由IBM在…

亚马逊云科技构建Serverless数据分析战略

亚马逊云科技Amazon EMR是行业领先的大数据分析服务,适用于使用开源框架进行PB级数据处理、交互分析和机器学习,它可以更快地运行大数据应用并且成本不到本地解决方案成本的一半。通过性能优化且兼容开源API的Spark、Hive和Presto版本,洞察时…

增加或修改现有apk的功能(apk功能扩展)

现有apk不能满足需要,又没有源代码,想要扩展其功能,是可以实现的。 本人根据多年修改apk的经验,总结如下: 一、扩展apk功能的原理及步骤 1、必要条件: 该apk能够被反编译为smali代码,也能够…

【2023五一杯数学建模】B题 快递需求分析 31页论文

【2023五一杯数学建模】B题 快递需求分析 31页论文及代码 1 题目 请依据以下提供的附件数据和背景内容,建立数学模型,完成接下来的问题:问题背景是,网络购物作为一种重要的消费方式,带动着快递服务需求飞速增长&…

Spring源码阅读:Spring事务执行流程

一、概述 Spring事务执行的流程如下图,我们将按照下面的执行顺序,介绍Spring的事务。 二、代码分析 (一)核心流程 TransactionAspectSupport#invokeWithinTransaction 事务处理核心伪代码 // 通过事务调用 protected Object i…

第12届蓝桥杯Scratch选拔赛真题集锦

第12届蓝桥杯Scratch选拔赛真题集锦 编程题 第 1 题 问答题 吃豆人游戏 题目说明 编程实现: 吃豆人游戏: 通过方向键控制吃豆人吃到水果,当水果全部被吃掉后游戏结束。具体要求: 1).点击绿旗,舞台上出现要求的角色与背景;每个格子内有一个水果和一个幽…

chatgpt赋能Python-python_ip摄像头

Python IP摄像头介绍 IP摄像头技术的快速发展,使得越来越多的人开始使用IP摄像头来保护家庭、企业和公共场所的安全。Python语言的简洁、优雅和易于学习,使得它成为越来越多人选择的编程语言。在本文中,我们将介绍如何使用Python编程来控制I…

java循环依赖

java循环依赖 什么叫循环依赖? Java循环依赖是指两个或多个类之间存在相互依赖的情况,造成它们互相持有对方的实例而无法正确地加载和初始化。这种问题通常发生在使用Spring等依赖注入框架时,因为这些框架会自动管理类的实化和注入。 我们看…

深度学习基础入门篇[10]:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

机器学习神经网络——Adaboost分离器算法

系列文章目录 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 机器学习相关概念思维导图 文章目录 系列文章目录 前言 Adaboost算法的简单介绍 Adaboost算法相…