MySQL(六):基本的SELECT语句

news2024/11/15 2:08:16

基本的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/656130.html

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

相关文章

串口协议说明

文章目录 关系波特率概念波特率相对误差UART误差保证 协议常见的串行接口协议之间的比较USB 转串口PL2303USB 转串口CP2102USB转232终端电阻 串口电平TTL电平485电平 帧奇偶校验 关系 两个半双工,一发一收,就是Uart 在一根线的基础上,多加一…

【Git原理与使用】

🎉实战项目:Git原理与使用 博主主页:桑榆非晚ᴷ 博主能力有限,如果有出错的地方希望大家不吝赐教 给自己打气:成功没有快车道,幸福没有高速路。所有的成功,都来自不倦地努力和奔跑&#xff0c…

人机交互学习-10 评估的基础知识

评估的基础知识 背景评估目标和原则评估目标评估的优点评估的目标 评估原则 评估范型和技术“范型”与“技术”评估范型快速评估可用性测试实地研究预测性评估评估范型比较 评估技术评估范型和技术的关系 评估方法的选择区分评估技术的因素评估技术的分类评估方法组合 评估步骤…

CTFshow-pwn入门-Test_your_nc

pwn0 靶场环境启动开,显示ssh连接。 直接打开ctfshow的pwn专用虚拟机来使用ssh连接。密码是123456。 连接之后,他会出现这样的一大堆的介绍性文字,不用管他,然他输出完就行。 中间还用各种语言说了一下“消灭人类暴政&#xff…

Python+Qt桌面端与网页端人工客服沟通工具

程序示例精选 PythonQt桌面端与网页端人工客服沟通工具 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonQt桌面端与网页端人工客服沟通工具>>编写代码&#xff0c;代码整洁…

java swing 购物系统 简要文档 idea eclipse双版本

java swing 购物系统 简要文档 idea eclipse双版本 安装包等资源项目源码项目安装包部署教程 图片演示添加商品类别界面添加商品界面查询商品界面未登录主界面管理员登录界面注册会员界面购买商品界面商品类别管理界面 核心代码CustomerAddInterFrm.javaMainFrm.javaManagerLog…

单片机基于 Linux 环境下的Makefile 工程管理和工具链配置

一、开发环境 开发板&#xff1a;stm32f407 编译环境&#xff1a;18.04.6 LTS 工具链&#xff1a;gcc-arm-none-eabi, gcc-arm-none-objcopy 二、工具链下载和安装 下载地址&#xff1a;&#xff08;下载64位linux版&#xff09; https://launchpad.net/gcc-arm-embedded/downl…

从零开始Vue项目中使用MapboxGL开发三维地图教程(五)加载点、线、面图层以及三维面图层(白模)

目录 1、加载点图层2、加载线和面图层3、加载三维面图层&#xff08;白模&#xff09; 1、加载点图层 开发地图应用时&#xff0c;加载POI等点状数据&#xff0c;显示文字或者图标信息&#xff0c;mapbox-gl对应使用的是符号图层&#xff08;symbol&#xff09;&#xff0c;下面…

Modbus通信介绍 网络高级工具使用

目录 Modbus简介 ModbusTCP协议格式 》1.报文头&#xff08;共7字节&#xff09; 》2.功能码 》3.数据 练习&#xff1a;读传感器数据&#xff0c;读1个寄存器数据&#xff0c;写出主从数据收发协议。 练习&#xff1a;写出控制IO设备开关的协议数据&#xff0c;操作1个…

ansible学习

在物理机查看环境&#xff0c;[kioskfoundation0 ~]$ cat /etc/rht 先清空当前环境&#xff0c;[kioskfoundation0 ~]$ rht-clearcourse 0 再切换rh294环境&#xff0c;[kioskfoundation0 ~]$ rht-setcourse rh294 验证环境是否切换成功&#xff0c;[kioskfoundation0 ~]$ cat…

230617已安装SqlServer2017Express,再安装一个SqlServer2017ExpressAdvanced试试

