zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

【MySQL】一文学会:2.3.3-如何去除数据库表中的列(字段)的重复数据?2.3.5-表名/字段名与关键字和保留字冲突怎么办?2.4-如何显示数据库的表结构?2.5-如何过滤数据?

mysql数据库数据 如何 显示 结构 重复 关键字
2023-09-11 14:19:28 时间


2.3.3 去除重复行

去除重复行,在本科课程《数据库系统》有个专业的术语叫“投影”。

比如,我想知道 employees 表中的字段 department_id 中,有什么部门,我们就可以把重复的部门去掉,返回一个无重复数据的结果集。

在MySQL中,在要去重的列 (字段) 前声明关键字 DISTINCT (adj.不同的;有区别的;不同种类的) ,就能实现该列去除重复数据,如下代码所示:

SELECT DISTINCT department_id
FROM employees;

查询结果:

image-20220623150855331

可以看见,department_id 共有11个不重复的数据,并且可以发现,MySQL返回的结果集是递增排列的。 其中有一个 (NULL) 是指没有部门ID的员工。

2.3.5 着重号

` (着重号) 是为了解决命名与保留字、数据库系统或常用方法冲突的问题。

如在数据库中,有一张表名为 order 的表,其与MySQL的排序关键字 ORDER 冲突。此时如果我直接查询 order 表,MySQL会报错。

SELECT * FROM ORDER;

查询结果:

image-20220623161852448

为了解决名称和关键字冲突的问题,要把 order 表用 ` (着重号) 引起来。如下代码所示:

SELECT * FROM `order`;

查询结果:

image-20220623162135892

【体会】

  • 在给数据库表、字段名等命名时,尽量不要与关键字和保留字重名。如果因为特殊情况必须坚持使用,则必须使用一对 ` (着重号) 引起来。

2.4 显示表结构

如果想知道数据库中一张表中,有什么字段、每个字段是什么数据类型、每个字段是否允许为空值等信息,我们就可以采用显示表结构。

在MySQL中,显示表结构,可以在表名前用关键字 DESCRIBE (vt.描述;形容;) 来实现,也可以用缩写 DESC 。如下代码所示:

DESCRIBE employees;DESC employees;

查询结果:

image-20220623163716903

可以看到有11行,每一行就是 employees 的一个字段。该查询结果的字段依次表示:字段名、数据类型、是否允许为空值、约束条件、默认值和额外说明。

2.5 过滤数据

例子1:

查询 employees 表中,department_id 为 90 的员工。

这时候我们就可以使用过滤条件来查询。在SQL中,过滤用关键字 WHERE 来实现,声明在 FROM 结构后面。例如,

SELECT employee_id, last_name, department_id
FROM employees
WHERE department_id = 90;

查询结果:

image-20220623170359422

例子2:

查询 employees 表中,lase_name 为 ‘King’ 的员工。

SELECT employee_id, last_name, department_id
FROM employees
WHERE last_name = 'King';

查询结果:

image-20220623170614272

【体会】

  • WHERE 要声明在 FROM 结构的后面。
  • 例子2中字符串类型的字段 last_name 要用单引号,且严格区分大小写。
  • 至此,SQL查询语句最基础的结构 SELECT...FROM...WHERE... 就出现了。过滤条件还有一系列丰富的运算符操作,结合各种运算符,查询过滤能实现各种丰富的功能。运算符将在下一章详细描述。