Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u7CQo-00CPgW-Cs for pgsql-general@arkaria.postgresql.org; Tue, 22 Apr 2025 12:08:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u7CQl-00DoUv-Ds for pgsql-general@arkaria.postgresql.org; Tue, 22 Apr 2025 12:08:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u6uOv-0074Tl-P3 for pgsql-general@lists.postgresql.org; Mon, 21 Apr 2025 16:53:46 +0000 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u6uOt-001G8K-1H for pgsql-general@postgresql.org; Mon, 21 Apr 2025 16:53:46 +0000 Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-30eef9ce7feso42233071fa.0 for ; Mon, 21 Apr 2025 09:53:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745254423; x=1745859223; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=mbGezdHEADS+j3C30NFfqyuuNUy3Hj+tXG+uiUJTXs0=; b=gKJaLBGUsrm8gTbde9kj42dhc8o7a/9xpRECts2rLd/vP0aSZqRLhBUhl0RHCE/5kg CzNmqvyz8cPeGrg2S2BmEbzpwiijRkG7SD6ETVoqc5+Pnpx6yWVKFBV9wX+/9VivYqJh VazrFWtH7GMlWMDq8XRteXdzwtI9yi0DPgM16j4GggteTGaFyKIHSWBS0myKKmmAwGPm vnkr9DGRS3Tw5yH6ysdUJheAVFK9sUkf9aIjI1w9jsWdp3au2y8AAlEOY2Cgb3w808R2 /4a3zhMX78sL3x2h1PbcrFOKwFvQlMTEHMtx6i1n8Skuifkv7X/GT77BTJVnd4DoNnkg FFfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745254423; x=1745859223; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=mbGezdHEADS+j3C30NFfqyuuNUy3Hj+tXG+uiUJTXs0=; b=w3swRBJYTY+pN9YGZECOW9nD3LKF5sR42wzkzBeMs82l31WCSQWE32P37GhlWIfYib ZW5LU9VlHHmZKuvZY5lonx/8KBIzSHkGIoyvIkGDoBYOUkZHupfQ8dxde4omwJnT56fU 6nzfT3JX5nK1BdSIY0paWjnbMTSjG2G8pMku6fCK7/MgpxRrMIXL64THfdZrDUuCCVLe ES9UoS/E/t9LDsQK39BC4SNtSDiDKW0smf+gwolBravgpZnwNiYaQfZDwGKIb/6muCVx 6bcPKDqjoTcWII4obpF/GqLSmRfJu4EeGmU6PBpSI8litcZzDMaiYDNr8MwQ64yC1wUS sUZw== X-Gm-Message-State: AOJu0YxgjhIC2K+F8XzUuIhjXK8b81/b72yoMKS3qjqUjkYr1ZY2irCJ F5sCNI40O75cOCQFuXXZWuwsJmx8A6TlclKJKsqZURvGSWBDNCWF/1RiHoaIh94TF6yUmbGw7Jl 1gXTAUTjgGYbYVYQC8SZiVFDIJftb8fqp X-Gm-Gg: ASbGnct0aplnQs4Rscco77zUg2SwnQKUxgIYbr0HyUeadC1tQDSrud/T39h3antGw7V ZHPVrcYjiZ/xZy42gEUk+P7qD3I/btTk3RuNBVrGaVdFbJGT042C9rpmztO0/SOpvV8+8Owx2MN aWBftyGXipMXEUutpeCf8r93A= X-Google-Smtp-Source: AGHT+IHCcK5SxQXa4IYfSyb9FTb5a28WKI1/PUptW/HHmh0JeO2HNZdojgBMvBpW8Zzt+KgVUNvvXG+dnwtLUfvkZdQ= X-Received: by 2002:a2e:bcc2:0:b0:310:8595:7a60 with SMTP id 38308e7fff4ca-310904c64e5mr33965161fa.5.1745254423019; Mon, 21 Apr 2025 09:53:43 -0700 (PDT) MIME-Version: 1.0 From: Abhishek Hatgine Date: Mon, 21 Apr 2025 22:23:30 +0530 X-Gm-Features: ATxdqUHvtwMUtpSeqaTusg0JL_CGCoOcvOQ-VACyQ9YFhBMOw4xLxFQ4hHvOvfM Message-ID: Subject: Feature Proposal: Column-Level DELETE Operation in SQL To: pgsql-general@postgresql.org Content-Type: multipart/alternative; boundary="000000000000ed475206334cb5aa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ed475206334cb5aa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable *Dear SQL Development Team,* I hope this message finds you well. I'd like to propose a new feature for consideration in future versions of SQL =E2=80=94 the ability to perform a column-level DELETE operation, allow= ing removal of specific column values without affecting the entire row. *Proposal Summary* Currently, SQL provides two core commands: - DELETE =E2=80=93 to remove entire rows. - UPDATE =E2=80=93 to change or nullify column values. However, there=E2=80=99s no specific, expressive way to *delete the value o= f a column* directly. The typical workaround is to use: UPDATE Customers SET Address =3D NULL WHERE CustomerID =3D 103; While this works fine, it doesn't semantically express that the developer intends to *remove* the value =E2=80=94 not just update it. *Proposed Syntax Examples* Here are some ideas for possible new syntax: DELETE Address FROM Customers WHERE CustomerID =3D 103;-- or REMOVE COLUMN Address FROM Customers WHERE CustomerID =3D 103; And even: DELETE Address, PostalCode FROM Customers WHERE Country =3D 'India'; These would act as a shortcut or expressive alias for setting one or more column values to NULL. *Why This Matters* - *Improved readability* and code clarity. - More intuitive for developers coming from languages or NoSQL systems where fields can be "deleted" from an object/document. - Emphasizes intent: *deleting* a value is conceptually different from *updating* it to NULL. - Opens doors for potential enhancements in tooling and IDE support. I understand this would require careful consideration within the SQL standards, but I believe it could make SQL more expressive and beginner-friendly while preserving its power. Thank you for your time and for all the work you do to maintain and improve SQL systems. Warm regards, *Abhishek Hatgine* SQL Learner Your Email =E2=80=93 hatgineabhishek99@gmail.com Location =E2=80=93 Pune --000000000000ed475206334cb5aa Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Dear SQL Development Team,

