From 0c9028f41adb1bee4e6b73d38cf13f3892f74433 Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Sun, 22 Sep 2024 17:40:16 +0530 Subject: [PATCH 1/4] SQL-294 - Insert into SQL table or update if exists --- .../merge-sql-server.sql | 19 +++++++++++++++++++ .../on-conflict-postgresql.sql | 12 ++++++++++++ .../on-duplicate-key-mysql.sql | 12 ++++++++++++ .../replace-mysql.sql | 11 +++++++++++ 4 files changed, 54 insertions(+) create mode 100644 sql-queries-5/insert-or-update-if-exists/merge-sql-server.sql create mode 100644 sql-queries-5/insert-or-update-if-exists/on-conflict-postgresql.sql create mode 100644 sql-queries-5/insert-or-update-if-exists/on-duplicate-key-mysql.sql create mode 100644 sql-queries-5/insert-or-update-if-exists/replace-mysql.sql diff --git a/sql-queries-5/insert-or-update-if-exists/merge-sql-server.sql b/sql-queries-5/insert-or-update-if-exists/merge-sql-server.sql new file mode 100644 index 00000000..f17ca73e --- /dev/null +++ b/sql-queries-5/insert-or-update-if-exists/merge-sql-server.sql @@ -0,0 +1,19 @@ +CREATE TABLE employees ( + id INT PRIMARY KEY, + name VARCHAR(50), + department VARCHAR(50) +); + + +INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); + +MERGE INTO employees AS target +USING (SELECT 1 AS id, 'Alice' AS name, 'Accounting' AS department) AS source +ON target.id = source.id +WHEN MATCHED THEN + UPDATE SET name = source.name, department = source.department +WHEN NOT MATCHED THEN + INSERT (id, name, department) VALUES (source.id, source.name, source.department); + + +SELECT * from employees; \ No newline at end of file diff --git a/sql-queries-5/insert-or-update-if-exists/on-conflict-postgresql.sql b/sql-queries-5/insert-or-update-if-exists/on-conflict-postgresql.sql new file mode 100644 index 00000000..31a216d5 --- /dev/null +++ b/sql-queries-5/insert-or-update-if-exists/on-conflict-postgresql.sql @@ -0,0 +1,12 @@ +CREATE TABLE employees ( + id INT PRIMARY KEY, + name VARCHAR(50), + department VARCHAR(50) +); + +INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); + +INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Accounting') +ON CONFLICT (id) DO UPDATE SET name = 'Alice', department = 'Accounting'; + +SELECT * from employees; \ No newline at end of file diff --git a/sql-queries-5/insert-or-update-if-exists/on-duplicate-key-mysql.sql b/sql-queries-5/insert-or-update-if-exists/on-duplicate-key-mysql.sql new file mode 100644 index 00000000..d3b56727 --- /dev/null +++ b/sql-queries-5/insert-or-update-if-exists/on-duplicate-key-mysql.sql @@ -0,0 +1,12 @@ +CREATE TABLE employees ( + id INT PRIMARY KEY, + name VARCHAR(50), + department VARCHAR(50) +); + +INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); + +INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Accounting') +ON DUPLICATE KEY UPDATE name = 'Alice', department = 'Accounting'; + +SELECT * from employees; \ No newline at end of file diff --git a/sql-queries-5/insert-or-update-if-exists/replace-mysql.sql b/sql-queries-5/insert-or-update-if-exists/replace-mysql.sql new file mode 100644 index 00000000..8c43a781 --- /dev/null +++ b/sql-queries-5/insert-or-update-if-exists/replace-mysql.sql @@ -0,0 +1,11 @@ +CREATE TABLE employees ( + id INT PRIMARY KEY, + name VARCHAR(50), + department VARCHAR(50) +); + +INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); + +REPLACE INTO employees (id, name, department) VALUES (1, 'Alice', 'Accounting'); + +SELECT * from employees; \ No newline at end of file From 08b4a503dd016ee9033e6bac219e902e21b53308 Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Thu, 26 Sep 2024 13:29:53 +0530 Subject: [PATCH 2/4] SQL-294 - Insert into SQL table or update if exists --- sql-queries-6/README | 2 ++ .../insert-or-update-if-exists/merge-sql-server.sql | 0 .../insert-or-update-if-exists/on-conflict-postgresql.sql | 0 .../insert-or-update-if-exists/on-duplicate-key-mysql.sql | 0 .../insert-or-update-if-exists/replace-mysql.sql | 0 5 files changed, 2 insertions(+) create mode 100644 sql-queries-6/README rename {sql-queries-5 => sql-queries-6}/insert-or-update-if-exists/merge-sql-server.sql (100%) rename {sql-queries-5 => sql-queries-6}/insert-or-update-if-exists/on-conflict-postgresql.sql (100%) rename {sql-queries-5 => sql-queries-6}/insert-or-update-if-exists/on-duplicate-key-mysql.sql (100%) rename {sql-queries-5 => sql-queries-6}/insert-or-update-if-exists/replace-mysql.sql (100%) diff --git a/sql-queries-6/README b/sql-queries-6/README new file mode 100644 index 00000000..a96ddcca --- /dev/null +++ b/sql-queries-6/README @@ -0,0 +1,2 @@ +### Relevant Articles: + diff --git a/sql-queries-5/insert-or-update-if-exists/merge-sql-server.sql b/sql-queries-6/insert-or-update-if-exists/merge-sql-server.sql similarity index 100% rename from sql-queries-5/insert-or-update-if-exists/merge-sql-server.sql rename to sql-queries-6/insert-or-update-if-exists/merge-sql-server.sql diff --git a/sql-queries-5/insert-or-update-if-exists/on-conflict-postgresql.sql b/sql-queries-6/insert-or-update-if-exists/on-conflict-postgresql.sql similarity index 100% rename from sql-queries-5/insert-or-update-if-exists/on-conflict-postgresql.sql rename to sql-queries-6/insert-or-update-if-exists/on-conflict-postgresql.sql diff --git a/sql-queries-5/insert-or-update-if-exists/on-duplicate-key-mysql.sql b/sql-queries-6/insert-or-update-if-exists/on-duplicate-key-mysql.sql similarity index 100% rename from sql-queries-5/insert-or-update-if-exists/on-duplicate-key-mysql.sql rename to sql-queries-6/insert-or-update-if-exists/on-duplicate-key-mysql.sql diff --git a/sql-queries-5/insert-or-update-if-exists/replace-mysql.sql b/sql-queries-6/insert-or-update-if-exists/replace-mysql.sql similarity index 100% rename from sql-queries-5/insert-or-update-if-exists/replace-mysql.sql rename to sql-queries-6/insert-or-update-if-exists/replace-mysql.sql From 7b43c4f40ee588a81b0aea4fc8aec74c00eb7c50 Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Sat, 28 Sep 2024 19:09:31 +0530 Subject: [PATCH 3/4] SQL-294 - Insert into SQL table or update if exists --- {sql-queries-6 => sql-queries-7}/README | 0 .../insert-or-update-if-exists/merge-sql-server.sql | 0 .../insert-or-update-if-exists/on-conflict-postgresql.sql | 0 .../insert-or-update-if-exists/on-duplicate-key-mysql.sql | 0 .../insert-or-update-if-exists/replace-mysql.sql | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename {sql-queries-6 => sql-queries-7}/README (100%) rename {sql-queries-6 => sql-queries-7}/insert-or-update-if-exists/merge-sql-server.sql (100%) rename {sql-queries-6 => sql-queries-7}/insert-or-update-if-exists/on-conflict-postgresql.sql (100%) rename {sql-queries-6 => sql-queries-7}/insert-or-update-if-exists/on-duplicate-key-mysql.sql (100%) rename {sql-queries-6 => sql-queries-7}/insert-or-update-if-exists/replace-mysql.sql (100%) diff --git a/sql-queries-6/README b/sql-queries-7/README similarity index 100% rename from sql-queries-6/README rename to sql-queries-7/README diff --git a/sql-queries-6/insert-or-update-if-exists/merge-sql-server.sql b/sql-queries-7/insert-or-update-if-exists/merge-sql-server.sql similarity index 100% rename from sql-queries-6/insert-or-update-if-exists/merge-sql-server.sql rename to sql-queries-7/insert-or-update-if-exists/merge-sql-server.sql diff --git a/sql-queries-6/insert-or-update-if-exists/on-conflict-postgresql.sql b/sql-queries-7/insert-or-update-if-exists/on-conflict-postgresql.sql similarity index 100% rename from sql-queries-6/insert-or-update-if-exists/on-conflict-postgresql.sql rename to sql-queries-7/insert-or-update-if-exists/on-conflict-postgresql.sql diff --git a/sql-queries-6/insert-or-update-if-exists/on-duplicate-key-mysql.sql b/sql-queries-7/insert-or-update-if-exists/on-duplicate-key-mysql.sql similarity index 100% rename from sql-queries-6/insert-or-update-if-exists/on-duplicate-key-mysql.sql rename to sql-queries-7/insert-or-update-if-exists/on-duplicate-key-mysql.sql diff --git a/sql-queries-6/insert-or-update-if-exists/replace-mysql.sql b/sql-queries-7/insert-or-update-if-exists/replace-mysql.sql similarity index 100% rename from sql-queries-6/insert-or-update-if-exists/replace-mysql.sql rename to sql-queries-7/insert-or-update-if-exists/replace-mysql.sql From cd4226b5079c26d3de731c138b43df30443e1b7b Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Wed, 2 Oct 2024 12:12:22 +0530 Subject: [PATCH 4/4] SQL-294 - Insert into SQL table or update if exists --- .../merge-sql-server.sql | 20 ++++++------------- .../on-conflict-postgresql.sql | 14 ++++--------- .../on-duplicate-key-mysql.sql | 14 ++++--------- .../replace-mysql.sql | 12 +++-------- 4 files changed, 17 insertions(+), 43 deletions(-) diff --git a/sql-queries-7/insert-or-update-if-exists/merge-sql-server.sql b/sql-queries-7/insert-or-update-if-exists/merge-sql-server.sql index f17ca73e..a6c91fcb 100644 --- a/sql-queries-7/insert-or-update-if-exists/merge-sql-server.sql +++ b/sql-queries-7/insert-or-update-if-exists/merge-sql-server.sql @@ -1,19 +1,11 @@ -CREATE TABLE employees ( - id INT PRIMARY KEY, - name VARCHAR(50), - department VARCHAR(50) -); +INSERT INTO Department (id, name, code) VALUES (1, 'Computer Science', 'CS'); - -INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); - -MERGE INTO employees AS target -USING (SELECT 1 AS id, 'Alice' AS name, 'Accounting' AS department) AS source +MERGE INTO Department AS target +USING (SELECT 1 AS id, 'Computer Science' AS name, 'CSE' AS code) AS source ON target.id = source.id WHEN MATCHED THEN - UPDATE SET name = source.name, department = source.department + UPDATE SET name = source.name, code = source.code WHEN NOT MATCHED THEN - INSERT (id, name, department) VALUES (source.id, source.name, source.department); - + INSERT (id, name, code) VALUES (source.id, source.name, source.code); -SELECT * from employees; \ No newline at end of file +SELECT * from Department; \ No newline at end of file diff --git a/sql-queries-7/insert-or-update-if-exists/on-conflict-postgresql.sql b/sql-queries-7/insert-or-update-if-exists/on-conflict-postgresql.sql index 31a216d5..71ce4199 100644 --- a/sql-queries-7/insert-or-update-if-exists/on-conflict-postgresql.sql +++ b/sql-queries-7/insert-or-update-if-exists/on-conflict-postgresql.sql @@ -1,12 +1,6 @@ -CREATE TABLE employees ( - id INT PRIMARY KEY, - name VARCHAR(50), - department VARCHAR(50) -); +INSERT INTO Department (id, name, code) VALUES (1, 'Computer Science', 'CS'); -INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); +INSERT INTO Department (id, name, code) VALUES (1, 'Computer Science', 'CSE') +ON CONFLICT (id) DO UPDATE SET name = 'Computer Science', code = 'CSE'; -INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Accounting') -ON CONFLICT (id) DO UPDATE SET name = 'Alice', department = 'Accounting'; - -SELECT * from employees; \ No newline at end of file +SELECT * from Department; \ No newline at end of file diff --git a/sql-queries-7/insert-or-update-if-exists/on-duplicate-key-mysql.sql b/sql-queries-7/insert-or-update-if-exists/on-duplicate-key-mysql.sql index d3b56727..3faed4f2 100644 --- a/sql-queries-7/insert-or-update-if-exists/on-duplicate-key-mysql.sql +++ b/sql-queries-7/insert-or-update-if-exists/on-duplicate-key-mysql.sql @@ -1,12 +1,6 @@ -CREATE TABLE employees ( - id INT PRIMARY KEY, - name VARCHAR(50), - department VARCHAR(50) -); +INSERT INTO Department (id, name, code) VALUES (1, 'Computer Science', 'CS'); -INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); +INSERT INTO Department (id, name, code) VALUES (1, 'Computer Science', 'CSE') +ON DUPLICATE KEY UPDATE name = 'Computer Science', code = 'CSE'; -INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Accounting') -ON DUPLICATE KEY UPDATE name = 'Alice', department = 'Accounting'; - -SELECT * from employees; \ No newline at end of file +SELECT * from Department; \ No newline at end of file diff --git a/sql-queries-7/insert-or-update-if-exists/replace-mysql.sql b/sql-queries-7/insert-or-update-if-exists/replace-mysql.sql index 8c43a781..3f2d8316 100644 --- a/sql-queries-7/insert-or-update-if-exists/replace-mysql.sql +++ b/sql-queries-7/insert-or-update-if-exists/replace-mysql.sql @@ -1,11 +1,5 @@ -CREATE TABLE employees ( - id INT PRIMARY KEY, - name VARCHAR(50), - department VARCHAR(50) -); +INSERT INTO Department (id, name, code) VALUES (1, 'Computer Science', 'CS'); -INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Finance'); +REPLACE INTO Department (id, name, code) VALUES (1, 'Computer Science', 'CSE'); -REPLACE INTO employees (id, name, department) VALUES (1, 'Alice', 'Accounting'); - -SELECT * from employees; \ No newline at end of file +SELECT * from Department; \ No newline at end of file