SQL(一)基本语法

文章目录

  • 一、Sql 语言基本特点
  • 二、数据查询(按执行顺序排列)
    • 1. From & Join
    • 2. Where
    • 3. Group by
    • 4. Having
    • 5. Select
    • 6. Distinct
    • 7. Order by
    • 8. Limit/ Offset
  • 三、功能公式
    • 1. 字符处理
    • 2. 时间处理
    • 3. 统计计算

一、Sql 语言基本特点

  1. 不区分大小写
  2. 分号";"表断句,换行符不断句

二、数据查询(按执行顺序排列)

  • 基本格式
Select distinct column_1, Function(column_or_expression), column2 as c2
From my_table 
	JOIN another_table 
		on my_table.key1 = another_table.key2
where conditon1 # group by 前的条件筛选
group by column_3
having group_conditon1 # group by 后的条件筛选
order by column_4 asc/desc
limit m offset n

1. From & Join

  • 说明查询数据来源:可以单表查询,也可以多表查询,多表之间需要有main_key将表格相连。
  • From 或 Join 会第一个执行,确定一个整体的数据范围. 如果要join不同表,可能会生成一个临时Table来用于下面的过程。总之第一步可以简单理解为确定一个数据源表(含临时表)。
#单表查询:
From single_table
# 多表查询:
# 合并在两个表中key1和key2都有的部分
From table1 inner join table2 on table1.key1 = table2.key2 

#right join 以右边table2为主,保留table2所有数据,key1超出key2范围的丢掉不要,key2有key1缺失的补为NULL
From table1 right join table2 on table1.key1 = table2.key2 

#left join 以左边table1为主,保留table1所有数据,key2超出key1范围的丢掉不要,key1有key2缺失的补为NULL
From table1 left join table2 on table1.key1 = table2.key2

#Full join 全链接,仅Key1有的则Key2为Full,仅Key2有的则Key1为Full,保留所有数据
From table1 Full join table2 on table1.key1 = table2.key2

2. Where

  • Where 说明查询条件(只能用于group by之前),多个条件用andor链接。
  • 确定了数据来源 Where 语句就将在这个数据源中按要求进行数据筛选,并丢弃不符合要求的数据行,所有的筛选Column属性只能来自From圈定的表。
  • As别名还不能在这个阶段使用,因为可能别名是一个还没执行的表达式。
  • 常用数值条件语法:
col_num != 4 #基础比较 =, !=;   <, <=;   >, >=;

col_num between 0 and 100 #两数之间
col_num not between 0 and 100 #不在两数之间,在值域外

col_num in (2,4,6) # 在数组内
col_num not in (2,4,6) # 不在数组内

col_num % 2 = 0 # 偶数
col_num %2 # 奇数
col_num %2 =1 # 奇数
  • 常用字符串比较语法
col_str = "abc"
col_str != "abc"
col_str like "abc" #没有通配符时,“like” 和 “=” 作用相同
col_str like "%abc%"# %是通配符,表示任意字符。"abc%"表示abc开头的任意字符,"%abc"表示abc结尾的任意字符, 长度无限制。
col_str like "abc_" # "_"表示一个任意字符。"abc_"会匹配到abcd,不会匹配到abc
col_str in  ("A", "B", "C")
col_str not in  ("A", "B", "C")

3. Group by

  • Group by 对之前的数据进行分组,统计等,并将结果集缩小为分组数。这意味着其他的数据在分组后会丢弃。
  • Group by 可以同时按照多个变量分组
  • 例:原数据表在这里插入图片描述
  • 按1个变量分组
SELECT role,count(*)as count,building is not Null as bn FROM employees
group by role

在这里插入图片描述

  • 按2个变量分组
SELECT role,count(*)as count,building is not Null as bn FROM employees
group by role,bn

在这里插入图片描述

4. Having

  • 如果用了Group by分组, Having会在分组完成后对结果集再次筛选。
  • As别名也不能在这个阶段使用.

5. Select

  • 确定结果之后,Select用来对结果Column简单筛选或计算,决定输出什么数据.
  • 表示表格内所有列变量,也可以单独筛选某个变量
Select * #查询所有列
Select column_1, column_2, column_3 #选择指定列变量	

#Function: 注意不同sql平台的function有所差异
Count(*) #样本总量计数	

6. Distinct

  • 如果数据行有重复Distinct将负责排重.

7. Order by

  • 在结果集确定的情况下,Order by对结果做排序,asc正排从小到大,desc倒排从大到小。
  • 因为Select中的表达式已经执行,此时可以用AS别名.

8. Limit/ Offset

  • 最后 Limit和 Offset从排序的结果中截取部分数据.
  • 常和Order By 语句一起使用,当对整个结果集排序之后,可以用 Limit 指定只返回多少行结果 ,用 Offset 指定从哪一行开始返回。

三、功能公式

1. 字符处理

