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.rhkb.cn/news/166971.html

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

相关文章

交换机/防火墙-基础配置-23.10.11

1.MAC地址 交换机在给主机之间传递信息包时&#xff0c;通过MAC地址来标识每台主机 主机间发生信息包交换时&#xff0c;交换机就会将通信过的主机的mac地址存下 dis mac-address 交换机转发的数据包中&#xff0c;会包含一个目标MAC&#xff0c;交换机识别数据包中的目标MA…

可视化数学分析软件 MATLAB R2021b mac中文版软件介绍

MATLAB R2021b mac作为数学类科技应用软件中首屈一指的商业数学软件&#xff0c;可以帮助您进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。…

自己动手写编译器:c 语言模板中的输入模块设计

使用过“框架”的同学都能感受到“框架”带来的方便。所谓”框架“本质上就是一系列代码安排帮助我们完成脏活累活&#xff0c;或者复杂的工作流程后&#xff0c;把处理结果交给我们提供的代码。本节我们要完成的 c 语言模板也是一个框架&#xff0c;它也需要做一系列脏活累活&…

vue重修之路由【上】

文章目录 单页应用程序: SPA - Single Page Application路由简介Vue Reouter简介VueRouter的使用&#xff08;52&#xff09;组件的存放目录问题组件分类存放目录 路由的封装抽离 单页应用程序: SPA - Single Page Application 单页面应用(SPA): 所有功能在 一个html页面 上 单…

【Java 进阶篇】深入了解 Bootstrap 全局 CSS 样式

Bootstrap 是一个流行的前端框架&#xff0c;以其强大的全局 CSS 样式而闻名。这些样式能够帮助开发者快速创建漂亮的、响应式的网页&#xff0c;而无需从头编写复杂的 CSS。在本文中&#xff0c;我们将深入探讨 Bootstrap 的全局 CSS 样式&#xff0c;适合初学者&#xff0c;帮…

最新AI创作系统ChatGPT源码+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

RabbitMQ队列及交换机的使用

目录 一、简单模型 1、首先控制台创建一个队列 2、父工程导入依赖 3、生产者配置文件 4、写测试类 5、消费者配置文件 6、消费者接收消息 二、WorkQueues模型 1、在控制台创建一个新的队列 2、生产者生产消息 3、创建两个消费者接收消息 4、能者多劳充分利用每一个消…

面试官心声:个个都说会自动化,结果面试一问细节全露馅了

今年我们部门计划招聘几名自动化测试工程师&#xff0c;为此我进行了面试和培训&#xff0c;发现了一个让我感到担忧的趋势&#xff0c;许多候选人可以轻松地回答有关脚本编写、元素定位、框架API等问题。然而一问到实际项目&#xff0c;比如“如何从0开始搭建自动化体系”、“…

集成学习方法之随机森林-入门

1、 什么是集成学习方法 集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型&#xff0c;各自独立地学习和作出预测。这些预测最后结合成组合预测&#xff0c;因此优于任何一个单分类的做出预测。 2、 什么是随机森林 在机器学习中&…

如何借助边缘智能网关打造智慧城市便民驿站

智慧城市驿站是一类提供多样化便利服务的新型智能公共设施&#xff0c;通过融合物联网技术、边缘智能技术、新能源技术等&#xff0c;为城市居民整合提供休闲、购物、卫生、广告、安全等公共服务&#xff0c;进一步提升日常生活体验。本篇就为大家介绍如何基于边缘智能网关&…

FPGA【紫光语法】

寄存器数据类型&#xff1a; reg 默认为 1 bit wide&#xff0c;如果超过 1 bit&#xff0c;则需要 range declaration 设置 reg 的位宽integer 默认位宽为 32 bit&#xff0c;不允许有 range declarationtime 默认位宽为 64 bit&#xff0c;不允许有 range declarat…

Redis常用配置详解

目录 一、Redis查看当前配置命令二、Redis基本配置三、RDB全量持久化配置&#xff08;默认开启&#xff09;四、AOF增量持久化配置五、Redis key过期监听配置六、Redis内存淘汰策略七、总结 一、Redis查看当前配置命令 # Redis查看当前全部配置信息 127.0.0.1:6379> CONFIG…

python:遗传算法(Genetic Algorithm,GA)求解23个测试函数

一、遗传算法 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;起源于对生物系统所进行的计算机模拟研究&#xff0c;是一种随机全局搜索优化方法&#xff0c;它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象&#xff0c;从任一…

Android切换主题生命周期流程与onSaveInstanceState和onRestoreInstanceState,Kotlin

Android切换主题生命周期流程与onSaveInstanceState和onRestoreInstanceState&#xff0c;Kotlin import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivityclass MainActivity : AppCompatActivity() {private val TAG "fly&…

面试二总结

bean的生命周期&#xff1a; 数据库采用行级锁索引&#xff08;使用排他锁&#xff09;&#xff1a; mysql事务隔离级别 未提交读(Read uncommitted)是最低的隔离级别。通过名字我们就可以知道&#xff0c;在这种事务隔离级别下&#xff0c;一个事务可以读到另外一个事务未提交…

【C语言】#define宏与函数的优劣对比

本篇文章目录 1. 预处理指令#define宏2. #define定义标识符或宏&#xff0c;要不要最后加上分号&#xff1f;3.宏的参数替换后产生的运算符优先级问题3.1 问题产生3.2 不太完美的解决办法3.3 完美的解决办法 4.#define的替换规则5. 有副作用的宏参数6. 宏与函数的优劣对比6.1 宏…

【Linux】进程间通信——共享内存

目录 一、什么是共享内存 二、共享内存的原理 三、使用共享内存实现进程间通信 3.1 shmget接口 3.1.1 key形参详解 3.2 释放共享内存 3.2.1 ipcs指令 3.2.2 ipcrm指令 3.2.3 shmctl接口 3.3 关联共享内存 3.4 去关联共享内存 3.5 使用共享内存进行进程间通信实例 …

Java基础-IO流

目录 1 File 类的使用 1.1 File类的概念 1.2 构造方法 1.3 常用方法 1.4 课后练习 2 IO流原理及流的分类 2.1 IO原理 2.2 流的分类 2.3 IO流体系 2.4 接口方法 2.4.1 InputStream & Reader相同点 2.4.2 InputStream方法详解 2.4.3 Reader方法详解 2.4.4 Outp…

ant javac任务的fork和executable属性

ant javac任务是用于编译源文件的。 它的fork属性表示是否用JDK编译器在外部执行javac&#xff0c;取值可以为"yes"、“no”&#xff0c;默认值为"no"。 当fork属性的取值为"yes"时&#xff0c;可以用executable属性指明javac可执行文件的完全…

sql高级教程-索引

文章目录 架构简介1.连接层2.服务层3.引擎层4.存储层 索引优化背景目的劣势分类基本语法索引结构和适用场景 性能分析MySq| Query Optimizerexplain 索引优化单表优化两表优化三表优化 索引失效原因 架构简介 1.连接层 最上层是一些客户端和连接服务&#xff0c;包含本地sock通…