【牛客SQL快速入门】SQL基础(一)

一、基础查询

SELECT ... FROM ...

查询所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表中查询数据。

查询多个列

要想从一个表中查询多个列,仍然使用相同的 SELECT 语句。唯一的不同是必须在SELECT 关键字后给出多个列名,列名之间必须以逗号分隔

查询所有列

除了指定所需的列外(如上所述,一个或多个列),SELECT 语句还可以查询所有的列而不必逐个列出它们。在实际列名的位置使用星号(*)通配符。

查询结果去重

每个不同的值仅出现一次,distinct 关键字加在去重字段前。

查询结果限制返回行数

在默认情况下,SELECT 语句会返回指定表中所有匹配的行,可以通过Limit语句限制返回结果行数。Limit语句一般加在SQL语句末尾,并且与数字搭配,写作Limit N,N代表想要限制返回的行数。

查询后的列重命名

在默认情况下,查询结果返回的列名会原始表中的列名一致,SQL也提供了列重命名的语法--'AS',赋予列不同的名字以展示更多的信息

二、条件查询

单列排序

对SELECT语句检索出的数据进行排序,可使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。(默认为升序排序

多列排序

要按多个列排序,简单指定列名,列名之间用逗号分开即可,在排序时会按照列给出的先后顺序依次排序

升序降序

在默认情况下,ORDER BY会对数据进行升序排序(从 A 到Z),我们还可以使用 ORDER BY 子句进行降序(从 Z 到 A)排 序。为了进行降序排序, 必须指定 DESC 关键字。在order by最后加上desc结果进行降序排序 。

多列排序的降序:

        DESC关键字只应用到直接位于其前面的列名。也就是说如果我们SQL语句写的是 Order By age desc, gpa,那么排序将首先按照age降序排序序,再按照gpa升序排序输出。

三、基础操作符

数据库中一般着包含大量的数据,大多数场景下我们只需要检索满足特定条件的数据。

where语句

在SQL语法中,可以使用WHERE语句对数据进行过滤,WHERE语句通常跟在From语句后

Select device_id From user_profile Where gender = 'male'

Where语句需要和操作符搭配使用,选择合适的操作符可以大大提高查询的效率,下面对常见的操作符进行一些介绍。

不等于号

不等于号在SQL中的写法为 < > 或 !=,代表筛选出不满足某条件的数据。

大于号小于号

大于号SQL中的写法为 > ,小于号为 < ,代表筛选出大于或小于某个条件的数据。

范围值

范围值限制方法为 between n1 and n2 ,n1 和 n2 为要限制的区间范围,使用中需要注意两点:

  • 一是 and 之前的值 需要 小于 and 之后的值,不然查询会返回空结果。
  • 二是在 hive sql 中结果会包括两端值。
空值

在表存储的数据类型中,有一类特殊的值叫空值,其定义为当一个字段不包括任何值时,称其包含空值 NULL,空值与字段包含 0、空字符串或仅仅包含空格是不同的概念。

在对空值进行筛选时,不能用等于号简单的判断是否 ‘= NULL’。SQL 语句有一个特殊的 WHERE 子句,可用来检查具有 NULL 值的列。这个 WHERE 子句就 是 IS NULL 子句。

Select device_id,gender,age From user_profile Where gender is Null

这条语句可以返回表中所有性别列值为空的用户数据,同样如果我们想要剔除空值数据的话,也需要用一个特殊的WHERE子句,IS NOT NULL。

Select device_id,gender,age From user_profile Where gender is Not Null

四、高级操作符

为了进行更强的过滤控制,SQL 允许给出多个 WHERE 子句,这些子句有两种使用方式,以 AND 子句或 OR 子句的方式使用。

AND操作符

在过滤数据时如果我们想结果同时满足多个条件,可以使用 AND 操作符给 WHERE子句附加条件

Select device_id,age From user_profile Where age <30 and gender = 'male'
OR操作符

OR 操作符逻辑与 AND 操作符正好相反,在过滤数据时如果我们想要结果只需满足多个条件中的一个,可以使用OR操作符对条件进行连接

Select device_id,gender,age From user_profile Where university= '山东大学' or university= '复旦大学'
IN 和 Not IN

IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN 取 一组由逗号分隔、括在圆括号中的合法值。 下面的例子说明了这个操作符:

Select device_id,gender,age,university,gpa From user_profileWhere university in ('北京大学','复旦大学')

WHERE 子句中的 NOT 操作符有且只有一个功能,那就是否定其后所跟的任何条件。

所以 NOT 和 IN 一起使用等价于不等于括号中的条件。

操作符混合运用

WHERE 子句可以包含任意数目的 AND 和 OR 操作符,允许两者结合以进行复杂、高级的过滤。在使用时需要注意的一点是两者优先级的问题, SQL在处理OR操作符前,优先处理 AND 操作符。

Select device_id,gender,age,university,gpa From user_profile Where university ='北京大学' or gpa>3.5 and university = '山东大学'

        代码中Where函数限定条件正确的理解逻辑为:筛选出学校为北京大学或山东大学中gpa大于3.5的学生,SQL是先对and逻辑进行了理解,再处理or的逻辑。一般在使用中为防止表达错误,可以采取括号的形式把想要一起判断的逻辑放在同一个括号中。

Select device_id,gender,age,university,gpa From user_profile Where university ='北京大学' or (gpa>3.5 and university = '山东大学')
Like操作符——模糊匹配

在实际运用中,有时我们会需要进行模糊匹配,这时就可以用到Like操作符

Like操作符需要和通配符结合使用,一般最常用的通配符是 %, 在搜索串中,%表示任何字符出现任意次数。例如,为了找出所有学校中以北京开头的用户,可发布以下 SELECT 语句:

Select device_id,gender,age,university,gpaFrom user_profileWhere university like '北京%'

在执行这条语句时,将检索任意以北京起头的词, %表示“北京”之后多少字符都可以。只要是以北京开头,就会被检索到。

通配符可在搜索模式中的任意位置使用,并且可以使用多个通配符。

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

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

相关文章

Xinstall助力提升用户体验:一键打开App用户页面

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着App数量的激增&#xff0c;如何让用户更便捷地打开和使用App&#xff0c;提升用户体验&#xff0c;成为了开发者和广告主们亟待解决的问题。此时&#xff0c;Xinstall作为国内专业…

先安装CUDA后安装Visual Studio的额外配置

VS新建项目中增加CUDA选项 以vs2019 cuda 11.3为例 关闭vs2019解压cuda的windows安装包cuda_11.3.0_465.89_win10.exe进入路径cuda_11.3.0_465.89_win10\visual_studio_integration\CUDAVisualStudioIntegration\extras\visual_studio_integration\CudaProjectVsWizards\拷贝…

[Linux][权限][粘滞位]详细解读,深入了解Linux权限

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户(root)、普通用户 超级用户&#xff1a;可以在Linux系统下做任何事情&#xff0c;不受限制普通用户&#xff1a;在Linux下做有限的事情&#xff0c;可以有多个超级用户的命令提示符是**“#”&#xff0c;普通用户的命…

Linux中磁盘管理

一.磁盘管理的概括和简要说明 磁盘空间的管理&#xff0c;使用硬盘三步&#xff1a; &#xff08;1&#xff09;分区&#xff1a; &#xff08;2&#xff09;安装文件系统格式化 &#xff08;3&#xff09;挂载&#xff1a; 硬盘的分类&#xff1a; &#xff08;1&#x…

ElasticSearch 的 BoolQueryBuilder 使用

ElasticSearch的BoolQueryBuilder定义&#xff1a; A Query that matches documents matching boolean combinations of other queries import org.elasticsearch.index.query.QueryBuilders;BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery(); for (String wor…

基于单片机自动增益放大电路0-3倍系统

**单片机设计介绍&#xff0c;基于单片机自动增益放大电路0-3倍系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机自动增益放大电路0-3倍系统是一个电子工程领域的创新设计&#xff0c;它结合了单片机技术和自动增益…

安卓开机启动流程

目录 一、整体框架二、流程代码分析2.1 Boot ROM2.2 Boot Loader2.3 Kernel层Kernel代码部分 2.4 Init进程Init进程代码部分 2.5 zygote进程zygote代码部分 2.6 SystemServer进程SystemServer代码部分 2.7 启动Launcher与SystemUI 三、SystemServices3.1 引导服务3.2 核心服务3…

物流未来之路:用AI优化路线和革新货物追踪

行业现状 物流行业是连接全球市场的纽带&#xff0c;它支撑着从原材料采购、生产到最终产品分销的整个供应链。随着互联网和技术的发展&#xff0c;特别是电子商务和在线零售的蓬勃发展&#xff0c;物流行业面临着前所未有的机遇和挑战。 电子商务增长&#xff1a;随着消费者购…

如何在Java中创建对象输入流

在Java中创建对象输入流&#xff08;ObjectInputStream&#xff09;通常涉及以下步骤&#xff1a; 获取源输入流&#xff1a;首先&#xff0c;你需要有一个源输入流&#xff0c;它可能来自文件、网络连接或其他任何可以提供字节序列的源。 包装源输入流&#xff1a;接着&#…

linux centos 定时任务,执行shell脚本

1、crontab -e 写入规则&#xff0c;比如每隔30分钟执行一次 crontab -e# 每隔30分钟执行一次 */30 * * * * /home/www/gjdw/shell/test.sh2、编写shell脚本&#xff0c;另存为test.sh #!/bin/bash # no mail MAILTO"" php /home/www/app/public/index.php human/d…

Openstack(T)部署ceilometer-gnocchi-panko-aodh

前言&#xff1a;简单概述4个服务做什么&#xff0c;如何协同起来 ceilometer负责采集数据&#xff0c;采集的数据分为计量数据和事件数据&#xff0c;计量数据交给gnocchi处理(本文gnocchi将计量数据存储在ceph存储池中)&#xff0c;事件数据存储在panko中&#xff0c;aodh负…

Flink内存模型

1、Flink进程内存模型 配置项 TaskManager 配置参数 JobManager 配置参数 Flink 总内存taskmanager.memory.flink.sizejobmanager.memory.flink.size进程总内存taskmanager.memory.process.sizejobmanager.memory.process.size 2、Task Managers内存模型 组成部分 配…

详解Qt中的容器

Qt中的容器类是用于存储和组织数据的重要组件&#xff0c;它们是基于模板类的&#xff0c;可以根据需要存储任意类型的数据。Qt的容器类大致分为两类&#xff1a;顺序容器和关联容器。下面将详细解释各个容器类的用途、差异和使用时的注意事项&#xff0c;并附上代码示例。 1.…

C#操作MySQL从入门到精通(7)——对查询数据进行简单过滤

前言 我们在查询数据库中数据的时候,有时候需要剔除一些我们不想要的数据,这时候就需要对数据进行过滤,比如学生信息中,我只需要年龄等于18的,类似这种操作,本文就是详细介绍如何对查询的数据进行初步的过滤。 1、等于操作符 本次查询student_age 等于20的数据,使用我…

关于K8S集群中maste节点r和worker节点的20道面试题

1. 什么是Kubernetes&#xff08;K8S&#xff09;&#xff1f; Kubernetes&#xff08;通常简称为K8S&#xff09;是一种开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。以下是Kubernetes的一些核心特性和优势&#xff1a; 自动化部署和扩展&…

(一)Kafka 多租户架构

目录 一. 前言 二. Kafka 多租架构&#xff08;Multi-Tenancy&#xff09; 2.1. 概览 2.2. 使用 Topic 命名为租户创建用户空间&#xff08;命名空间&#xff09; 2.3. 配置 Topic&#xff08;Configuring Topics: Data Retention And More&#xff09; 一. 前言 Kafka 租…

深入了解ConnMan:Linux下的网络管理精灵

在Linux生态系统中&#xff0c;网络配置和管理是任何用户或管理员日常任务的重要组成部分。随着移动计算设备的普及和物联网(IoT)的快速发展&#xff0c;对灵活、轻量级且功能强大的网络管理工具的需求日益增长。这就是ConnMan——Connection Manager的用武之地。 ConnMan简介…

fr中如果要调整FVS中的图表类组件的相关属性的研究摘要

每个FVS组件里外层套一个div duchamp-widget-view ,这个是在view/duchamp/resource?resource=/com/fr/plugin/wysiwyg/web/static/js/preview.f8c6df67.chunk.js中搜索关键字duchamp-widget-view可找到。基本每个组件都会走:{key: "setChartOptions",value: funct…

Zookeeper脑裂解决方案

Zookeeper脑裂原因&#xff1a; 主要原因是Zookeeper集群和Zookeeper client判断超时并不能做到完全同步&#xff0c;也就是说可能一前一后&#xff0c;如果是集群先于client发现&#xff0c;那就会出现上面的情况。同时&#xff0c;在发现并切换后通知各个客户端也有先后快慢…

python 08Pandas

1.基础概念 2.基本操作 &#xff08;1&#xff09;加载数据集 import pandas as pd #引入pandas包 打开csv文件 df pd.read_csv(./data/gapminder.tsv,sep\t) #\t制表符&#xff0c;即tab&#xff0c;缩进四个字符 \n表示回车换行 print(type(df)) print(df.head()) #…