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

      最后更新:2022-07-30 21:16:12 手机定位技术交流文章

      文章目录

        • 前言
        • 最重要的MYSQL命令
        • 选择选择句子
        • SELECT DISTINCT 选择不同语句
        • 查询位置条款
        • AND, OR, AND NOT 运算符
        • 按顺序排序关键字
        • INSERT INTO 插入语句
        • NULL 空值
        • 更新更新句子
        • 删除删除段落
        • TOP,LIMIT,FETCH FIRST或ROWNUM约束条款
        • MIN()和MAX()函数计算最大最小值
        • COUNT(), AVG()和SUM()函数
        • LIKE运算符
        • 通配符*?!等
        • IN运算符
        • BETWEEN间的操作者
        • AS 别名使用
        • JOIN连接
        • INNER JOIN内连接关键字
        • 左连结左连结关键字
        • RIGHT JOIN右连接 关键字
        • FULL OUTER JOIN 关键字
        • 自联自连接关键字
        • 按句子组分
        • HAVING 子句
        • EXISTS操作器
        • 注释
        • 运算符

      前言

      也许你对SQL的大写字不习惯,但真正的标准是大字,让我们习惯我用大写字母解释事情的方式。在下列解释中,我将会以基本语法,案例,联系形式讲解,从而加强每个句子的使用和理解。这篇文章由作者安排了一整晚写出来,希望大家三连好评,谢谢。当然,拥有本篇文章,你将完全控制使用的所有 mysql命令,不要用它买东西或搞乱学习。本文简要解释了数据库的选取部分,由于创建的数据库的初始输入,备份等都有讲过,魔法传送: 传送门
      该传送门内容有:
      在这里插入图片描述

      最重要的MYSQL命令

      选择选择句子

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

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

      假设我们已经有一个数据库Customers如下:
      在这里插入图片描述
      选择列例
      下列SQL声明在CustomerName和City列中的Customer表中选择:

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

      练习题:
      1-在客户表中获取所有列。

      2.写一个句子,城市从客户表中选择一个列。

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

      SELECT DISTINCT 选择不同语句

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

      我们还是假设有这样一个Customers数据库:
      在这里插入图片描述
      没有 DISTINCT 的 SELECT 示例
      以下 SQL 语句从“Customers”表的“Country”列中选择所有(包括重复的)值:

      SELECT DISTINCT 示例

      以下SQL声明列出不同(不同)客户端国家/区域的数目:

      练习:
      1-从表中的“国家”栏中选择“客户”的所有不同值。

      查询位置条款

      WHERE子项用于筛选记录,用于抽取符合指定条件的记录。
      WHERE 语法

      注:WHERE句子不仅使用了 SELECT句子,它也用于 UPDATE, DELETE等!
      我们假设还是有Customers这样一个数据库如下:
      在这里插入图片描述
      下文例
      以下 SQL 语句在“Customers”表中选择来自国家“Mexico”的所有客户:

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

      其中WHERE分段的算符
      在WHERE分句中可以使用下列操作符:
      在这里插入图片描述
      我们可以逐一展示这些符号的使用情况。请耐心
      假设我们有一个名为产品的数据库:
      在这里插入图片描述

      按价格选择所有产品18

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

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

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

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

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

      选择50至60之间的所有产品

      搜索从上述客户数据库中的所有字母开始的城市

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

      以上是所有符号的代表。
      我们再做一些巩固的练习(我们将使用上面的客户)
      1-为柏林的所有记录选择城市列值。

      2-使用不是关键字选择城市不是"柏林"的所有记录。

      3-选择所有记录,用户ID列值为32。

      AND, OR, AND NOT 运算符

      子项可结合 AND 、 OR 和 NOT 操作。 AND 和 OR 的操作用于根据多个条件筛选记录:
      AND操作显示一个记录,如果所有条件都满足 AND是真。
      OR操作显示一个记录,如果任何条件满足OR是正确的。
      NOT操作显示条件是否正确记录。
      AND 语法

      OR语法

      NOT语法

      我们 还 假设 有 以下 的 “ 顾客 ” 表 :
      在这里插入图片描述
      AND 示例
      以下 SQL 语句从Customers中选择国家为"Germany"且city为"Berlin"的所有字段:

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

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

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

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

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

      按顺序排序关键字

      按 ORDER BY 关键字用于按 ascending 或 descending 顺序排序结果。 按 ORDER BY 默认,键按 ascending 到记录排序。
      按语法顺序

      我们 还 假设 有 以下 的 “ 顾客 ” 表 :
      在这里插入图片描述
      按例排序
      从“Customers”表中选择所有客户,按“Country”列排序:

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

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

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

      练习
      从客户表中选择所有记录,并按城市列的字母顺序排序结果。

      INSERT INTO 插入语句

      插入表语句用于将一个新的记录插入表中。
      INSERT语法
      可以INSERT INTO 用两种方式编写语句:
      1-指定插入的列名和值:

      2-如果要为表的所有列添加值,则无需在 SQL 查询中指定列名。但是,请确保值的顺序与表中的列顺序相同。在这里, INSERT INTO语法如下:

      我们假设我们仍然有样品的客户表:
      在这里插入图片描述
      INSERT示例
      以下 SQL 语句在“Customers”表中插入一条新记录:

      运行显示如下:
      在这里插入图片描述
      您是否注意到我们没有在 CustomerID 字段中插入任何数字?CustomerID 列是一个自动递增字段,将在新记录插入表中时自动生成。
      仅在指定列中插入数据
      下面的 SQL 语句将插入一条新记录,但只在“CustomerName”、“City”和“Country”列中插入数据(CustomerID 会自动更新):

      运行后将显示以下内容:
      在这里插入图片描述
      练习:
      在表中插入一个新的记录。

      NULL 空值

      具有 NULL 值的字段是没有值的字段。如果表中的字段是可选的,则可以在不向该字段添加值的情况下插入新记录或更新记录。然后,该字段将保存为 NULL 值。
      注意: NULL值与零值或包含空字段的字段不同。 具有NULL值的字段是在创建记录时留下的字段!
      如何测试NULL值?
      无法使用比较运算符(例如 =、< 或 <>)测试 NULL 值。我们将不得不改用IS NULL和 IS NOT NULL运算符。
      IS NULL语法

      IS NOT NULL 语法

      我们还是以”Customers”表为例子:
      在这里插入图片描述

      IS NULL算子
      在“地址”字段中列出所有具有NULL值的客户端:

      提示: 总是使用IS NULL来搜索 NULL值.
      不是零运算器
      IS NOT NULL操作器用于测试非空值(NOT NULL值)。
      列出所有在“地址”字段中值的客户端:

      练习:
      从列为空的Customers位置选择所有记录PostalCode。

      更新更新句子

      更新声明用于修改表中的现有记录。
      UPDATE语法:

      注意:更新表中的记录时要小心!注意 WHERE语句中的子句UPDATE。该WHERE子句指定应该更新哪些记录。如果省略该WHERE子句,表中的所有记录都将被更新!
      让我们以“顾客”表为例:
      在这里插入图片描述
      更新表
      更新客户ID=1个用户名和城市数据

      更新过后将会如下:
      在这里插入图片描述
      更新多条记录
      WHERE分项确定将更新多少记录。
      将国家为"Mexico"的所有记录的 ContactName 更新为“Juan”:

      更新后将会变成:
      在这里插入图片描述
      更新警告!
      更新记录时要小心。 如果省略“在哪里”分段,所有记录都会更新!
      例如:

      则会导致如下结果:
      在这里插入图片描述
      练习:
      更新表City中所有记录的Customers列。

      删除删除段落

      删除声明用于删除表中的现有记录。
      删除语法

      注意:删除表中的记录时要小心!注意 WHERE语句中的子句 DELETE。该WHERE条款指定应删除哪些记录。如果省略该WHERE子句,表中的所有记录都将被删除!
      哈哈,我们仍然使用"客户"表,例如如下:
      在这里插入图片描述
      删除示例
      从“Customers”表中删除客户“Alfreds Futterkiste”:

      于是就变成这样:
      在这里插入图片描述
      删除所有记录
      您可以删除表中的所有行,而不删除表,这意味着表结构、属性和索引将保持不变

      例如:在客户表中删除所有行,但不能删除表:

      练习:从Customers表中删除Country值为“挪威”的所有记录。

      TOP,LIMIT,FETCH FIRST或ROWNUM约束条款

      选择顶段
      SELECT TOP子句用于指定要返回的记录数。SELECT TOP子句在具有数千条记录的大表上很有用。返回大量记录会影响性能。
      注意:并非所有数据库系统都支持SELECT TOP子句子。 MySQL支持限制句子选择有限的记录,而Oracle使用FETCH FIRST n ROWSONLYROWNUM
      服务器/MS访问语言:

      MySQL 语法:

      Oracle 12语法:

      例如,客户表如下:
      在这里插入图片描述
      顶端 、 限度 和 FETCH 第一例
      从“客户”表(SQL Server/MS Access)中选择第一个三个记录:

      MySQL方程例子:

      Oracle方程例子:

      最高百分比例子
      从"Customers“表中选择前 50% 的记录(用于 SQL Server/MS Access):

      Oracle方程例子:

      添加“WHERE”项
      从“Customers”表中选择前三个记录,其中国家是“Germany”(对于 SQL Server/MS Access):

      MySQL方程实例

      Oracle方程例子:

      MIN()和MAX()函数计算最大最小值

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

      MAX() 语法

      现在我们换到新的产品如下:
      在这里插入图片描述
      MIN() 示例
      找到最便宜的产品价格:

      显示如下:
      在这里插入图片描述
      MAX() 示例
      寻找最昂贵的产品价格:

      返回如下:
      在这里插入图片描述
      练习:
      使用 MIN 函数选择价格列最低值的记录.

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

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

      AVG()函数返回数列的平均值。
      AVG() 语法

      SUM()函数返回数列的总数。
      SUM() 语法

      我们仍然使用餐具
      在这里插入图片描述
      COUNT() 实例
      查找产品数量:

      注: NULL值不包括。
      AVG() 示例
      找到所有产品的平均价格:

      注: NULL值被忽略。
      假设我现在有以下的订单详细表:
      在这里插入图片描述
      SUM() 示例
      在OrderDetails表中找到“数量”字段的总数:

      返回如下:
      在这里插入图片描述
      注: NULL值被忽略。
      练习:
      返回为价格值设置的记录数为18

      LIKE运算符

      LIKE操作器在搜索列指定模式的WHERE子项中使用。 与LIKE操作器结合的两个常用的快捷方式:
      百分比(%)表示零,一个或多个字符
      下划线 (代表一个单个字符
      但请注意:MS Access使用星 (*)而不是百分比(%),以及问题()而不是行(
      )
      当然, 百分比和下线也可以结合起来!
      LIKE 语法

      提示: 还可以使用 AND 或 OR 算子来组合任何条件.
      这里有一些例子显示了与"%"和"_"编码的LIKE不同的操作器:
      在这里插入图片描述
      所对应意思为:
      第一个行:与一个开始的任何字段匹配
      行2:与一个结束的任何行匹配
      行3:与"或"匹配任何字段
      第四行:在第二位找到"r"的任何值
      行5:找到至少长2个字符的"a"开始的任何值
      行6:至少长3个字符的"a"开始的任何值
      行7:查看任何以a开始和以o结束的值
      例如,我们仍然有以下客户表:
      在这里插入图片描述

      LIKE 示例
      选择“a”开始的所有客户“CustomerName”:

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

      在CustomerName的任何位置中选择所有客户使用"或":

      为所有使用"r"的客户选择"CustomerName"中的第二个位置:

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

      选择“a”开始和“o”结束的所有客户端的“ContactName”:

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

      通配符*?!等

      这是英文文档中的所有匹配的描述(我真的不想翻译,让我们自己看看)
      在这里插入图片描述
      在这里插入图片描述
      假设我们仍然有以下的“客户”表:
      在这里插入图片描述
      使用 % 通配符
      为所有从"ber"开始的客户选择城市:

      为所有“es”客户选择城市:

      返回如下:
      在这里插入图片描述
      使用 _ 通配符
      选择“城市”以任何字符开始,然后选择“ondon”的所有客户:

      选择城市以"L"开始,然后任何字符,"n",任何字符,和"on"为所有客户端:

      使用[字符串]组合
      选择“b”、“s”或“p”开始的所有客户“城市”:

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

      使用[!Charlist
      选择城市不包括所有以"b","s"或"p"开始的客户:

      或者

      IN运算符

      IN操作器允许您在WHERE分段中指定多个值。
      IN操作是针对多个加速度或条件的.
      IN 语法

      我们还是以“Customers”表为例子:
      在这里插入图片描述
      IN 运算符示例
      选择位于’Germany’, ‘France’, 'UK’的所有客户:

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

      选择来自同一个国家的所有供应商:

      返回如下
      在这里插入图片描述

      BETWEEN间的操作者

      AtBETWEEN操作员在指定范围内选择一个值,这个值可以是数字、文本或日期。
      语法

      我们可以使用下列产品表:
      在这里插入图片描述
      between示例
      选择10至20之间的所有产品的价格:

      要显示上一个示例范围之外的产品,请使用 NOT BETWEEN:

      数字之间
      选择价格在 10 到 20 之间的所有产品。此外;不要显示 CategoryID 为 1,2 或 3 的产品:

      文本值之间
      语句选择 Carnarvon Tigers 和 Mozzarella di Giovanni 之间具有 ProductName 的所有产品

      选择 Carnarvon Tigers 和 Chef Anton’s Cajun Seasoning 之间所有产品的产品名称:

      NOT BETWEEN Text Value
      选择 ProductName 不在 Carnarvon Tigers 和 Mozzarella di Giovanni 之间的所有产品:

      我们现在假设我们有以下的“订单”表:
      在这里插入图片描述
      日期之间示例
      选择 OrderDate 介于 ‘01-July-1996’ 和 ‘31-July-1996’ 之间的所有订单

      或者使用:

      AS 别名使用

      别名列语法

      别名表语法

      现在我们仍然假设有以下的风暴表:
      在这里插入图片描述
      还有一个叶子表
      在这里插入图片描述
      列的别名示例
      创建两个别名,一个为CustomerID列,另一个为CustomerName列:

      创建两个别名,一个用于 CustomerName 列,另一个用于 ContactName 列。注意:如果别名包含空格,则需要双引号或方括号:

      创建一个名为“Address”的别名,该别名组合了四列(Address、PostalCode、 City 和Country):

      注意:要使上述SQL声明在MySQL中运行,请使用以下命令:

      表别名示例
      选择来自 CustomerID=4(Around the Horn)的客户的所有订单。我们使用“Customers”和“Orders”表,分别给它们表别名“c”和“o”(这里我们使用别名来缩短SQL)

      以下SQL声明与上文相同,但没有其他名称:

      其他名称在下列情况下有用:
      1.查询涉及多个表
      2.查询涉及多个表
      3.查询中使用的功能
      这个列表太大或不可读
      将两个或多个列结合在一起

      JOIN连接

      JOIN项用于根据两个或多个表之间的相应列排列。
      假设我们现在有如下的订单表
      在这里插入图片描述
      同时还有表 “Customers” 如下:
      在这里插入图片描述
      请注意,“Orders”表中的“CustomerID”列指的是“Customers”表中的“CustomerID”。上面两个表之间的关系是“CustomerID”列。
      示例
      使用内联(INNER JOIN)来选择两个表中的匹配值的记录:

      返回如下
      在这里插入图片描述
      不同类型的SQL JOIN
      在这里插入图片描述

      INNER JOIN内连接关键字

      INNER JOIN关键字选择两个表中的匹配值的记录。
      语法:

      画个图理解:
      在这里插入图片描述
      假设我们还有订单表
      在这里插入图片描述
      customer表
      在这里插入图片描述
      内部合约实例
      选择包含客户信息的所有订单:

      返回
      在这里插入图片描述
      JOIN 三张表
      选择包含客户和发货人的信息的所有订单

      返回如下
      在这里插入图片描述

      左连结左连结关键字

      LEFT JOIN关键字返回左表 (table1) 中的所有记录,以及右表 (table2) 中的匹配记录。如果没有匹配项,则结果是右侧的 0 条记录。
      左连接语法

      来个图就懂了
      在这里插入图片描述
      我们仍然使用客户表:
      在这里插入图片描述
      order表
      在这里插入图片描述
      左合约实例
      选择所有客户和他们可能有的所有订单:

      返回如下
      在这里插入图片描述

      RIGHT JOIN右连接 关键字

      语法

      上图就懂了
      在这里插入图片描述
      现在我们使用顺序表如下
      在这里插入图片描述
      还有一份雇员表
      在这里插入图片描述
      退还所有雇员及他们所发出的任何订单:

      FULL OUTER JOIN 关键字

      FULL OUTER JOIN和 FULL JOIN是一样的。
      语法为:

      来个图就懂了
      在这里插入图片描述
      假设我们有一个客户桌
      在这里插入图片描述
      还有个order表
      在这里插入图片描述
      选择所有客户和所有订单:

      返回如下
      在这里插入图片描述

      自联自连接关键字

      语法

      假设我们有一个库斯托默桌
      在这里插入图片描述
      同一个城市匹配的客户:

      返回如下
      在这里插入图片描述

      按句子组分

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

      假设我们仍然有这个客户桌
      在这里插入图片描述
      每个 国家 / 区域 的 客户 数目 如下 :

      列出了每个国家的客户数量,从高到低排序:

      HAVING 子句

      语法:

      假设有以下的风暴表
      在这里插入图片描述
      每个国家/区域的客户数目是列出的,只包括有超过5个客户的国家/区域:

      它列出每个国家的客户数目,从高到低订购(只包括超过5个国家的客户):

      EXISTS操作器

      EXISTS操作器用于测试子查询中是否有记录。
      如果子问题返回一个或多个记录,则EXISTS运算器返回真。
      语法

      假设我们使用产品表
      在这里插入图片描述
      suppiler表
      在这里插入图片描述
      例如:
      返回 真话 并 列出 以下 20 个 产品 价格 的 供应商 :

      返回如下
      在这里插入图片描述
      返回真,并列出其产品价格为22的供应商:

      返回为:
      在这里插入图片描述

      注释

      单行注释以–.
      –任何在一行末尾的文本都会被忽略(不执行)
      例如:

      又例如

      多行注释/*以/.
      /
      任何在*/之间文本将被忽略。
      例如:

      又例如

      忽略语句的一部分:
      例如

      又例如

      运算符

      事实上,这个部分的内容已经被操作员们证明了。 再说一遍。
      算术运算符有
      在这里插入图片描述
      演示一部分
      比如求20+30:

      除法(返回3)

      取余数(返回2)

      比较运算符
      在这里插入图片描述
      演示一部分
      大于

      不等于

      大于等于

      先自我介绍一下,他高中毕业了13年,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。了解大多数年轻的Java工程师,想要升技能,经常需要找到自己的成长或向班上汇报。但对于培训机构来说,学费大约是人民币,着实压力不小。当你不在系统时,自我学习的效率很低,而且很持久。也很容易停止天花板技术。所以我为你收集了一个"java开发工具"初衷也很简单,这是一个想帮助自己学习的朋友,却不知道该从哪里学习。同时减少每个人的负担.添加下方名片,你可以得到完整的学习信息

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30960.html

          热门文章

          文章分类