Length(str)#返回字符串str长度
Locate(substr,str)#返回子串substr在字符串str第一次出现的位置
LTrim(str)#移除字符串str左边的空格
RTrim(str)#移除字符串str右边的空格
Trim(str)#移除字符串str左右两边的空格
Left(str,n)#返回字符串str最左边的n个字符
Right(str,n)#返回字符串str最右边的n个字符
Upper(str)#小写转化为大写

2. 时间处理

AddDate() #增加一个日期,天、周等
AddTime() #增加一个时间,天、周等
CurDate() #返回当前日期
CurTime() #返回当前时间
Date() #返回日期时间的日期部分
DateDiff() #计算两个日期之差
Date_Add() #高度灵活的日期运算函数
Date_Format() #返回一个格式化的日期或时间串
Day() #返回一个日期的天数部分
DayOfWeek() #返回一个日期对应的星期几
Hour() #返回一个时间的小时部分
Minute() #返回一个时间的分钟部分
Month() #返回一个日期的月份部分
Now() #返回当前日期和时间
Second() #返回一个时间的秒部分
Time() #返回一个日期时间的时间部分
Year() #返回一个日期的年份部分

3. 统计计算

Avg() #求均值
Max() #求最大值
Min() #求最小值
Sum() #求和
Count() #统计个数
Abs() #求绝对值

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库(29)——子查询

概念 SQL语句中嵌套SELECT语句&#xff0c;称为嵌套查询&#xff0c;又称子查询。 SELECT * FROM t1 WHERE column1 (SELECT column1 FROM t2); 子查询外部语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。 标量子查询 子查询返回的结果是单个值&#xff08;数字&#xff…

pdf压缩文件怎么压缩最小,软件工具压缩清晰

PDF格式的文件&#xff0c;当其体积过于庞大时&#xff0c;确实在上传的过程中显得尤为不便。今天给大家分享一个压缩pdf的简单的方法&#xff0c;让大家可以轻松的压缩pdf。 浏览器打开 "轻云处理pdf官网" &#xff0c;上传pdf文件&#xff0c;文件上传完成后网站会…

ChatGPT Prompt技术全攻略-精通篇:Prompt工程技术的高级应用

系列篇章&#x1f4a5; No.文章1ChatGPT Prompt技术全攻略-入门篇&#xff1a;AI提示工程基础2ChatGPT Prompt技术全攻略-进阶篇&#xff1a;深入Prompt工程技术3ChatGPT Prompt技术全攻略-高级篇&#xff1a;掌握高级Prompt工程技术4ChatGPT Prompt技术全攻略-应用篇&#xf…

计算机网络到底是指什么?

计算机网络是信息技术领域中最为核心和复杂的一部分&#xff0c;它涵盖了众多的技术原理和应用。下面&#xff0c;我们将从技术层面深入探讨计算机网络的相关内容。 一、计算机网络的分层模型 计算机网络的分层模型是网络通信的基石&#xff0c;它将网络通信过程划分为不同的层…

万能嗅探:视频号下载神器

万能嗅探是一款比较好用资源嗅探软件&#xff0c;界面干净&#xff0c;可以抓取浏览器的网页&#xff0c;不过想必各位主要用来抓取视频号&#xff0c;下面是使用方法。 使用方法 打开万能嗅探客户端&#xff0c;然后打开浏览器&#xff0c;产生网络请求即可&#xff0c;看看…

【Linux高级IO】select、poll、epoll

【Linux高级IO】select、poll、epoll toc 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2024.6.5 前言&#xff1a;本篇博客将会介绍面试重点考察的select、poll、epoll IO: input && Output read && write 应用层read&&write的时候&#xff0c…

PostgreSQL 17 Beta1 发布,酷克数据再次贡献核心力量

得益于全球的开发者贡献&#xff0c;PostgreSQL已成长为一款拥有众多全球用户和贡献者、成熟稳定的开源数据库。2024年5月23日&#xff0c;PostgreSQL全球开发组宣布&#xff0c;PostgreSQL 17的首个 Beta 版本现已开放下载。本次新版本带来了众多惊喜。值得一提的是&#xff0…

【云原生】基于windows环境搭建Docker

目录 一、Docker Desktop搭建 二、前置准备 2.1开启 Hyper-V 2.2 Hyper-V选项看不到问题解决 2.3 开启或升级wsl 三、安装过程 3.1 下载安装包 3.2 安装 Docker Desktop 3.2.1 Docker 图标一直处于starting状态问题解决 3.3 配置仓库与镜像 3.4 docker功能测试 四、…

NRF52833串口和BLE升级bootloader合并(SDK1710,S113协议栈)