再安装一个 MsSqlServer 试试 再安装一个 MsSqlServer 试试, 这次用高级版 之前已经安装了 一个 MsSqlServer2017Express一个MsSqlServer2017LocalDB 现在再安装一个 MsSqlServer2017ExpressAdvanced 直接下一步 等待 下个页面列出了已经安装的MsSqlServer实例 之前已…

【群智能算法改进】一种改进的白鲸优化算法 改进白鲸优化算法 改进后的EBWO[2]算法【Matlab代码#42】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始BWO算法2. 改进后的EBWO算法2.1 准反向学习QOBL策略2.2 旋风觅食策略 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始BWO算法 白鲸优化算法 (BWO&#xff…

STM32pwm 时钟 配置 周期 频率 关系配置原理

一 概念 PWM&#xff08;脉冲宽度调制&#xff09;是一种常用的电子信号调制技术&#xff0c;用于控制电子设备中的电平和电流。它通过调整脉冲的宽度来控制信号的平均功率。 在PWM信号中&#xff0c;一个周期由一个固定的频率确定&#xff0c;称为PWM频率。每个周期内&#…

分布式锁服务关键技术和常见解决方案

前言 锁&#xff0c;核心是协调各个使用方对公共资源使用的一种机制。当存在多个使用方互斥地使用某一个公共资源时&#xff0c;为了避免并行使用导致的修改结果不可控&#xff0c;需要在某个地方记录一个标记&#xff0c;这个标记能够被所有使用方看到&#xff0c;当标记不存在…

Matter.js 插件:matter-wrap(世界是圆的)

theme: smartblue 本文简介 点赞 关注 收藏 学会了 记得以前看爆笑校园里有一集讲到&#xff0c;一个人对着前面开了一枪&#xff0c;过了一阵子弹打中他自己的后脑勺。作者想通过这个冷笑话告诉大家一件事&#xff1a;地球是圆的。 在 Matter.js 世界里&#xff0c;默认是没…

stable-diffusion-webui远程访问、插件在线安装

本篇文章可以解决以下问题&#xff1a;stable-diffusion-webui 安装插件报错、没有用户登录安全认证、云主机安装后无法远程访问。 成功安装stable-diffusion-webui后&#xff0c;可以通过命令 bash webui.sh 启动。启动后可以通过 http://127.0.0.1:7860访问。但无法进行远程…

QML快速上手1 - 预备知识

目录 前言QtQuick 预备知识二维坐标系textimagemousearea组件定位元件布局项输入元素 前言 此笔记及后续所有笔记均基于如下环境 Qt Quick 2.12Qt 5.12 参考文献&#xff1a; qmlbook 以下所有笔记均从上述qmlbook中选取精华得来&#xff0c;如果嫌英文太多或者原文太长&am…

【论文系列解读】MiniGPT-4: 增强视觉语言理解与先进的大型语言模型

Minigpt4 MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models MiniGPT-4: 增强视觉语言理解与先进的大型语言模型 (0) 总结&实测 minigpt是先提出来的&#xff0c;将视觉编码器和LLM对齐&#xff0c;blip2和它还是有蛮大区别的。…

Python中对基本文件操作

1.文件的作用 保存数据放在磁盘中 2.打开文件 fopen(‘文件’,‘w’)或者fopen(‘文件’,‘r’) 3.文件操作 3.1 写数据(write) 如果文件不存在那么创建&#xff0c;如果存在那么就先清空&#xff0c;然后写入数据 对象open(“文件”,w) 对象.write&#xff08;“写入数…

论文浅尝 | 用于推荐的知识自适应对比学习

笔记整理&#xff1a;俞洪涛&#xff0c;浙江大学硕士&#xff0c;研究方向为知识图谱表示学习 链接&#xff1a;https://dl.acm.org/doi/10.1145/3539597.3570483 动机 在基于知识图谱的推荐系统中&#xff0c;用户和项目的交互信息通常会在模型中占主导地位&#xff0c;而KG中…