Mysql数据库:select from语句详解

2024-07-04 1784阅读

Mysql数据库:select from语句详解

  • 一、select from语句概述
  • 二、select from语句的基本用法
  • 三、select from语句的示例
    • 1、查询所有列
    • 2、查询特定列
    • 3、查询带有条件的数据(过滤)
    • 4、查询结果排序
    • 5、查询结果限制
    • 6、查询结果去重
    • 7、查询结果分组
    • 8、查询结果统计
    • 9、查询结果联合
    • 10、查询简单的计算
    • 11、查询别名
    • 12、NULL参与运算
    • 13、着重号(反引号)

      💖The Begin💖点点关注,收藏不迷路💖

      一、select from语句概述

      select from语句用于从数据库中查询数据。它由两个关键字组成:select 和from。

      Mysql数据库:select from语句详解
      (图片来源网络,侵删)

      select 关键字用于指定要查询的列,from关键字用于指定要查询的表。

      通过结合使用这两个关键字,我们可以从数据库中选择特定的列和行进行查询。

      二、select from语句的基本用法

      下面是select from语句的基本语法:

      SELECT column1, column2, … FROM table_name;
      

      其中,column1, column2, …是要查询的列名,可以是一个或多个列,用逗号分隔。

      table_name是要查询的表名。

      三、select from语句的示例

      1、查询所有列

      如果要查询表中的所有列,可以使用星号*代替列名。示例代码如下:

      SELECT * FROM table_name;
      

      2、查询特定列

      如果只需要查询表中的特定列,可以在select 关键字后面指定列名。示例代码如下:

      SELECT column1, column2 FROM table_name;
      

      3、查询带有条件的数据(过滤)

      如果需要筛选出满足特定条件的数据,可以使用WHERE子句。示例代码如下:

      SELECT column1, column2 FROM table_name WHERE condition;
      

      其中,condition是查询条件,可以使用比较运算符(如=、等)和逻辑运算符(如AND、OR等)组合成复杂的条件。

      如:

      1、查询满足多个条件的数据:
      SELECT 列名1, 列名2, … FROM 表名 WHERE 条件1 AND 条件2;
      可以使用 AND 运算符连接多个条件,查询满足所有条件的数据。
      2、查询满足任意一个条件的数据:
      SELECT 列名1, 列名2, … FROM 表名 WHERE 条件1 OR 条件2;
      可以使用 OR 运算符连接多个条件,查询满足任意一个条件的数据。
      3、查询不满足某个条件的数据:
      SELECT 列名1, 列名2, … FROM 表名 WHERE NOT 条件;
      使用 NOT 关键字可以排除满足某个条件的数据,查询不满足该条件的数据。
      

      4、查询结果排序

      如果需要对查询结果进行排序,可以使用ORDER BY子句。示例代码如下:

      SELECT column1, column2 FROM table_name ORDER BY column1 ASC;
      

      其中,column1是要排序的列名,ASC表示升序(从小到大),DESC表示降序(从大到小)。

      如:

      1、升序排序:
      SELECT 列名1, 列名2, … FROM 表名 ORDER BY 列名 ASC;
      使用 ORDER BY 关键字可以按照指定列的值进行升序排序。
      2、降序排序:
      SELECT 列名1, 列名2, … FROM 表名 ORDER BY 列名 DESC;
      使用 ORDER BY 关键字可以按照指定列的值进行降序排序。
      

      5、查询结果限制

      1、查询前几条数据:
      SELECT 列名1, 列名2, … FROM 表名 LIMIT 数量;
      使用 LIMIT 关键字可以限制查询结果返回的数据数量。
      2、查询指定范围的数据:
      SELECT 列名1, 列名2, … FROM 表名 LIMIT 起始位置, 数量;
      

      例子:

      如果只需要查询结果的前几行,可以使用LIMIT子句。示例代码如下:

      SELECT column1, column2 FROM table_name LIMIT 10;
      

      其中,10表示要查询的行数。

      6、查询结果去重

      SELECT DISTINCT 列名 FROM 表名;
      或者
      SELECT 列名1 DISTINCT 列名2 FROM 表名;
      

      使用 DISTINCT 关键字可以去除查询结果中的重复数据。

      7、查询结果分组

      SELECT 列名1, 列名2, … FROM 表名 GROUP BY 列名;
      

      使用 GROUP BY 关键字可以将查询结果按照指定列进行分组。

      8、查询结果统计

      SELECT COUNT(列名) FROM 表名;
      

      使用 COUNT 函数可以统计指定列的数据数量。

      9、查询结果联合

      SELECT 列名1, 列名2, … FROM 表名1 UNION SELECT 列名1, 列名2, … FROM 表名2;
      

      使用 UNION 关键字可以将多个查询结果合并为一个结果集。

      10、查询简单的计算

      1、检索并计算列的总和:

      SELECT SUM(column_name) FROM table_name;
      

      2、检索并计算列的平均值:

      SELECT AVG(column_name) FROM table_name;
      

      3、检索并计算列的最大值:

      SELECT MAX(column_name) FROM table_name;
      

      4、检索并计算列的最小值:

      SELECT MIN(column_name) FROM table_name;
      

      11、查询别名

      1、为列取别名

      在SELECT语句中,我们可以为查询结果中的列取一个自定义的别名。这样做的好处是,可以让查询结果更加清晰明了,尤其是在查询结果中存在多个列时,给列取别名可以让查询结果更具可读性。

      示例:

      假设我们有一张名为”students”的表,包含了学生的姓名(name)、年龄(age)和性别(gender)三个列。现在我们想查询该表中所有学生的姓名和年龄,并为这两个列取别名。

      SELECT name AS 姓名, age AS 年龄
      FROM students;
      ## 其中,别名可以使用双引号" "括起来。
      

      我们使用”AS”关键字为name列取了别名”姓名”,为age列取了别名”年龄”。这样查询结果中的列名就变为了”姓名”和”年龄”,而非原本的”name”和”age”。

      2、为表取别名

      除了为列取别名外,我们还可以为表取别名。当我们在一个查询中使用了多个表时,为表取别名可以简化查询语句的编写,提高代码的可读性。

      示例:

      假设我们有一张名为”students”的表和一张名为”scores”的表,分别包含了学生信息和考试成绩。现在我们想查询学生的姓名和对应的成绩,并为这两张表取别名。

      SELECT s.name AS 姓名, sc.score AS 成绩
      FROM students AS s
      JOIN scores AS sc ON s.id = sc.student_id;
      

      我们使用”AS”关键字为students表取了别名”s”,为scores表取了别名”sc”。这样在查询语句中,我们可以直接使用别名来引用表名,而无需写完整的表名。

      3、使用别名进行计算

      除了简单地为列或表取别名外,我们还可以使用别名进行一些计算操作。这样可以在查询结果中得到一些计算后的值,而不仅仅是原始的列值。

      示例:

      假设我们有一张名为”products”的表,包含了产品的名称(name)、价格(price)和数量(quantity)三个列。现在我们想查询每个产品的总价,并为总价取一个别名”总价”。

      SELECT name, price, quantity, (price * quantity) AS 总价
      FROM products;
      

      我们使用了括号将”price * quantity”这个计算表达式括起来,并为它取了一个别名”总价”。这样查询结果中就会包含一个名为”总价”的列,其中的值为每个产品的价格和数量相乘的结果。

      12、NULL参与运算

      在MySQL中,NULL是一个特殊的值,用于表示缺失或未知的数据。以下是关于MySQL中NULL的一些详细说明:

      1、NULL不等同于0或空字符串:NULL表示缺少值,而0和空字符串都是具体的值。因此,NULL与0或空字符串进行比较时,结果将始终为不相等。
      2、NULL可以用于所有数据类型:NULL可以用于任何数据类型,包括整数、浮点数、字符串、日期等。
      3、NULL的存储空间:在MySQL中,NULL值不占用存储空间。这意味着,将NULL存储在一个列中,不会占用额外的存储空间。
      4、NULL的比较:在MySQL中,无法通过使用等于(=)或不等于()运算符来比较NULL值。相反,必须使用IS NULL或IS NOT NULL运算符来检查NULL值。
      5、NULL的使用场景:NULL可以用于各种情况,例如表示未知的数据、缺失的数据、未定义的数据等。例如,在一个学生表中,如果某个学生的出生日期未知,可以将该字段设置为NULL。
      

      NULL的注意事项:在使用NULL时需要注意以下几点:

      1、在数据库设计中,应该避免使用NULL作为主键或唯一键,因为NULL不是唯一的值。
      2、在查询中,应该谨慎使用NULL值,因为与NULL值相关的操作可能会导致意外的结果。
      3、在使用NULL值进行计算时,结果通常也是NULL。因此,在进行计算之前,应该先检查NULL值并相应地处理。
      

      13、着重号(反引号)

      在MySQL中,反引号 是用来引用数据库、表、列名等标识符的符号。它的作用主要有以下几个方面:

      1、区分保留字:

      有些词是MySQL的保留字,例如SELECT、FROM、WHERE等,如果你使用这些保留字作为数据库、表、列名等标识符,就会导致语法错误。为了避免这种情况,可以使用反引号将保留字括起来,使其被视为标识符而不是保留字。

      例如,如果你想创建一个名为select的表,可以使用以下语句:

      CREATE TABLE `select` (
        `id` INT,
        `name` VARCHAR(50)
      );
      

      2、区分大小写:

      在MySQL中,默认是不区分大小写的,也就是说,name、NAME、NaMe都被认为是相同的标识符。如果你希望保留大小写的特性,可以使用反引号将标识符括起来。

      例如,如果你创建了一个名为MyTable的表,可以使用以下语句查询该表:

      SELECT * FROM `MyTable`;
      

      3、允许使用特殊字符:

      如果你的标识符包含特殊字符,例如空格、连字符、点号等,可以使用反引号括起来,使其被正确解析。

      例如,如果你创建了一个名为my-table的表,可以使用以下语句查询该表:

      SELECT * FROM `my-table`;
      

      需要注意的是,使用反引号括起来的标识符在SQL语句中是区分大小写的。因此,如果你在创建表时使用了MyTable作为表名,那么在查询时必须使用完全相同的大小写,否则会导致语法错误。

      💖The End💖点点关注,收藏不迷路💖
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]