Programming/PostgreSQL/Record Queries: Difference between revisions
Brodriguez (talk | contribs) (Add more queries) |
Brodriguez (talk | contribs) m (Brodriguez moved page PostgreSQL/Record Queries to Programming/PostgreSQL/Record Queries) |
(No difference)
| |
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_xvalues correspond to values to match (as if they were a standard WHERE clause). - The
columnsvalue 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"
);