SQL基础语法总结(查询)

news2024/11/17 21:40:01

学习网站: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.coloradmin.cn/o/1118538.html

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

相关文章

基于SSM的大学校医管理系统

基于SSM的大学校医管理系统、学校医院管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录系统 用户界面 管理员界面 摘要 大学校医管理系统…

Linux系统编程:进程part_2(信号相关)

前言 这一节内容我没怎么认真写&#xff0c;就是纯当草草过了一遍&#xff0c;这部分不是很重要当然能掌握肯定更好。 更多的是有个印象然后知道遇到这样的问题能回想起来知道怎么解决即可&#xff08;虽然不太可能遇到&#xff09;。 信号量 实现PV操作 P&#xff1a;测试并…

springboot生成二维码的正确姿势-附视频附源码

二维码的原理是什么&#xff0c;如何保证不重复&#xff1f;你有没有想过这样一件事&#xff0c;二维码是实现原理是什么&#xff1f;如何保证各个平台的二维码是唯一的&#xff1f;就算你的程序停止运行&#xff0c;但是你的二维码依然存在。设计上要保证唯一性&#xff0c;比…

ubuntu启动模式介绍以及如何进入单用户模式和恢复模式

Ubuntu操作系统提供了多种启动模式&#xff0c;每种模式都有不同的用途和功能。下面将深入介绍Ubuntu的几种启动模式&#xff1a; 正常启动模式&#xff08;Normal boot&#xff09;&#xff1a;这是默认的启动模式&#xff0c;也是大多数用户使用的模式。在正常启动模式下&am…

Linux 救援模式

Linux突然坏了 第三次坏了 第一次是找不到盘&#xff0c;修复好了 第二次是找不到卷&#xff0c;但是能启动&#xff0c;启动界面选择救援模式&#xff0c;可以正常使用 第三次&#xff0c;尝试修复卷&#xff0c;启动后&#xff0c;找不到文件系统了&#xff0c;只能从光盘…

【C++】继承和多态常见的问题

一、概念考查 1、下面哪种面向对象的方法可以让你变得富有( A ) A. 继承 B. 封装 C. 多态 D. 抽象 继承机制是面向对象程序设计使代码可以复用的最重要手段&#xff0c;继承是类设计层次的复用。 2、( D )是面向对象程序设计语…

【MySQL】数据库数据类型

文章目录 1. 整体概要2. 数值类型(有符号) tinyint 创建表(无符号) tinyint 创建表bit类型float 类型(无符号)floatdecimal 3. 二进制类型char类型varchar类型 4. 日期时间日期时间类型 5. string 类型enum类型和set类型enum类型和set类型的查找在枚举中的查找在set中的查找 1.…

MOSFET(五):DrMos

一、简介 DrMos&#xff08;Driver MOSFET&#xff09;技术是 Intel 于2004年推出的服务器主板节能技术&#xff0c;即把 2 个MOSFET和 1 个MOS驱动器 三合一&#xff0c;集成在一个封装中。集成后的 DrMos 面积是分离MOSFET的 &#xff0c;功率密度是其 倍&#xff0c;通过搭…

华为eNSP配置专题-BGP路由协议的配置

文章目录 华为eNSP配置专题-BGP路由协议的配置0、概要介绍1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、终端构成和连接2.2、终端的基本配置 3、OSPF配置4、BGP配置4.1、BGP的基本配置4.2、BGP中路由的宣告4.3、BGP的监控 5、让PC1和PC2互通5.1、将BGP的路由引入…

【鸿蒙软件开发】ArkTS常用组件之Button

文章目录 前言一、创建按钮1.1 Button创建接口介绍1.2 创建正常的按钮&#xff0c;不包括子组件1.3 创建正常的按钮&#xff0c;包括子组件1.4 按钮的不同样式胶囊按钮&#xff08;默认类型&#xff09;圆形按钮普通按钮 二、添加事件2.1 .onClick事件添加事件 三、什么时候使用…

