Mysql数据库:select from语句详解

Mysql数据库:select from语句详解

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

一、select from语句概述

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

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

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

二、select from语句的基本用法

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

sql 复制代码
SELECT column1, column2, ... FROM table_name;

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

table_name是要查询的表名。

三、select from语句的示例

1、查询所有列

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

sql 复制代码
SELECT * FROM table_name;

2、查询特定列

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

sql 复制代码
SELECT column1, column2 FROM table_name;

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

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

sql 复制代码
SELECT column1, column2 FROM table_name WHERE condition;

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

如:

sql 复制代码
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子句。示例代码如下:

sql 复制代码
SELECT column1, column2 FROM table_name ORDER BY column1 ASC;

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

如:

python 复制代码
1、升序排序:
SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名 ASC;

使用 ORDER BY 关键字可以按照指定列的值进行升序排序。

2、降序排序:
SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名 DESC;

使用 ORDER BY 关键字可以按照指定列的值进行降序排序。

5、查询结果限制

sql 复制代码
1、查询前几条数据:
SELECT 列名1, 列名2, ... FROM 表名 LIMIT 数量;

使用 LIMIT 关键字可以限制查询结果返回的数据数量。

2、查询指定范围的数据:
SELECT 列名1, 列名2, ... FROM 表名 LIMIT 起始位置, 数量;

例子:

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

sql 复制代码
SELECT column1, column2 FROM table_name LIMIT 10;

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

6、查询结果去重

sql 复制代码
SELECT DISTINCT 列名 FROM 表名;

或者

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

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

7、查询结果分组

sql 复制代码
SELECT 列名1, 列名2, ... FROM 表名 GROUP BY 列名;

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

8、查询结果统计

sql 复制代码
SELECT COUNT(列名) FROM 表名;

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

9、查询结果联合

sql 复制代码
SELECT 列名1, 列名2, ... FROM 表名1 UNION SELECT 列名1, 列名2, ... FROM 表名2;

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

10、查询简单的计算

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

sql 复制代码
SELECT SUM(column_name) FROM table_name;

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

sql 复制代码
SELECT AVG(column_name) FROM table_name;

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

sql 复制代码
SELECT MAX(column_name) FROM table_name;

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

sql 复制代码
SELECT MIN(column_name) FROM table_name;

11、查询别名

1、为列取别名

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

示例:

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

sql 复制代码
SELECT name AS 姓名, age AS 年龄
FROM students;

## 其中,别名可以使用双引号" "括起来。

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

2、为表取别名

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

示例:

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

sql 复制代码
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)三个列。现在我们想查询每个产品的总价,并为总价取一个别名"总价"。

sql 复制代码
SELECT name, price, quantity, (price * quantity) AS 总价
FROM products;

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

12、NULL参与运算

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

sql 复制代码
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时需要注意以下几点:

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

13、着重号(反引号)

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

1、区分保留字:

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

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

sql 复制代码
CREATE TABLE `select` (
  `id` INT,
  `name` VARCHAR(50)
);

2、区分大小写:

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

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

sql 复制代码
SELECT * FROM `MyTable`;

3、允许使用特殊字符:

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

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

sql 复制代码
SELECT * FROM `my-table`;

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

|---------------------------|
| 💖The End💖点点关注,收藏不迷路💖 |

相关推荐
岁岁种桃花儿2 小时前
MySQL从入门到精通系列:InnoDB记录存储结构
数据库·mysql
jiunian_cn4 小时前
【Redis】hash数据类型相关指令
数据库·redis·哈希算法
冉冰学姐4 小时前
SSM在线影评网站平台82ap4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·在线影评平台·影片分类
Exquisite.5 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
知识分享小能手5 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019数据库的操作(2)
数据库·学习·sqlserver
踩坑小念6 小时前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
萧曵 丶6 小时前
MySQL 语句书写顺序与执行顺序对比速记表
数据库·mysql
Wiktok7 小时前
MySQL的常用数据类型
数据库·mysql
曹牧7 小时前
Oracle 表闪回(Flashback Table)
数据库·oracle
J_liaty8 小时前
Redis 超详细入门教程:从零基础到实战精通
数据库·redis·缓存