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

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

文章目录


前言

大家可能不习惯SQL大写的习惯,但是真正的规范就是要大写,所以大家要慢慢习惯我用大写的方式讲解。在下面所有的讲解中,我将会以基本语法,案例,联系形式讲解,从而加强对每一个语句的使用和认识。本篇文章是笔者整理了整整一个通宵才写出,希望大家三连好评,谢谢。当然,拥有本篇文章,你将会完全掌握mysql的所有命令使用,不再用去购买或者杂乱学习。本篇内容暂时讲解数据库的筛选部分,因为数据库的最初入门如创建,备份等都有讲过,魔法传送:传送门

该传送门内容有:

1.png

MYSQL 最重要的命令

SELECT 从数据库中提取数据
UPDATE  更新数据库中的数据
DELETE 从数据库中删除数据 
INSERT INTO 将新数据插入数据库
CREATE DATABASE 创建一个新的数据库
ALTER DATABASE  修改数据库
CREATE TABLE  创建一个新表
ALTER TABLE   修改表
DROP TABLE    删除表
CREATE INDEX  创建索引(搜索键)
DROP INDEX  删除索引

SELECT选择语句

该SELECT语句用于从数据库中选择数据。返回的数据存储在一个结果表中,称为结果集。

SELECT 语法:

SELECT column1, column2, ...

此处,column1、column2、… 是要从中选择数据的表的字段名称。如果要选择表中的所有可用字段,请使用以下语法:

SELECT * FROM table_name;

假设我们已经有一个数据库Customers如下:

1.png

SELECT 列示例

以下 SQL 语句从“Customers”表中选择“CustomerName”和“City”列:

SELECT CustomerName, City FROM Customers;

SELECT * 示例

以下 SQL 语句从“Customers”表中选择所有列:

SELECT * FROM Customers;

练习题:

1-获取Customers表中的所有列。

SELECT * FROM Customers;

2-编写一条语句,City从Customers表中选择列。

SELECT City FROM Customers;

3-从Customers表中的Country列中选择所有不同的值。(下面会讲,不懂没关系)

SELECT DISTINCT Country FROM Customers;

SELECT DISTINCT 选择不同语句

该SELECT DISTINCT语句仅用于返回不同(不同)的值。在表中,一列通常包含许多重复值;有时您只想列出不同的(不同的)值。

SELECT DISTINCT 语法

SELECT DISTINCT column1, column2, ...
FROM table_name;

我们还是假设有这样一个Customers数据库:

1.png

没有 DISTINCT 的 SELECT 示例

以下 SQL 语句从“Customers”表的“Country”列中选择所有(包括重复的)值:

SELECT Country FROM Customers;

SELECT DISTINCT 示例

SELECT DISTINCT Country FROM Customers;

以下 SQL 语句列出了不同(不同)客户国家/地区的数量:

SELECT COUNT(DISTINCT Country) FROM Customers;

练习:

1-从表中的Country列中选择所有不同的值Customers。

SELECT  DISTINC Country FROM Customers;

WHERE 查询定位 子句

该WHERE子句用于过滤记录。它用于仅提取满足指定条件的记录。

WHERE 语法

SELECT column1, column2, ...
FROM table_name
WHERE condition;

注: 该WHERE条款不仅在使用 SELECT的语句,它也被用在UPDATE, DELETE等!

我们假设还是有Customers这样一个数据库如下:

1.png

WHERE 子句示例

以下 SQL 语句在“Customers”表中选择来自国家“Mexico”的所有客户:

SELECT * FROM Customers
WHERE Country='Mexico';

文本字段与数字字段

SQL 需要在文本值周围使用单引号(大多数数据库系统也允许双引号)。但是,数字字段不应包含在引号中:

SELECT * FROM Customers
WHERE CustomerID=1;

WHERE 子句中的运算符

可以在WHERE子句中使用以下运算符:

1.png

我们可以一一演示这些符号的使用,耐心学

