📜  PostgreSQL – 删除

📅  最后修改于: 2022-05-13 01:57:15.013000             🧑  作者: Mango

PostgreSQL – 删除

要从表中删除数据,PostgreSQL 有一个 DELETE 语句。

Syntax: 
DELETE FROM table
WHERE condition;

使用 DELETE 语句时需要遵循以下规则:

  • 首先,在 DELETE FROM 子句中指定要从中删除数据的表。
  • 其次,使用 WHERE 子句中的条件指定要删除的行。 WHERE 子句是可选的。但是,如果省略它,则 DELETE 语句将删除表中的所有行。

让我们建立一个示例数据库和表来演示 DELETE 语句。

  • 使用以下命令创建名为“company”的数据库:
    CREATE DATABASE company;
  • 使用以下命令将“员工”表添加到数据库中以显示公司层次结构:
    CREATE TABLE employee (
        employee_id INT PRIMARY KEY,
        first_name VARCHAR (255) NOT NULL,
        last_name VARCHAR (255) NOT NULL,
        manager_id INT,
        FOREIGN KEY (manager_id) 
        REFERENCES employee (employee_id) 
        ON DELETE CASCADE
    );
  • 现在使用以下命令向表中添加一些员工数据:
    INSERT INTO employee (
        employee_id,
        first_name,
        last_name,
        manager_id
    )
    VALUES
        (1, 'Sandeep', 'Jain', NULL),
        (2, 'Abhishek ', 'Kelenia', 1),
        (3, 'Harsh', 'Aggarwal', 1),
        (4, 'Raju', 'Kumar', 2),
        (5, 'Nikhil', 'Aggarwal', 2),
        (6, 'Anshul', 'Aggarwal', 2),
        (7, 'Virat', 'Kohli', 3),
        (8, 'Rohit', 'Sharma', 3);

    manager_id列中的值表示员工向其报告的高级经理。如果是 Null,他/她不会向任何人报告。
    整体层次结构如下图所示:

    当前数据库表如下所示:

    示例 1:
    在这里,我们将删除名字为“Raju”的员工数据。



    DELETE FROM employee
    WHERE first_name = 'Raju';

    输出:

    示例 2:
    这里我们将从“employee”表中删除多行。我们将删除名为“Abhishek Kelenia”的员工及其下属员工的数据。

    DELETE FROM employee
    WHERE last_name = 'Kelenia';

    输出: