2
0
mirror of https://github.com/chubin/cheat.sheets synced 2024-11-01 21:40:24 +00:00

added PostgreSQL chet sheets

This commit is contained in:
Igor Chubin 2018-01-07 11:42:08 +00:00
parent 39db552a7e
commit c0d6f0a8b5
14 changed files with 317 additions and 0 deletions

22
sheets/_psql/columns Normal file
View File

@ -0,0 +1,22 @@
# Add column
ALTER TABLE <table_name> IF EXISTS
ADD <column_name> <data_type> [<constraints>];
# Update column
ALTER TABLE <table_name> IF EXISTS
ALTER <column_name> TYPE <data_type> [<constraints>];
# Delete column
ALTER TABLE <table_name> IF EXISTS
DROP <column_name>;
# Update column to be an auto-incrementing primary key
ALTER TABLE <table_name>
ADD COLUMN <column_name> SERIAL PRIMARY KEY;
# Insert into a table, with an auto-incrementing primary key
INSERT INTO <table_name>
VALUES (DEFAULT, <value1>);
#
INSERT INTO <table_name> (<column1_name>,<column2_name>)
VALUES ( <value1>,<value2> );

5
sheets/_psql/databases Normal file
View File

@ -0,0 +1,5 @@
# Create a new database
CREATE DATABASE [IF NOT EXISTS] db_name;
# Delete a database permanently
DROP DATABASE [IF EXISTS] db_name;

6
sheets/_psql/indexes Normal file
View File

@ -0,0 +1,6 @@
# Creating an index with the specified name on a table
CREATE [UNIQUE] INDEX index_name
ON table (column,...)
# Removing a specified index from table
DROP INDEX index_name;

8
sheets/_psql/performance Normal file
View File

@ -0,0 +1,8 @@
# Show the query plan for a query
EXPLAIN query;
# Show and execute the query plan for a query
EXPLAIN ANALYZE query;
# Collect statistics
ANALYZE table_name;

20
sheets/_psql/permissions Normal file
View File

@ -0,0 +1,20 @@
# Grant all permissions on database
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;
# Grant connection permissions on database
GRANT CONNECT ON DATABASE <db_name> TO <user_name>;
# Grant permissions on schema
GRANT USAGE ON SCHEMA public TO <user_name>;
# Grant permissions to functions
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;
# Grant permissions to select, update, insert, delete, on a all tables
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <user_name>;
# Grant permissions, on a table
GRANT SELECT, UPDATE, INSERT ON <table_name> TO <user_name>;
# Grant permissions, to select, on a table
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_name>;

11
sheets/_psql/roles Normal file
View File

@ -0,0 +1,11 @@
# Create a new role
CREATE ROLE role_name;
# Create a new role with a username and password:
CREATE ROLE username NOINHERIT LOGIN PASSWORD password;
# Change role for current sesion to the new_role:
SET ROLE new_role;
# Allow role_1 to set its role as role_2:
GRANT role_2 TO role_1;

10
sheets/_psql/schema Normal file
View File

@ -0,0 +1,10 @@
# List schemas
\dn
SELECT schema_name FROM information_schema.schemata;
SELECT nspname FROM pg_catalog.pg_namespace;
# Create schema
CREATE SCHEMA IF NOT EXISTS <schema_name>;
# Drop schema
DROP SCHEMA IF EXISTS <schema_name> CASCADE;

74
sheets/_psql/select Normal file
View File

@ -0,0 +1,74 @@
# Query all data from a table
SELECT * FROM table_name;
Query data from specified columns of all rows in a table
SELECT column, column2... FROM table;
# Query data and select only unique rows
SELECT DISTINCT (column) FROM table;
# Query data from a table with a filter
SELECT * FROM table WHERE condition;
# Set an alias for a column in the result set
SELECT column_1 AS new_column_1, ...
FROM table;
# Query data using the LIKE operator
SELECT * FROM table_name
WHERE column LIKE '%value%'
# Query data using the BETWEEN operator
SELECT * FROM table_name
WHERE column BETWEEN low AND high;
# Query data using the IN operator
SELECT * FROM table_name
WHERE column IN (value1, value2,...);
# Constrain the returned rows with LIMIT clause
SELECT * FROM table_name
LIMIT limit OFFSET offset
ORDER BY column_name;
# Query data from multiple using the inner join, left join, full outer join, cross join and natural join:
SELECT * FROM table1 INNER JOIN table2 ON conditions
SELECT * FROM table1 LEFT JOIN table2 ON conditions
SELECT * FROM table1 FULL OUTER JOIN table2 ON conditions
SELECT * FROM table1 CROSS JOIN table2;
SELECT * FROM table1 NATURAL JOIN table2;
# Return the number of rows of a table.
SELECT COUNT (*)
FROM table_name;
# Sort rows in ascending or descending order
SELECT column, column2, ...
FROM table
ORDER BY column ASC [DESC], column2 ASC [DESC],...;
# Group rows using GROUP BY clause.
SELECT *
FROM table
GROUP BY column_1, column_2, ...;
# Filter groups using the HAVING clause.
SELECT *
FROM table
GROUP BY column_1
HAVING condition;
# Combine the result set of two or more queries with UNION operator:
SELECT * FROM table1
UNION
SELECT * FROM table2;
# Minus a result set using EXCEPT operator:
SELECT * FROM table1
EXCEPT
SELECT * FROM table2;
# Get intersection of the result sets of two queries:
SELECT * FROM table1
INTERSECT
SELECT * FROM table2;

