Ein Schema ist für den praktischen Betrieb von besonderer Bedeutung. Das Schema namens 'public' steht allen zur Verfügung und wird in der Regel zum Anlegen von Tabellen verwendet:
test=# CREATE TABLE t_lied (id serial, name text); NOTICE: CREATE TABLE will create implicit sequence "t_lied_id_seq" for serial column "t_lied.id" CREATE TABLE test=# SELECT * FROM public.t_lied; id | name ----+------ (0 rows)
Wie Sie sehen können, landet die Tabelle im Public-Schema. Darauf sollten Sie sich aber nicht verlassen: Die Variable search_path gibt an, wo Tabellen gesucht respektive gespeichert werden sollen:
test=# SHOW search_path; search_path -------------- $user,public (1 row)
Defaultmäßig landet eine Tabelle in einem Schema, das den gleichen Namen wie der Benutzer selbst trägt - nur, wenn dieses Schema nicht vorhanden ist, wird das Public-Schema herangezogen.
Wollen Sie dieses Verhalten für Ihre aktuelle Connection modifizieren, können Sie das Kommando Set verwenden:
test=# \h SET
Command: SET
Description: change a run-time parameter
Syntax:
SET [ SESSION | LOCAL ] name { TO | = } { value | 'value' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }
Wollen Sie das Verhalten global modifizieren, müssen Sie in postgresql.conf eingreifen aber dazu im Kapitel über Datenbankadministration mehr.