【十四】记一次MySQL宕机恢复过程,MySQL INNODB 损坏恢复

记一次MySQL宕机恢复过程 简介&#xff1a;一个业务数据库疏于运维管理&#xff0c;突然在今天崩溃宕机了&#xff0c;真是让人抓狂&#xff0c;上面也不知道积累了多久的数据&#xff0c;平时也没有定期做好备份&#xff0c;这下岂不是瞎了啊&#xff0c;经过不断的收集信息和…

Base 编码家族:Base16 编码

文章目录 参考环境Base 编码Base 的含义计数系统编码系统 为什么需要 Base 编码&#xff1f;ASCII 编码 Base16 编码概念Base16 字符集 Base16 编码原理编码 Base16 编码特点体积膨胀 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型、Cha…

Git Bash(一)Windows下安装及使用

目录 一、简介1.1 什么是Git&#xff1f;1.2 Git 的主要特点1.3 什么是 Git Bash&#xff1f; 二、下载三、安装3.1 同意协议3.2 选择安装位置3.3 其他配置&#xff08;【Next】 即可&#xff09;3.4 安装完毕3.5 打开 Git Bash 官网地址&#xff1a; https://www.git-scm.com/…

【C++】特殊类实现

一、请设计一个类&#xff0c;不能被拷贝 拷贝只会放生在两个场景中&#xff1a;拷贝构造函数以及赋值运算符重载&#xff0c;因此想要让一个类禁止拷贝&#xff0c; 只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 将拷贝构造函数与赋值运算符重载只声明不定义…

聚类分析 | Python密度聚类(DBSCAN)

密度聚类是一种无需预先指定聚类数量的聚类方法&#xff0c;它依赖于数据点之间的密度关系来自动识别聚类结构。 本文中&#xff0c;演示如何使用密度聚类算法&#xff0c;具体是DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;来…

磁盘清理 | 已经卸载的软件还出现在应用和功能里怎么办?

一句话总结解决方法&#xff1a; 安装Geek Uninstaller,删除卸载残留。 问题描述&#xff1a; 最近磁盘满了&#xff0c;需要删除一些平时不常用的软件&#xff0c;但是发现一个问题。就是已经删除的软件&#xff0c;仍然会出现在“应用与功能”中。并且显示卸载图标为灰色&am…

基于PHP的线上购物商城,MySQL数据库,PHPstudy,原生PHP,前台用户+后台管理,完美运行,有一万五千字论文。

目录 演示视频 基本介绍 论文截图 功能结构 系统截图 演示视频 基本介绍 基于PHP的线上购物商城&#xff0c;MySQL数据库&#xff0c;PHPstudy&#xff0c;原生PHP&#xff0c;前台用户后台管理&#xff0c;完美运行&#xff0c;有一万五千字论文。 现如今,购物网站是商业…

用Python进行websocket接口测试

这篇文章主要介绍了用Python进行websocket接口测试&#xff0c;帮助大家更好的理解和使用python&#xff0c;感兴趣的朋友可以了解下 我们在做接口测试时&#xff0c;除了常见的http接口&#xff0c;还有一种比较多见&#xff0c;就是socket接口&#xff0c;今天讲解下怎么用P…

(一)docker:建立oracle数据库

前言&#xff0c;整个安装过程主要根据docker-images/OracleDatabase/SingleInstance /README.md &#xff0c;里边对如何制作容器讲的比较清楚&#xff0c;唯一问题就是都是英文&#xff0c;可以使用谷歌浏览器自动翻译成中文&#xff0c;自己再对照英文相互参照来制作提前准备…

P1 缓冲池管理

文章目录 Task1 LRU-K 替换策略Task2 缓冲池管理Task3 读/写页面保护 Task1 LRU-K 替换策略 LRU-K算法&#xff1a;当访问次数达到K次后&#xff0c;将数据索引从历史队列移到缓存队列中&#xff08;缓存队列时间降序&#xff09;&#xff1b;缓存数据队列中被访问后重新排序&…