48
sheets/_psql/shell Normal file
View File

@ -0,0 +1,48 @@
# Connect to a specific database
\c database_name
# To quite the psql
\q
# List all databases in the PostgreSQL database server
\l
# List all schemas
\dn
# List all stored procedures and functions
\df
# List all views
\dv
# Lists all tables in a current database
\dt
# Get more information on tables in the current database
\dt+
# Get detailed information on a table
\d+ table_name
# Show a stored procedure or function code
\df+ function_name
# Show query output in the pretty-format
\x
# List all users
\du
# Export table into CSV file
\copy <table_name> TO '<file_path>' CSV
# Export table, only specific columns, to CSV file
\copy <table_name>(<column_1>,<column_1>,<column_1>) TO '<file_path>' CSV
# Import CSV file into table
\copy <table_name> FROM '<file_path>' CSV
# Import CSV file into table, only specific columns
\copy <table_name>(<column_1>,<column_1>,<column_1>) FROM '<file_path>' CSV

32
sheets/_psql/tables Normal file
View File

@ -0,0 +1,32 @@
# Create a new table or a temporary table
CREATE [TEMP] TABLE [IF NOT EXISTS] table_name(
pk SERIAL PRIMARY KEY,
c1 type(size) NOT NULL,
c2 type(size) NULL,
...
);
# Add a new column into a table
ALTER TABLE table_name ADD COLUMN new_column_name TYPE;
# Drop a column in a table
ALTER TABLE table_name DROP COLUMN column_name;
# Rename a column
ALTER TABLE table_name RENAME column_name TO new_column_name;
# Set or remove a default value for a column
ALTER TABLE table_name ALTER COLUMN [SET DEFAULT value | DROP DEFAULT]
# Add a primary key to a table
ALTER TABLE table_name ADD PRIMARY KEY (column,...);
# Remove the primary key from a table
ALTER TABLE table_name
DROP CONSTRAINT primary_key_constraint_name;
# Rename a table
ALTER TABLE table_name RENAME TO new_table_name;
# Drop a table and its dependent objects:
DROP TABLE [IF EXISTS] table_name CASCADE;

27
sheets/_psql/update Normal file
View File

@ -0,0 +1,27 @@
# Insert a new row into a table
INSERT INTO table(column1,column2,...)
VALUES(value_1,value_2,...);
# Insert multiple rows into a table
INSERT INTO table_name(column1,column2,...)
VALUES(value_1,value_2,...),
(value_1,value_2,...),
(value_1,value_2,...)...
# Update data for all rows
UPDATE table_name
SET column_1 = value_1,
...;
# Update data for a set of rows specified by a condition in WHERE clause
UPDATE table
SET column_1 = value_1,
...
WHERE condition;
# Delete all rows of a table
DELETE FROM table_name;
# Delete specific rows based on a condition
DELETE FROM table_name
WHERE condition;

11
sheets/_psql/users Normal file
View File

@ -0,0 +1,11 @@
# List roles
SELECT rolname FROM pg_roles;
# Create user
CREATE USER <user_name> WITH PASSWORD '<password>';
# Drop user
DROP USER IF EXISTS <user_name>;
# Alter user password
ALTER ROLE <user_name> WITH PASSWORD '<password>';

25
sheets/_psql/views Normal file
View File

@ -0,0 +1,25 @@
# Create a view
CREATE OR REPLACE view_name AS
query;
# Create a recurisve view:
CREATE RECURSIVE VIEW view_name(columns) AS
SELECT columns;
# Create a materialized view:
CREATE MATERIALIZED VIEW view_name
AS
query
WITH [NO] DATA;
# Refresh a materialized view
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name;
# Drop a view
DROP VIEW [ IF EXISTS ] view_name;
# Drop a materialized view
DROP MATERIALIZED VIEW view_name;
# Rename a view
ALTER VIEW view_name RENAME TO new_name;

18
sheets/pg_top Normal file
View File

@ -0,0 +1,18 @@
# pg_top
# Display and update information about the top cpu PostgreSQL processes
# connect to port 5432 using user postgres, and database, ask for password
pg_top -p 5432 -U postgres -d database -W
# Interactive mode keys:
#
# A
# Display the actual query plan (EXPLAIN ANALYZE)
# E
# Display re-determined execution plan (EXPLAIN) of the SQL statement by a backend process
# L
# Display the currently held locks by a backend process
# Q
# Display the currently running query of a backend process
# X
# Display user index statistics.