select简单查询

发布于:2024-06-18 ⋅ 阅读:(149) ⋅ 点赞:(0)

SELECT 简单查询

假如我们有一张表,表名为 students,如下所示:

+----+--------+------+---------------+
| id | name   | age  | department_id |
+----+--------+------+---------------+
|  1 | 张三   |   20 |           101 |
|  2 | Alice  |   21 |           102 |
|  3 | 李四   |   22 |           103 |
|  4 | Bob    |   19 |           101 |
|  5 | 张三   |   20 |           102 |
|  6 | Frank  |   21 |           103 |
|  7 | Grace  |   22 |           101 |
|  8 | Hannah |   20 |           102 |
|  9 | Isaac  |   21 |           103 |
| 10 | 张三   |   22 |           101 |
+----+--------+------+---------------+

查询指定列

以下是 SELECT 命令的基本语法:

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

接下来我们试着查询一下表中的 name 和 age:

select name,age from students;

+--------+------+
| name   | age  |
+--------+------+
| 张三   |   20 |
| Alice  |   21 |
| 李四   |   22 |
| Bob    |   19 |
| 张三   |   20 |
| Frank  |   21 |
| Grace  |   22 |
| Hannah |   20 |
| Isaac  |   21 |
| 张三   |   22 |
+--------+------+
10 rows in set (0.00 sec)

看起来十分的臃肿?有重复值!!!别急,接下来介绍一下如何去重。

这里有细心的同学发现查询的时候字母都是小写。没错,就是你想的那样,关键字不区分大小写 select 和 SELECT 是一样的。

DISTINCT 去重

以下是 DISTINCT 命令的基本语法:

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

来,展示一下:

select distinct name from students;

+--------+
| name   |
+--------+
| 张三   |
| Alice  |
| 李四   |
| Bob    |
| Frank  |
| Grace  |
| Hannah |
| Isaac  |
+--------+
8 rows in set (0.00 sec)

是不是比刚刚舒服多了。还有些同学会想我想查看整个表,这样一个一个写列名太麻烦了,有没有简单的方法?有!当然有!

查找所有列

星号( * )代表所有的意思:

select distinct * from students;

+----+--------+------+---------------+
| id | name   | age  | department_id |
+----+--------+------+---------------+
|  1 | 张三   |   20 |           101 |
|  2 | Alice  |   21 |           102 |
|  3 | 李四   |   22 |           103 |
|  4 | Bob    |   19 |           101 |
|  5 | 张三   |   20 |           102 |
|  6 | Frank  |   21 |           103 |
|  7 | Grace  |   22 |           101 |
|  8 | Hannah |   20 |           102 |
|  9 | Isaac  |   21 |           103 |
| 10 | 张三   |   22 |           101 |
+----+--------+------+---------------+
10 rows in set (0.00 sec)

这样就很容易查看整个表

为列设置别名

什么?老板让我把这些列名的查新结果变成中文?

别急,我们可以用as为列设置别名。我们以 name 和 age 为例。

select distinct 
name as "姓名" ,
age "年龄"  
from students;
+--------+------+
| 姓名   | 年龄 |
+--------+------+
| 张三   |   20 |
| Alice  |   21 |
| 李四   |   22 |
| Bob    |   19 |
| Frank  |   21 |
| Grace  |   22 |
| Hannah |   20 |
| Isaac  |   21 |
| 张三   |   22 |
+--------+------+
9 rows in set (0.00 sec)

细心的同学可能发现 name 后面有 as 而 age 后面却没有。

这是没关系的,两种方式都对。

条件查询

顾名思义,就是按照某个特定的条件进行查询。只有符合条件的才能被输出。

以下是 WHERE 命令的基本语法:

SELECT DISTINCT 列名1, 列名2
FROM 表名
WHERE 条件表达式;

假如我们查询年龄在 20 岁以上的同学所有信息:

select distinct * from students where age > 20;

+----+-------+------+---------------+
| id | name  | age  | department_id |
+----+-------+------+---------------+
|  2 | Alice |   21 |           102 |
|  3 | 李四  |   22 |           103 |
|  6 | Frank |   21 |           103 |
|  7 | Grace |   22 |           101 |
|  9 | Isaac |   21 |           103 |
| 10 | 张三  |   22 |           101 |
+----+-------+------+---------------+