I hope this message finds you well.

I'd like to propose a new feature for consideration= in future versions of SQL =E2=80=94 the ability to perform a column-level = DELETE operation, allowing removal of specific column values w= ithout affecting the entire row.

Proposal Su= mmary

Currently, SQL provides two core commands:

  • DELETE =E2=80=93 to remove entire rows.

  • UPDATE =E2=80=93 to change or nullify colu= mn values.

However, there=E2=80=99s no specific, expressive way to= delete the value of a column directly. The typical workar= ound is to use:

<= div class=3D"gmail-overflow-y-auto gmail-p-4" dir=3D"ltr">= UPDATE Customers SET Addre= ss =3D NULL WHERE Custo= merID =3D 103;

While this works fine, it doesn't semantically expr= ess that the developer intends to remove the value =E2=80= =94 not just update it.

Proposed Syntax Exam= ples

Here are some ideas for possible new syntax:


DELETE Address FROM Customers WHERE CustomerID = =3D 103; -- or REMOVE COLUMN Address FROM Customers WHERE CustomerID =3D 103;

And even:

DELETE Address, PostalCode FROM Customers WHERE Country =3D 'India';

These would act as a shortcut or expressive alias for s= etting one or more column values to NULL.

Why This Matters

  • Improved readability and code clarity.=

  • More intuitive for developers coming from languages or = NoSQL systems where fields can be "deleted" from an object/docume= nt.

  • Emphasizes intent: deleting a value is concept= ually different from updating it to NULL.

  • Opens doors for potential enhancements in tooling and I= DE support.

I understand this would require careful consideration w= ithin the SQL standards, but I believe it could make SQL more expressive an= d beginner-friendly while preserving its power.

Thank you for your time and for all the work you do to = maintain and improve SQL systems.

Warm regards,
Abhishek Hatgine
SQL Learner
Your Email =E2=80=93 hatgineabhishek99@gmail.com
Location =E2=80=93 Pune

--000000000000ed475206334cb5aa--