SQL基础语法总结(查询)

学习网站:https://www.w3schools.com/sql/,提供在线编程
以下内容仅SQL常见语法总结

数据

  • Customers表

在这里插入图片描述

  • Products表

在这里插入图片描述

  • OrderDetails表

在这里插入图片描述

  • Orders表

在这里插入图片描述

  • Shippers表

在这里插入图片描述

  • Employees表

在这里插入图片描述

选择查询

SELECT

select语句用来从头数据库中选择数据

SELECT column1, column2, ...
FROM table_name;# 选择Customers表所有数据
select * 
from Customers;

SELECT DISTINCT

select distinct用来返回非重复值

SELECT DISTINCT column1, column2, ...
FROM table_name;# 计算Customers表country类别数
select count(distinct Country) 
from Customers;

条件查询

WHERE

where用来过滤指定条件的纪录,包括=,>,<,>=,<=,<>,between,like,in

SELECT column1, column2, ...
FROM table_name
WHERE condition;# 筛选Customers表ID=1的纪录
select * from Customers
where CustomerID=1;

LIKE

like用于在where条件中搜索指定列样式的记录

  • %:用于表示0个,1个或者多个字符
  • _:用于表示1个字符
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;# 在Customers表中搜索客户名第二个位置是r
select *
from Customers
where CustomerName like '_r%';

AND OR

where可以用来包含一个或多个and or运算符,表示多个过滤条件

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 OR condition3 ...;# 选择country是spain并且客户名字开头是G或R
select * 
from Customers
where Country = 'Spain' and (CustomerName like 'G%' or CustomerName like 'R%');

NOT

Not表示与条件相反的结果

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;# 选择不是来自Paris和London的客户
select * 
from Customers
where City not in ('Paris', 'London');

IN

in允许在where子句中指定多个值,是多个or条件的简写

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);# 选择没有出现在订单表的所有客户
select *
from Customers
where CustomerID not in (select CustomerID from Orders);

BETWEEN

Between选择给定范围内的值,包含开始和结束

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;# 从Products选择价格在10-20,ID是1/2/3的产品
select *
from Products
where Price between 10 and 20
and CategoryID in (1,2,3);

连接查询

SQL中的连接包括四种

  • 内连接(INNER) JOIN:返回两个表中具有匹配值的记录
  • 左连接LEFT (OUTER) JOIN:返回左表中的所有记录以及右表中匹配的记录
  • 右连接RIGHT (OUTER) JOIN:返回右表中的所有记录以及左表中匹配的记录
  • 全连接FULL (OUTER) JOIN:当左表或右表中有匹配项时返回所有记录

在这里插入图片描述

INNER JOIN

inner join和join是相同的

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
# 选择所有订单的编号,客户名和托运人名
select Orders.orderID, Customers.CustomerName, Shippers.ShipperName
from ((Orders
inner join Customers on Orders.CustomerID = Customers.CustomerID)
inner join Shippers on Orders.ShipperID = Shippers.ShipperID);

在这里插入图片描述

LEFT JOIN

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
# 查询所有客户对应的订单
select Customers.CustomerName, Orders.OrderID
from Customers
left join Orders
on Customers.CustomerID = Orders.CustomerID;

在这里插入图片描述

RIGHT JOIN

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
# 查询所有雇员对应的订单号并按订单号排序
select Orders.OrderID, Employees.LastName, Employees.FirstName
from Orders
right join Employees
on Employees.EmployeeID = Orders.EmployeeID
order by Orders.OrderID;

在这里插入图片描述

FULL OUTER JOIN

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
# 查询所有客户和所有订单
select Customers.CustomerName, Orders.OrderID
from Customers
full join Orders
on Customers.CustomerID=Orders.CustomerID
order by Customers.CustomerName;

在这里插入图片描述

聚合函数

MIN() MAX()

Min()返回选择列的最小值,max()返回选择列的最大值

SELECT MIN(column_name)
FROM table_name
WHERE condition;SELECT MAX(column_name)
FROM table_name
WHERE condition;# 从Products表中选择最小的价格命名为SmallestPrice
select min(Price) as SmallestPrice
from Products;

COUNT()

count()用来返回匹配指定条件的行数,如果指定column_name而不是用*,NULL值不会被计数

SELECT COUNT(column_name)
FROM table_name
WHERE condition;# 从Products表选择Price大于20的价格种类数
select count(distinct Price) as [number of price]
from Products
where Price > 20;

SUM()

Sum()函数用来返回一个数值列的总和

SELECT SUM(column_name)
FROM table_name
WHERE condition;# 从OrderDetails表中选择产品id为1的总金额数,单价为10
select sum(Quantity * 10)
from OrderDetails
where ProductID = 1;

AVG()

Avg()函数用来返回一个数值列的平均值,NULL值会被忽略

SELECT AVG(column_name)
FROM table_name
WHERE condition;# 从Products中选择价格大于平均值的记录
select *
from Products
where Price > (select avg(Price) from Products);

结果排序

ORDER BY