假设我们有一下数据库叫做Product:

1.png

选取价格为18的所有产品(=)

SELECT * FROM Products
WHERE Price = 18;       

选取所有价格大于30的产品(>)

SELECT * FROM Products
WHERE Price > 30;

选取所有价格小于30的产品(<)

SELECT * FROM Products
WHERE Price < 30;

选取所有价格大于等于30的产品(>= )

SELECT * FROM Products
WHERE Price >= 30;

选取所有价格小于等于30的产品( <= )

SELECT * FROM Products
WHERE Price <= 30;

选取所有价格不等于18的产品(相当于!=)

SELECT * FROM Products
WHERE Price <> 18;

选取所有价格处于50和60之间的产品

SELECT * FROM Products
WHERE Price BETWEEN 50 AND 60;

从上面的Customers数据库搜索所有字母s开头的城市

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

从Customers数据库中查找所有在Paris和London的用户

SELECT * FROM Customers
WHERE City IN ('Paris','London');

以上便是对所有符号的演示。

我们再来一些练习加以巩固(我们用到的是上面的customers)

1-选择City列值为“Berlin”的所有记录。

SELECT * FROM Customers
WHERE City='Berlin';

2-使用NOT关键字选择City不是"Berlin"的所有记录。

SELECT * FROM Customers
WHERE NOT City ='Berlin';

3-选择CustomerID列值为 32 的所有记录。

SELECT * FROM Customers
WHERE CustomerID =12;

AND、OR 和 NOT 运算符

该WHERE子句可以结合 AND,OR和 NOT操作。在AND与OR操作用于基于多个条件筛选记录:

该AND操作显示一个记录,如果所有条件满足 AND 为真。

所述OR操作显示一个记录,如果任何一个条件满足OR为真。

该NOT操作显示,如果条件(S)是不正确的记录。

AND 语法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

OR语法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

NOT语法

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

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

1.png

AND 示例

以下 SQL 语句从Customers中选择国家为"Germany"且city为"Berlin"的所有字段:

SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';

OR 示例

选取所有"Customers" 中city为"Berlin" OR “München”:

SELECT * FROM Customers
WHERE City='Berlin' OR City='München';

NOT 示例

从 “Customers” 选取country不是 "Germany"的字段:

SELECT * FROM Customers
WHERE NOT Country='Germany';

结合AND, OR and NOT

从"Customers" 中选择国家为"Germany"”且城市必须为"Berlin" OR "München"的所有字段(使用括号形成复杂的表达式):

SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');

从 “Customers"中选择国家不是“Germany” 也不是"USA":的所有字段:

SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

练习

选择 City 列值为 ‘Berlin’ 且 PostalCode 列值为 12209 的所有记录。

SELECT * FROM Customers
WHERE City = 'Berlin'
AND PostalCode= 12209;

ORDER BY 关键字

该ORDER BY关键字用于按升序或降序对结果集进行排序。ORDER BY默认情况下,关键字按升序对记录进行排序。要按降序对记录进行排序,请使用 DESC关键字。

ORDER BY 语法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

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

1.png

ORDER BY 示例

从“Customers”表中选择所有客户,按“Country”列排序:

SELECT * FROM Customers
ORDER BY Country;

ORDER BY DESC 示例

从“Customers”表中选择所有客户,按“Country”列按 DESCENDING 排序:

SELECT * FROM Customers
ORDER BY Country DESC;

ORDER BY 多列示例

从“Customers”表中选择所有客户,按“Country”和“CustomerName”列排序。这意味着它按国家/地区排序,但如果某些行具有相同的国家/地区,则按 CustomerName 排序:

SELECT * FROM Customers
ORDER BY Country, CustomerName;

从“Customers”表中选择所有客户,按“Country”升序和“CustomerName”列降序排序:

SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

练习

从Customers表中选择所有记录,按城市列的字母顺序对结果进行排序。

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