Programming/PostgreSQL/Record Queries: Difference between revisions
Brodriguez (talk | contribs) (Create page) |
Brodriguez (talk | contribs) m (Brodriguez moved page PostgreSQL/Record Queries to Programming/PostgreSQL/Record Queries) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 41: | Line 41: | ||
INSERT INTO <table_name> ("id", "name", "description") | INSERT INTO <table_name> ("id", "name", "description") | ||
VALUES (1, 'A Test Name', 'Some Test Description'); | VALUES (1, 'A Test Name', 'Some Test Description'); | ||
== Insert Multiple Records into Table == | |||
INSERT INTO <table_name> | |||
VALUES | |||
(<record_1_values>), | |||
(<record_2_values>), | |||
... | |||
(<record_n_values) | |||
; | |||
Where each set is a full record to insert. | |||
For example, to create three records for a table of {{ ic |id, name, description}}, we can do: | |||
INSERT INTO test_table__basic | |||
VALUES | |||
(101, 'Test Name 1', 'Test Desc 1'), | |||
(102, 'Test Name 2', 'Test Desc 2'), | |||
(103, 'Test Name 3', 'Test Desc 3') | |||
; | |||
== Update One or More Similar Records in Table == | |||
UPDATE <table_name> | |||
SET <set_clause> | |||
WHERE (<where_clause>); | |||
For example, to update a record with id of 1, for a table of {{ ic |id, name, description}}, we can do: | |||
UPDATE <table_name> | |||
SET description = 'Abc' | |||
WHERE (id = 1); | |||
== Update Multiple Records in Table == | |||
This query is slightly complicated in syntax, but here goes: | |||
UPDATE test_table__basic AS orig_update_table SET | |||
<column_1> = temp_update_table.<column_1>, | |||
<column_2> = temp_update_table.<column_2>, | |||
... | |||
<column_n> = temp_update_table.<column_n> | |||
FROM (VALUES | |||
(record_1_values), | |||
(record_2_values), | |||
... | |||
(record_n_values) | |||
) AS temp_update_table (<columns>) | |||
WHERE ( | |||
orig_update_table.<column_1> = temp_update_table.<column_2> AND | |||
orig_update_table.<column_2> = temp_update_table.<column_2> AND | |||
... | |||
orig_update_table.<column_n> = temp_update_table.<column_n> AND | |||
); | |||
Where: | |||
* Each set is a full record of values to either match or update. | |||
* The {{ ic |column_x}} values correspond to values to match (as if they were a standard WHERE clause). | |||
* The {{ ic |columns}} value is the set of all columns to reference. Both ones we're matching on, and ones we're updating. | |||
* NOTE: If you want to update a value this way, you CANNOT also use it to match. | |||
For example, to update the {{ ic |description}} column of records that match the provided {{ ic |id}} and {{ ic |name}} fields, we can do: | |||
UPDATE test_table__basic AS orig_update_table SET | |||
"id" = temp_update_table."id", | |||
"name" = temp_update_table."name", | |||
"description" = temp_update_table."description" | |||
FROM (VALUES | |||
(101, 'Test Name 1', 'A New Description'), | |||
(102, 'Test Name 2', 'Another New Value'), | |||
(103, 'Test Name 3', 'Something Else') | |||
) AS temp_update_table ("id", "name", "description") | |||
WHERE ( | |||
orig_update_table."id" = temp_update_table."id" AND | |||
orig_update_table."name" = temp_update_table."name" | |||
); |
Latest revision as of 03:05, 27 January 2023
All of the following assume you have first loaded a database.
These also require replacing <table_name>
with the actual name of the table to query.
Display Records in Table
Basic query:
SELECT * FROM <table_name>;
Expanded query:
SELECT * FROM <table_name> WHERE (<where_clause>) ORDER BY <order_by_clause> LIMIT <number>;
Where:
<where_clause>
is an optional arg, replaced by the actual columns to set in the table.<order_by_clause>
is an optional arg, replaced by order of columns to sort by.<number>
is an optional arg, replaced by some integer to limit the number of records displayed.
For example, to get records from a table of id, name, description
, we can do:
SELECT * FROM <table_name> WHERE (name = 'A Test Name') ORDER BY "description" ASC, "name" DESC LIMIT 10;
Insert Single Record into Table
INSERT INTO <table_name> (<columns>) VALUES (<values>);
Where:
<columns>
is an optional arg, replaced by the actual columns to set in the table.<values>
is replaced by the actual values desired to insert.
For example, to create a record for a table of id, name, description
, we can do:
INSERT INTO <table_name> ("id", "name", "description") VALUES (1, 'A Test Name', 'Some Test Description');
Insert Multiple Records into Table
INSERT INTO <table_name> VALUES (<record_1_values>), (<record_2_values>), ... (<record_n_values) ;
Where each set is a full record to insert.
For example, to create three records for a table of id, name, description
, we can do:
INSERT INTO test_table__basic VALUES (101, 'Test Name 1', 'Test Desc 1'), (102, 'Test Name 2', 'Test Desc 2'), (103, 'Test Name 3', 'Test Desc 3') ;
Update One or More Similar Records in Table
UPDATE <table_name> SET <set_clause> WHERE (<where_clause>);
For example, to update a record with id of 1, for a table of id, name, description
, we can do:
UPDATE <table_name> SET description = 'Abc' WHERE (id = 1);
Update Multiple Records in Table
This query is slightly complicated in syntax, but here goes:
UPDATE test_table__basic AS orig_update_table SET <column_1> = temp_update_table.<column_1>, <column_2> = temp_update_table.<column_2>, ... <column_n> = temp_update_table.<column_n> FROM (VALUES (record_1_values), (record_2_values), ... (record_n_values) ) AS temp_update_table (<columns>) WHERE ( orig_update_table.<column_1> = temp_update_table.<column_2> AND orig_update_table.<column_2> = temp_update_table.<column_2> AND ... orig_update_table.<column_n> = temp_update_table.<column_n> AND );
Where:
- Each set is a full record of values to either match or update.
- The
column_x
values correspond to values to match (as if they were a standard WHERE clause). - The
columns
value is the set of all columns to reference. Both ones we're matching on, and ones we're updating. - NOTE: If you want to update a value this way, you CANNOT also use it to match.
For example, to update the description
column of records that match the provided id
and name
fields, we can do:
UPDATE test_table__basic AS orig_update_table SET "id" = temp_update_table."id", "name" = temp_update_table."name", "description" = temp_update_table."description" FROM (VALUES (101, 'Test Name 1', 'A New Description'), (102, 'Test Name 2', 'Another New Value'), (103, 'Test Name 3', 'Something Else') ) AS temp_update_table ("id", "name", "description") WHERE ( orig_update_table."id" = temp_update_table."id" AND orig_update_table."name" = temp_update_table."name" );