肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!(三)

简介: 肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!

MIN() 和 MAX()函数求最大最小值

MIN()函数返回所选列的最小值。MAX()函数返回所选列的最大值。

MIN() 语法

SELECT MIN(column_name)
FROM table_name
WHERE condition;

MAX() 语法

SELECT MAX(column_name)
FROM table_name
WHERE condition;

现在我们换一个新的表Product如下:

1.png

MIN() 示例

查找最便宜产品的价格:

SELECT MIN(Price) AS SmallestPrice
FROM Products;

显示如下:

1.png

MAX() 示例

查找最贵产品的价格:

SELECT MAX(Price) AS LargestPrice
FROM Products;

返回如下:

1.png

练习:

使用该MIN函数选择Price列的最小值的记录。

SELECT  MIN(Price) FROM  Products;

COUNT()、AVG() 和 SUM()函数

该COUNT()函数返回与指定条件匹配的行数。

COUNT() 语法

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

该AVG()函数返回数字列的平均值。

AVG() 语法

SELECT AVG(column_name)
FROM table_name
WHERE condition;

该SUM()函数返回数字列的总和。

SUM() 语法

SELECT SUM(column_name)
FROM table_name
WHERE condition;

我们还是用表product

1.png

COUNT() 示例

查找产品数量:

SELECT COUNT(ProductID)
FROM Products;

注意: NULL 值不计算在内。

AVG() 示例

查找所有产品的平均价格:

SELECT AVG(Price)
FROM Products;

注意: NULL 值被忽略。

假设我现在有“OrderDetails”表如下:1.png

SUM() 示例

查找“OrderDetails”表中“Quantity”字段的总和:

SELECT SUM(Quantity)
FROM OrderDetails;

返回如下:

1.png

注意: NULL 值被忽略。练习:返回Price值设置为18的记录数

SELECT COUNT(*) FROM Products
WHERE Price = 18;

LIKE运算符

该LIKE运算符在 WHERE子句中用于搜索列中的指定模式。有两个通配符经常与 LIKE运算符结合使用:

百分号 (%) 代表零、一个或多个字符

下划线 () 代表一个,单个字符

但是呢注意: MS Access 使用星号 (*) 代替百分号 (%),使用问号 (?) 代替下划线 ()

当然百分号和下划线也可以组合使用!

LIKE 语法

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

提示:您还可以使用 AND或OR运算符组合任意数量的条件。

以下是一些示例,显示了LIKE带有“%”和“_”通配符的不同运算符:

1.png

所对应意思为:

第一行:匹配任何以a开头的字段

第二行:匹配任何以a结尾的字段

第三行:匹配任何具有“or”的字段

第四行:查找第二个位置有“r”的任何值

第五行:查找任何以“a”开头且长度至少为 2 个字符的值

第六行:查找任何以“a”开头且长度至少为 3 个字符的值

第七行:查看以“a”开头并以“o”结尾的任何值

比如我们还是有如下Customers”表:

1.png

LIKE 示例

选择 CustomerName 以“a”开头的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

选择 CustomerName 以“a”结尾的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

选择 CustomerName 中任何位置都有“或”的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';

选择 CustomerName 中第二个位置为“r”的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';

选择 CustomerName 以“a”开头且长度至少为 3 个字符的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';

选择 ContactName 以“a”开头并以“o”结尾的所有客户:

SELECT * FROM Customers
WHERE ContactName LIKE 'a%o';

选择 CustomerName 不以“a”开头的所有客户:

SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';

通配符*?!等

这是英文文档所有通配符描述(实在不想翻译,大家自己看看)

1.png

1.png

假设我们还是有如下“Customers”表:

1.png

使用 % 通配符

选择 City 以“ber”开头的所有客户:

SELECT * FROM Customers
WHERE City LIKE 'ber%';

选择 City 包含“es”的所有客户:

SELECT * FROM Customers
WHERE City LIKE '%es%';

返回如下:1.png

使用 _ 通配符

选择 City 以任何字符开头,后跟“ondon”的所有客户:

SELECT * FROM Customers
WHERE City LIKE '_ondon';

选择 City 以“L”开头、后跟任意字符、“n”、任意字符、“on”的所有客户:

SELECT * FROM Customers
WHERE City LIKE 'L_n_on';

使用 [charlist] 通配符

选择 City 以“b”、“s”或“p”开头的所有客户:

SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

选择 City 以“a”、“b”或“c”开头的所有客户:

SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

使用 [!charlist] 通配符

选择 City 不是以“b”、“s”或“p”开头的所有客户:

SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';

或者

SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';

IN运算符

IN运算符允许您在 WHERE子句中指定多个值。

IN操作是针对多个速记 OR条件。

IN 语法

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

我们还是以“Customers”表为例子:

1.png

IN 运算符示例

选择位于’Germany’, ‘France’, 'UK’的所有客户:

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

选择不在选择位于’Germany’, ‘France’, 'UK’的所有客户:

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

选择与 Suppliers来自相同国家的所有客户:

SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

返回如下

1.png

相关文章
|
15天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
44 11
|
29天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
28天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
2月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
2月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
2月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
11天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
11天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
39 3
|
11天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
53 2
|
24天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
171 15