最基本的SELECT...FROM结构

2024-09-06 02:12
文章标签 基本 结构 select

本文主要是介绍最基本的SELECT...FROM结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第0种:最基本的查询语句

SELECT 字段名,字段名 FROM 表名

SELECT 1;

SELECT 1+1,3*2;

FROM

SELECT 1+1,3*2 FROM DUAL;#dual:伪表 我们可以用它来保持一个平衡

这里我们的值不需要在任何一个表里,所以我们可以用dual来表示表

这里的*号代表的就是所有内容.这里的字段前面是id,后面是名,后面的是姓.邮箱,号码,雇佣时间,部门id,工资,奖金比例,管理者id,部门id

比如我们想查询一下员工的id

SELECT employee_id,last_name,salary FROM employees;

就会出现下面的结果

最后一列记得不要加逗号.加了就会出错,前面要加逗号,不加就变成字段别名了,

列的别名:

别名是怎么回事呢,其实就是一个外号.给他起另一个名字,

大家尽量熟悉熟悉这个 表的内容 ,我们之后都会用这个表

SELECT employee_id,last_name,department_id FROM emplyees;

我们用navicat运行代码之后,就会出现一个表在下面,这个被叫做结果集,结果集的名字就是我们表里的名字,能不能不一致呢,是可以的,我们可以在字段名的后面加一个空格,在写我们希望他叫的名字.比如 我们想给emplyee_id叫emp_id就可以这样写

SELECT emplyees_id emp_id,last_name,department_id FROM employees;

这里就会发现我们结果集的名字变成了emp_id,也就是我们起的别名

我们还能写上AS,它是ALIAS的缩写翻译也就是别名,是可以省略的,如图.

别名可以使用一对""引起来

大家可能会奇怪为什么要加一个"",这不是很鸡肋吗,其实在有一些场景下就不能不去了

比如我们这个代码SELECT employee_id,last_name,salary*2 annual sala FROM employees;我们希望他叫annual sala

大家可能看到这个报错,就害怕,其实不用,因为如果不报错信息,让你自己的去找,短句还好,长一点不得要你的命.就像医生,明明有精确的仪器,你硬要望闻问切,那是不是就不合适了.

SELECT employee_id,last_name,salary*2 "annual sala" FROM employees;

这样是不是就不报错了

可能大家会疑惑单引号可不可以,我们也试一试

也可以,注意我们强调我们是要用""引起来,不要用'',因为mysql的自语言不太标准,如果安装SQL标准ANSI里的要求就是"",大家开发的时候不要用'',太不专业了会被人笑话.单引号在字符串和日期的变量的时候使用也是可以的..

这里还是那个问题,字符串在sql语言的ANSI规范里要求用单引号,但是mysql不是太严谨,如果我们用的是oracle这里就会报错.我们还是要严谨一点.养成好习惯

去重重复行

我们要看看一共有多少个部门在我们的表里,这个述求是不是合情合理啊.

错误的:SELECT department_id FROM employees;

比如现在领导让我们列一下我们一共有哪些部门,如果我们打印这个是不是就不太合适,如果有1000个员工就要打印1000条出来,我们是不是要去掉重复值阿.

我们就在前面加一个关键词DISTINCT

正确的:SELECT DISTINCT department_id FROM employees;

错误的:SELECT salary,DISTINCT department_id FROM employees;

大家觉得这么写是正确的吗,

当然是错误的,如果没有DISTINCT的话肯定是没问题的,但是因为我们有了DISTINCT,肯定是不能执行的,因为salary有107条,但是你把部门去重了可能只有12个部门,那一个字段107条一个字段12条,这样肯定不行,那如果我们把DISTINCTdepartment_id放在前面呢,这样靠谱吗,那你可能会觉得前面12条后面107条那不是还是不对吗,其实这里是这样解释的,因为DISTINCT它不仅仅考虑了部门id的去重还考虑了salary去重,代表就是不同部门里的不同工资的情况.

它仅仅是没有报错,但是没有实际意义

SELECT DISTINCT department_id,salary FROM employees;

查了个寂寞.

空值是什么,是否参与运算

,就是我们刚才NULL那个字段的记录值,我们奖金率这个字段就有很多员工是空值.那么我们考虑一个事情

空值是否参与运算,null和0和''这个有什么关系我们要知道null是不等同的.就像我们有一个字段员工id是null,代表的就是不知道他的id,如果你写了0,那么就把这个人仍到部门,null代表的是不清楚,不是0.空值如果参与运算会是什么效果呢.那我们算一下员工的年工资.

SELECT employees_id,salary "月工资",salary*(1+commission_pct)*12 AS "年工资" FROM employees;

这里我们发现没有报错,但是明明有月工资却年工资是空的,就感觉不太对,有些字段就有值,有些就没值.

这是为什么,我们把奖金率也加入大家就找到原因了

我们会发现奖金率是空的时候,年工资也是空的,所以只要空值加入运算,结果就是空值,另外大家可能想把奖金率当成0来计算,这就陷入陷阱了,我们说空不等于0.,我们想做这种运算那就要用到一个函数ifnull,这个我们后面再说22.28

这篇关于最基本的SELECT...FROM结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140703

相关文章

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

easyui 验证下拉菜单select

validatebox.js中添加以下方法: selectRequired: {validator: function (value) {if (value == "" || value.indexOf('请选择') >= 0 || value.indexOf('全部') >= 0) {return false;}else {return true;}},message: '该下拉框为必选项'}

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到