В PostgreSQL есть пару отличий от стандарта. Хотя по стандарту все объекты схемы принадлежат владельцу схемы, в PostgreSQL объекты могут принадлежать различным пользователям. Это случается, если им были даны соответствующие права.
Во-вторых, в текущей версии СУБД порядок вложенных команд создания объектов схемы может иметь значение. В качестве вложенных команд могут быть команды создания таблиц, представлений, индексов, последовательностей, триггеров и команды раздачи привилегий. Если перед именем объекта имя схемы не указывается, то используется схема public.
-- создание схемы с объектами-- владельцем схемы и объектов объявляется -- пользователь rootCREATE SCHEMA newchema AUTHORIZATION root create table tblname ( id integer, str varchar(45), constraint pk_tblname primary key (id) ) create view v_tblname as select * from tblname grant select on tblname to public grant select on tblname to public; -- переименование схемыALTER SCHEMA newchema RENAME TO newnama2; -- смена владельца схемыALTER SCHEMA root OWNER TO anyuser; -- уничтожение схемы если в ней нет объектовDROP SCHEMA IF EXISTS newchema; -- уничтожение схемы и всех ее объектовDROP SCHEMA IF EXISTS newchema CASCADE;
Oracle
В Oracle для каждого пользователя автоматически создается одноименная схема с полным доступом. А командаCREATE SCHEME служит лишь для наполнения схемы множеством таблиц, представлений и правами доступами к ним другим пользователям. Ниже приведен пример, как пользователь root за одну команду создает одну таблицу, одно представление и открывает к ним общий доступ.
CREATE SCHEMA AUTHORIZATION root CREATE TABLE tblname ( id integer, str varchar(45), dt date, constraint pk_tblname primary key (id) ) CREATE VIEW v_tblname as select * from tblname GRANT select ON tblname TO public GRANT select ON tblname TO public;
MySQL
В MySQL схема является синонимом отдельной базы данных на сервере и не поддерживает никаких вложенных команд. Единственное что можно указать при ее создании, это используемую кодировку и таблицу сравнения строк. При уничтожении схемы, права пользователей на эту схему не уничтожаются. Если перед именем объекта имя схемы не указывается, то используется схема, указанная при подключении пользователя. Если она не была указана, то выводится сообщение об ошибке. Сменить схему по умолчанию можно командойUSE.
-- создание схемыCREATE SCHEMA IF NOT EXISTS newchema; -- делаем схему newchema-- схемой по умолчанию USE newchema; -- уничтожение схемыDROP SCHEMA IF EXISTS newchema;