order by用于排序结果集(升降)

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;# 按country升序排列,CustomerName降序排列
select * from Customers
order by Country ASC, CustomerName DESC;

分组查询

GROUP BY

group by语句将具有相同值的行分组到汇总行中,例如“查找每个国家/地区的客户数量”,语句通常与聚合函数(COUNT()、MAX()、MIN()、SUM()、AVG())一起使用,以按一列或多列对结果集进行分组。

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
select count(CustomerID), Country
from Customers
group by Country
order by count(CustomerID) desc;

在这里插入图片描述

# 查询所有托运人的订单数量并且排列
select Shippers.ShipperName, count(Orders.orderID) as [number of orders]
from Shippers
left join Orders
on Shippers.ShipperID = Orders.ShipperID
group by ShipperName
order by count(Orders.orderID);

在这里插入图片描述

修改数据

INSERT INTO

insert into用来在表格里插入新记录

# 指定列插入值
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);# 不指定列需要确保值和表中列完整对应
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
# 同时插入多条记录
insert into Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
values
('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway'),
('Greasy Burger', 'Per Olsen', 'Gateveien 15', 'Sandnes', '4306', 'Norway'),
('Tasty Tee', 'Finn Egan', 'Streetroad 19B', 'Liverpool', 'L1 0AA', 'UK');

NULL Value

字段可以设置为optional,这样插入和更新记录时可以不添加该字段的值,会存储为NULL Value

# 选择空值的记录
SELECT column_names
FROM table_name
WHERE column_name IS NULL;# 选择非空的记录
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
# 选择地址非空的客户
select CustomerName, ContactName, Address
from Customers
where Address is not null;

UPDATE

update用来更新表格中已经存在的记录,注意where条件,如果漏掉where会更新所有记录

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;# 更新客户1的ContactName和City
update Customers
set ContactName = 'Alfred Schmidt', City = 'Frankfurt'
where CustomerID = 1;

DELETE

Delete用来删除表格中已经存在的记录,注意where条件,如果漏掉where会删除所有记录

# 删除表格中指定条件的记录(只删除记录不删除表格)
DELETE FROM table_name WHERE condition;# 完全删除表格
DELETE FROM table_name;
# 删除Alfreds Futterkiste的记录
delete from Customers
where CustomerName='Alfreds Futterkiste';

分页显示

LIMIT

LIMIT用来指定返回记录的个数,在SQL Server中语法是SELECT TOP,在MySQL是LIMIT

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;# 选择CustomerName倒序前三名
select * from Customers
order by CustomerName desc
limit 3;

表(列)别名

As

As用于为表或表中的列提供临时名称,在大多数数据库语言里可以省略,命名为多个的时候可以用[]和" "

# 作用于列
SELECT column_name AS alias_name
FROM table_name;# 作用于表
SELECT column_name(s)
FROM table_name AS alias_name;# 选择ProductName列并且修改为my product
select ProductName as [my product]
from Products;

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

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

相关文章

【论文阅读笔记】 Curated Pacific Northwest AI-ready Seismic Dataset

Curated Pacific Northwest AI-ready Seismic Dataset 太平洋西北部人工智能地震数据集 摘要 描述了一个AI就绪地震数据集包括各种地震事件参数 仪器元数据 地震波行描述地震目录和事件属性&#xff08;事件震级类型&#xff0c;信道类型&#xff0c;波形极性&#xff0c;信…

BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain

BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain----《BadNets:识别机器学习模型供应链中的漏洞》 背景&#xff1a; 许多用户将训练过程外包给云计算&#xff0c;或者依赖于经过训练的模型&#xff0c;然后根据特定的任务对模型进行微调。这…

SequenceFile、元数据操作与MapReduce单词计数

文章目录 SequenceFile、元数据操作与MapReduce单词计数一、实验目标二、实验要求三、实验内容四、实验步骤附&#xff1a;系列文章 SequenceFile、元数据操作与MapReduce单词计数 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS SequenceFile读写操作掌握Map…

Linux下Jenkins自动化部署SpringBoot应用

Linux下Jenkins自动化部署SpringBoot应用 1、 Jenkins介绍 官方网址&#xff1a;https://www.jenkins.io/ 2、安装Jenkins 2.1 centos下命令行安装 访问官方&#xff0c;点击文档&#xff1a; 点击 Installing Jenkins&#xff1a; 点击 Linux&#xff1a; 选择 Red Hat/…

文件系统相关

文件系统部分的大纲要求&#xff1a; 文件系统的全局结构&#xff1a;文件系统在外存中的结构&#xff0c;文件系统在内存中的结构外存空闲空间管理办法虚拟文件系统文件系统挂载 一、文件系统的层次结构 可分为三个层次&#xff1a;最低层是对象及其属性&#xff0c;中间层…

力扣:盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 …

C# Onnx Yolov8 Detect 指纹检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…

ShareMouse for Mac(多台电脑鼠标键盘共享软件)

