PostgreSQL quick reference
PostgreSQL 7 manual:
Using PostgreSQL from PHP
postgresql is case sensitive when doing string comparisons
Use the correct case in your query. (i.e. WHERE lname='Smith') Use a conversion function, like lower() to search. (i.e. WHERE lower(lname)='smith') Use a case-insensitive operator, like ILIKE or *~
Creating a database
createdb mydatabase1 -U postgres //(will ask password for user postgres)
Using the Database
psql mydatabase1 postgres
Delete a Database
destroydb mydatabase1
Basic Sql Examples
CREATING A TABLE: ----------------- CREATE TABLE CUSTOMER ( CUSTOMER_ID serial, CUSTOMER_NAME varchar(100), PRIMARY KEY (CUSTOMER_ID) );
PostgreSQL table inheritance
INHERITANCE of tables !!
--------------------------
CREATE TABLE cities (
name text,
population float,
altitude int -- (in ft)
);
CREATE TABLE capitals (
state char2
) INHERITS (cities);
Primary keys
- PRIMARY KEY is the same as UNIQUE and not NULL, for example:
CREATE TABLE products (
product_no integer UNIQUE NOT NULL,
name text,
price numeric
);
CREATE TABLE products (
product_no integer PRIMARY KEY,
name text,
price numeric
);
- Primary keys can also constrain more than one column; the syntax is similar to
unique constraints:
CREATE TABLE example (
a integer,
b integer,
c integer,
PRIMARY KEY (a, c)
);
CREATE TABLE CUSTOMER (
CUSTOMER_ID serial,
CUSTOMER_NAME varchar(100),
PRIMARY KEY (CUSTOMER_ID)
);
Basic Commands
Many commands inside psql begin with \ , example \h for help \g to execute a query. ; at the end would also work. \i to read from a file. ie: # \i filename \q to exit show all databases ------------------- \l show all database show all tables ---------------- \dt show all the tables \di list indexes \dv list views show all fields of a table --------------------------- \d customer OR the query below SELECT a.attnum, a.attname AS field, t.typname AS type, a.attlen AS length, a.atttypmod AS lengthvar, a.attnotnull AS notnull FROM pg_class c, pg_attribute a, pg_type t WHERE c.relname = 'customer' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid ORDER BY a.attnum;
Primary keys
postgresql uses '' to quote strings, not "" The quotations are used to quote system identifiers(table, database and column names) example: WHERE "last_name" = 'Smith'
Additional features of Postgresql
views procedural languages triggers customizable aggregates transactions
Views
-- || is for concatenation CREATE VIEW staff_having_goals AS SELECT staffid, firstname || lastname as fullname FROM Staff WHERE datefired ISNULL and seniorstaff = TRUE ORDER BY lastname, firstname
Autoincrement columns
For sequences we can use a sequence to create a column that increments automatically
1. Create the sequence
CREATE SEQUENCE TEST1_SEQUENCE INCREMENT 1 START 5;
2. The table will use the sequence next value as a default value
CREATE TABLE TEST1(
TEST1_ID int not null default nextval('TEST1_SEQUENCE'),
TEST1_NAME varchar(120) default '',
primary key( TEST1_ID )
);