add postgres
This commit is contained in:
parent
3d1627074f
commit
2b5dd3a5ee
1 changed files with 278 additions and 4 deletions
|
@ -5,8 +5,282 @@ repo: https://git.postgresql.org/gitweb/?p=postgresql.git
|
|||
---
|
||||
|
||||
# Postgres
|
||||
PostgreSQL is an advanced, open-source, object-relational database management system. It is renowned for its scalability, reliability, and compliance with the SQL standard. PostgreSQL supports both SQL (relational) and JSON (non-relational) querying, making it highly versatile.
|
||||
|
||||
#wip
|
||||
Postgres database
|
||||
timescaledb
|
||||
https://github.com/pgvector/pgvector
|
||||
## Extensions
|
||||
PostgreSQL can be extended via extensions:
|
||||
- [TimescaleDB](./TimescaleDB.md) - Time-series data
|
||||
- [pgVector](./pgvector.md) - Vector database functions
|
||||
- [PostGIS](./PostGIS.md) - Spatial data
|
||||
|
||||
## psql
|
||||
**psql** is a terminal-based front end to PostgreSQL. It allows users to interact with PostgreSQL databases by executing SQL queries, managing database objects, and performing administrative tasks.
|
||||
|
||||
To start psql, open your terminal or command prompt and type:
|
||||
|
||||
```bash
|
||||
psql
|
||||
```
|
||||
|
||||
### Connecting to a Database
|
||||
You can specify the database name, user, host, and port when launching psql:
|
||||
|
||||
```bash
|
||||
psql -d database_name -U username -h hostname -p port
|
||||
```
|
||||
|
||||
Alternatively, you can use environment variables:
|
||||
|
||||
```bash
|
||||
export PGDATABASE=mydb
|
||||
export PGUSER=myuser
|
||||
export PGPASSWORD=mypassword
|
||||
export PGHOST=localhost
|
||||
export PGPORT=5432
|
||||
|
||||
psql
|
||||
```
|
||||
|
||||
### Listing Databases and Tables
|
||||
|
||||
- **List Databases:**
|
||||
|
||||
```sql
|
||||
\l
|
||||
```
|
||||
|
||||
- **List Tables in the Current Database:**
|
||||
|
||||
```sql
|
||||
\dt
|
||||
```
|
||||
|
||||
- **List All Schemas:**
|
||||
|
||||
```sql
|
||||
\dn
|
||||
```
|
||||
|
||||
### Creating and Dropping Databases/Tables
|
||||
|
||||
- **Create a Database:**
|
||||
|
||||
```sql
|
||||
CREATE DATABASE mydb;
|
||||
```
|
||||
|
||||
- **Drop a Database:**
|
||||
|
||||
```sql
|
||||
DROP DATABASE mydb;
|
||||
```
|
||||
|
||||
- **Create a Table:**
|
||||
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL,
|
||||
email VARCHAR(100) NOT NULL
|
||||
);
|
||||
```
|
||||
|
||||
- **Drop a Table:**
|
||||
|
||||
```sql
|
||||
DROP TABLE users;
|
||||
```
|
||||
|
||||
### Running SQL Queries
|
||||
Execute standard SQL commands to interact with your data.
|
||||
|
||||
**Example: Inserting Data**
|
||||
|
||||
```sql
|
||||
INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');
|
||||
```
|
||||
|
||||
**Example: Querying Data**
|
||||
|
||||
```sql
|
||||
SELECT * FROM users;
|
||||
```
|
||||
|
||||
**Example: Updating Data**
|
||||
|
||||
```sql
|
||||
UPDATE users SET email = 'john.doe@example.com' WHERE username = 'john_doe';
|
||||
```
|
||||
|
||||
**Example: Deleting Data**
|
||||
|
||||
```sql
|
||||
DELETE FROM users WHERE username = 'john_doe';
|
||||
```
|
||||
|
||||
## Meta-Commands
|
||||
psql provides a set of meta-commands (prefixed with `\`) that facilitate various tasks.
|
||||
|
||||
### Common Meta-Commands
|
||||
|
||||
- **Help on Meta-Commands:**
|
||||
|
||||
```sql
|
||||
\?
|
||||
```
|
||||
|
||||
- **Help on SQL Commands:**
|
||||
|
||||
```sql
|
||||
\h
|
||||
```
|
||||
|
||||
- **Describe a Table:**
|
||||
|
||||
```sql
|
||||
\d table_name
|
||||
```
|
||||
|
||||
- **List All Tables, Views, and Sequences:**
|
||||
|
||||
```sql
|
||||
\dt
|
||||
```
|
||||
|
||||
- **List All Indexes:**
|
||||
|
||||
```sql
|
||||
\di
|
||||
```
|
||||
|
||||
- **Exit psql:**
|
||||
|
||||
```sql
|
||||
\q
|
||||
```
|
||||
|
||||
## Data Types
|
||||
### 1. **Numeric Types**
|
||||
- **Small Integer Types**
|
||||
- `SMALLINT` (2 bytes): Range from -32,768 to +32,767
|
||||
- **Integer Types**
|
||||
- `INTEGER` or `INT` (4 bytes): Range from -2,147,483,648 to +2,147,483,647
|
||||
- **Big Integer Types**
|
||||
- `BIGINT` (8 bytes): Range from -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807
|
||||
- **Decimal/Exact Types**
|
||||
- `DECIMAL` or `NUMERIC` (variable size): User-defined precision and scale
|
||||
- **Floating-Point Types**
|
||||
- `REAL` (4 bytes): Single precision floating-point number
|
||||
- `DOUBLE PRECISION` (8 bytes): Double precision floating-point number
|
||||
- **Serial Types (Auto-Incrementing)**
|
||||
- `SERIAL` (4 bytes): Auto-incrementing integer (small range)
|
||||
- `BIGSERIAL` (8 bytes): Auto-incrementing integer (large range)
|
||||
- `SMALLSERIAL` (2 bytes): Auto-incrementing integer (smaller range)
|
||||
|
||||
### 2. **Monetary Type**
|
||||
- `MONEY`: Stores currency amounts with a fixed fractional precision
|
||||
|
||||
### 3. **Character Types**
|
||||
- **Fixed-Length Strings**
|
||||
- `CHAR(n)` or `CHARACTER(n)`: Fixed length (padded with spaces)
|
||||
- **Variable-Length Strings**
|
||||
- `VARCHAR(n)` or `CHARACTER VARYING(n)`: Variable length with a limit
|
||||
- **Text**
|
||||
- `TEXT`: Variable length with no specific limit
|
||||
|
||||
### 4. **Binary Data Types**
|
||||
- **Binary Large Object**
|
||||
- `BYTEA`: Stores binary strings (byte arrays)
|
||||
|
||||
### 5. **Date/Time Types**
|
||||
- **Date and Time**
|
||||
- `DATE`: Calendar date (year, month, day)
|
||||
- `TIME` (no time zone): Time of day (without time zone)
|
||||
- `TIMETZ` (with time zone): Time of day (with time zone)
|
||||
- `TIMESTAMP` (no time zone): Date and time without time zone
|
||||
- `TIMESTAMPTZ` (with time zone): Date and time with time zone
|
||||
- **Intervals**
|
||||
- `INTERVAL`: Time span (e.g., days, months, hours)
|
||||
|
||||
### 6. **Boolean Type**
|
||||
- `BOOLEAN`: Stores `TRUE`, `FALSE`, or `NULL`
|
||||
|
||||
### 7. **UUID Type**
|
||||
- `UUID`: Stores Universally Unique Identifiers (128-bit values)
|
||||
|
||||
### 8. **Enumerated Types**
|
||||
- `ENUM`: User-defined enumerated type (a static set of values)
|
||||
|
||||
### 9. **Geometric Types**
|
||||
- `POINT`: Stores a geometric point (x, y)
|
||||
- `LINE`: Infinite line
|
||||
- `LSEG`: Line segment
|
||||
- `BOX`: Rectangular box
|
||||
- `PATH`: Geometric path (multiple points)
|
||||
- `POLYGON`: Closed geometric figure
|
||||
- `CIRCLE`: Circle
|
||||
|
||||
### 10. **Network Address Types**
|
||||
- `CIDR`: IPv4 or IPv6 network block
|
||||
- `INET`: IPv4 or IPv6 address
|
||||
- `MACADDR`: MAC address
|
||||
- `MACADDR8`: MAC address (EUI-64 format)
|
||||
|
||||
### 11. **Bit String Types**
|
||||
- **Fixed-Length Bit Strings**
|
||||
- `BIT(n)`: Fixed-length bit string
|
||||
- **Variable-Length Bit Strings**
|
||||
- `BIT VARYING(n)`: Variable-length bit string
|
||||
|
||||
### 12. **Text Search Types**
|
||||
- `TSVECTOR`: Text search document
|
||||
- `TSQUERY`: Text search query
|
||||
|
||||
### 13. **JSON Types**
|
||||
- `JSON`: Textual JSON data
|
||||
- `JSONB`: Binary JSON data (more efficient for indexing)
|
||||
|
||||
### 14. **Array Types**
|
||||
- `ARRAY`: Allows any data type to be stored as an array (e.g., `INTEGER[]`, `TEXT[]`)
|
||||
|
||||
### 15. **Range Types**
|
||||
- `INT4RANGE`: Range of `INTEGER`
|
||||
- `INT8RANGE`: Range of `BIGINT`
|
||||
- `NUMRANGE`: Range of `NUMERIC`
|
||||
- `TSRANGE`: Range of `TIMESTAMP WITHOUT TIME ZONE`
|
||||
- `TSTZRANGE`: Range of `TIMESTAMP WITH TIME ZONE`
|
||||
- `DATERANGE`: Range of `DATE`
|
||||
|
||||
### 16. **Composite Types**
|
||||
- User-defined types that consist of multiple fields of various types
|
||||
|
||||
### 17. **Object Identifier Types (OID)**
|
||||
- `OID`: Object identifier (used internally by PostgreSQL)
|
||||
- `REGCLASS`, `REGPROC`, `REGTYPE`: Special types for referencing classes, procedures, and types by OID or name
|
||||
|
||||
### 18. **Pseudo-Types**
|
||||
- `ANY`: Accepts any data type
|
||||
- `ANYARRAY`: Accepts any array data type
|
||||
- `ANYELEMENT`: Represents any type of element
|
||||
- `ANYENUM`: Accepts any `ENUM` type
|
||||
- `ANYNONARRAY`: Any non-array type
|
||||
- `VOID`: No data (used with functions that return no value)
|
||||
- `TRIGGER`: Used in triggers
|
||||
- `LANGUAGE_HANDLER`: Used internally for language support
|
||||
|
||||
## Docker-Compose
|
||||
```yml
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:17
|
||||
container_name: postgres
|
||||
environment:
|
||||
POSTGRES_USER: myuser
|
||||
POSTGRES_PASSWORD: mypassword
|
||||
POSTGRES_DB: mydb
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- ./postgres:/var/lib/postgresql/data
|
||||
restart: always
|
||||
```
|
||||
|
|
Loading…
Add table
Reference in a new issue