ShareMouse mac版是一款Mac平台上可以在多台电脑间共享鼠标的工具软件&#xff0c;sharemousefor Mac支持 Windows 与 Mac&#xff0c;并可以在不同电脑间共享剪贴板。只需要移动鼠标指针的到想控制的显示器那里去、鼠标光标就会神奇地“跨越”到邻近的电脑屏幕上。每个计算机都…

linux安装新版本git2、配置github-ssh。(centos、aws)

一、安装Git 1、yum默认版本git #1.安装git sudo yum install git -y #2.确认Git已经安装成功 git --version如果要安装较新版本&#xff0c;可以安装一个repo &#xff0c;但是我这第一次尝试失败了&#xff0c;执行完提示找不到git2u&#xff0c;ius repo也连不上。而且每次…

FreeRTOS学习day1

顾名思义 免费的实时操作系统 用法基本和Linux下的多线程编程类似 探索者开发版实验 动态创建4个任务start_task task1 task2 task3 优先级依次为1 2 3 4 &#xff08;注意优先级不能为0,0是空闲任务&#xff09; 我的理解&#xff1a;主线程start_task 主线程 task1 ta…

doc与docx文档转html,格式样式不变(包含图片转换)

最近做一个富文本的需求&#xff0c;要求把文档内容转换到富文本内&#xff0c;文档中的格式也好&#xff0c;样式也好&#xff0c;图片啥的都要一致展示&#xff1b;踩了不少坑&#xff0c;据说word文档其实是一个压缩包&#xff0c;我不是特别清楚但是也能理解&#xff0c;自…

一、BurpSuite基本界面学习

一、Dashboard 1.Scan Scan功能&#xff1a;能够对网站进行爬行&#xff08;主要发现网站可交互的接口和网址关联的路径&#xff0c;结果显示在Target&#xff09;和代码审计&#xff08;除了爬行的效果外&#xff0c;一定程度上会进行漏洞发现与查找&#xff09; 重点&#…

Java代理

一、代理模式 代理模式定义&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。 上面类图中有一个订单接口类(OrderService)、一个订单实现类(OrderServiceImpl)&#xff0c;订单模块的业务相对复杂和重要&#xff0c;如果这时候要在方法执行前后加上日志&#xff0c…

SD NAND对比TF卡优势(以CSNP4GCR01-AMW为例)

最近做的一个项目&#xff0c; 需要加大容量存储&#xff0c;这让我想到之前在做ARM的开发板使用的TF卡方案&#xff0c;但是TF卡需要携带卡槽的&#xff0c;但是有限的PCB板布局已经放不下卡槽的位置。 这个时候就需要那种能够不用卡槽&#xff0c;直接贴在板子上面&#xff0…

深度学习_3_实战_房价预测

梯度 实战 代码&#xff1a; # %matplotlib inline import random import torch import matplotlib.pyplot as plt # from d21 import torch as d21def synthetic_data(w, b, num_examples):"""生成 Y XW b 噪声。"""X torch.normal(0,…

【Ubuntu18.04】Livox Tele-15使用教程

Livox Tele-15使用教程 引言1 下载并安装Livox Viewer1.1 打开Livox Viewer程序1.2 设备ip链接 2 览沃Livox SDK二次开发并封装ROS2.1 览沃Livox SDK安装2.2 览沃Livox livox_ros_driver 安装2.3 Launch 配置文件描述 3 保存lvx格式的数据文件3.1 使用览沃Viewer保存lvx文件3.2…

vuecli2关于下载本地取环境变量没问题部署后路径取不到环境变量问题解决

功能 下载功能,用a标签实现下载 代码错误思路分析 解决办法可以忽略直接看下面 解决思路 在每个config文件中都定义了file_url,本地运行没有问题,但是部署到服务器开发环境, 拿到的是生产环境的FILE_URL地址 首先看了流水线-构建配置-编译配置-编译脚本里的打包命令: ** 本…

51单片机KeyWard

eg1&#xff1a; 单片机键盘的分类 键盘分为编码键盘和非编码键盘&#xff0c;键盘上闭合键的识别由专用的硬件编码器实现&#xff0c;并产生键编码号或键值得称为编码键盘&#xff0c;如计算机键盘&#xff0c;而靠软件来识别的称为非编码键盘&#xff0c;在单片机组成的各种…

百度松果20231022作业

越狱 盒子与球 斯特林第二类数&#xff08;用dp求&#xff09;*盒子的阶乘 int dp[11][11]; //n>k int A(int x){int res1;fer(i,2,x1)res*i;return res; } signed main(){IOS;dp[2][1]dp[2][2]dp[1][1]1;fer(i,3,11){dp[i][1]1;fer(j,2,i){dp[i][j]j*dp[i-1][j]dp[i-1][j-…

面试知识储备--打包工具篇(webpack和vite)

1.vite常用配置 常用配置 1.preprocessorOptions 传递给 CSS 预处理器的配置选项 2.PostCSS 也是用来处理 CSS 的&#xff0c;只不过它更像是一个工具箱&#xff0c;可以添加各种插件来处理 CSS 3.resolve.extensions 导入时想要省略的扩展名列表。默认值为 [‘.mjs’, ‘.js’…