打pca10100_s113_ble_debug工程,将生成的key __ALIGN(4) const uint8_t pk[64] = {0xa3, 0x9a, 0x37, 0xb3, 0x1e, 0x44, 0xb5, 0x77, 0xb3, 0xa4, 0xf3, 0x65, 0xb8, 0xe6, 0xff, 0xa4, 0x33, 0x19, 0x30, 0x0c, 0xd8, 0xaf, 0xc6, 0x5a, 0xdf, 0xd1, 0x8f, 0xf3, 0xf3, 0xd…

TCP/IP协议分析实验:通过一次下载任务抓包分析

TCP/IP协议分析 一、实验简介 本实验主要讲解TCP/IP协议的应用&#xff0c;通过一次下载任务&#xff0c;抓取TCP/IP数据报文&#xff0c;对TCP连接和断开的过程进行分析&#xff0c;查看TCP“三次握手”和“四次挥手”的数据报文&#xff0c;并对其进行简单的分析。 二、实…

手机怎么压缩图片?通过三种压缩操作

手机怎么压缩图片&#xff1f;在智能手机日益普及的今天&#xff0c;拍照分享已成为日常生活的一部分。然而&#xff0c;高质量的照片往往占用较大的存储空间&#xff0c;且在网络上传输时速度较慢。那么&#xff0c;如何在手机上压缩图片呢&#xff1f;本文将介绍三种实用的手…

开源与新质生产力

在这个信息技术迅猛发展的时代&#xff0c;全球范围内的产业都在经历着深刻的变革。在这样的背景下&#xff0c;“新质生产力”的概念引起了广泛的讨论。无论是已经成为或正努力转型成为新质生产力的企业&#xff0c;都在寻求新的增长动力和竞争优势。作为一名长期从事开源领域…

详解 Flink 的 ProcessFunction API

一、Flink 不同级别的 API Flink 拥有易于使用的不同级别分层 API 使得它是一个非常易于开发的框架最底层的 API 仅仅提供了有状态流处理&#xff0c;它将处理函数&#xff08;Process Function &#xff09;嵌入到了 DataStream API 中。底层处理函数&#xff08;Process Func…

BERT+PET方式数据处理

基于BERTPET方式数据预处理介绍 BERTPET方式数据预处理&#x1f43e; 本项目中对数据部分的预处理步骤如下: 查看项目数据集编写Config类项目文件配置代码编写数据处理相关代码 1 查看项目数据集&#x1f43e; 数据存放位置&#xff1a;/Users/***/PycharmProjects/llm/prom…

如何有效管理低绩效人员:CARES 框架

本文主要介绍了如何通过CARES框架有效管理低绩效员工&#xff0c;帮助他们提升绩效和积极性。原文: How to Effectively Manage Low Performers: The CARES Framework 作为管理者&#xff0c;最具挑战性的任务之一就是帮助表现不佳的团队成员提高积极性和技能水平。必须认识到&…

Linux磁盘分区使用情况查询

一、磁盘分区使用情况查询 1. 查询磁盘整体使用情况使用 df -h进行查询 如图我们可以了解到磁盘的一些大致的使用情况&#xff0c;注意当已用部分有超过80%使用的分区就意味着你需要进行磁盘的清理了。 2.查询指定的磁盘使用情况 使用指令 du -h 当不指定目录时&#xff0c;默…

“深入探讨Java中的对象拷贝:浅拷贝与深拷贝的差异与应用“

前言&#xff1a;在Java编程中&#xff0c;深拷贝&#xff08;Deep Copy&#xff09;与浅拷贝&#xff08;Shallow Copy&#xff09;是两个非常重要的概念。它们涉及到对象在内存中的复制方式&#xff0c;对于理解对象的引用、内存管理以及数据安全都至关重要。 ✨✨✨这里是秋…

秒解-今年高考数学压轴题,你不知道有多爽!附带:计算机程序验证结果

同步的公众号文章在此&#xff0c;今年高考数学-压轴题 原来可以秒解啊&#xff01;附带&#xff1a;计算机程序验证结果没错&#xff0c;其实高考数学-压轴题其实可以秒解的呀~https://mp.weixin.qq.com/s/4M50qP9MFwJOS9OpeyxvSg 没错&#xff0c;其实新课标I数学-压轴题其实…

里卡提方程(Riccati Equation)例子

里卡提方程(Riccati Equation) 里卡提方程(Riccati Equation)在人形机器人控制中有重要的应用,特别是在最优控制和估计问题中。里卡提方程主要用于求解线性二次型调节器(LQR, Linear Quadratic Regulator)和卡尔曼滤波器(Kalman Filter)。这些方法有助于提高机器人控…

RISCV中CLINT和PLIC解析

中断这个东西理论上属于CPU核心的东西。一般来说并不需要重新设计。实际的实现中是比较繁琐的&#xff0c;此处只介绍原理。ARM基本上会用NVIC(Nested Vectored Interrupt Controller) 的东西&#xff0c;RISC-V目前实现了一个比较简单的东西&#xff08;有人称之为简洁高效&am…