Операторы определения данных (Data Definition Language, DDL)
CREATE - создать:
- DATABASE - Базу данных (указываем наименование БД);
USER - Пользователь (имя, права, группа/роль);
CREATE DATABASE <dbname>; -- создаем базу данных (с опр кодировкой: WITH ENCODING = 'UNICODE') USE DATABASE <dbname>; -- переходим к работе с созданной БД (м.б. просто DATABASE <dbname>) CREATE USER <username> WITH PASSWORD <pswd>; -- создаем пользователя GRANT ALL PRIVILEGES ON DATABASE <dbname> TO <username>; -- даем все права на созданную базу данных -- подключение к PostgreSQL: psql -h <hostname> -p 5432 -U <username> -W;
TABLE - Таблицу (указываем наименование таблицы и множество атрибутов: наименование, тип данных или домен (SERIAL, INT, CHAR, VARCHAR, DATE, BLOB и др.), ограничения (NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, EXISTS и др.);
CREATE TABLE IF NOT EXISTS tabgroup ( tabgroup_col_pk_id SERIAL PRIMARY KEY, -- первичный ключ, связан внешним ключем tabname tabgroup_col_title CHAR(20) UNIQUE NOT NULL ); CREATE TABLE IF NOT EXISTS tabname ( -- создать таблицу, если она отсутствует tabname_col_pk_id SERIAL PRIMARY KEY, -- указываем первичный ключ (при необходимости) -- PRIMARY KEY (a, c) для нескольких атрибутов tabname_col_title CHAR(20) UNIQUE NOT NULL, -- строка символов фикс. tabname_col_descript VARCHAR(255), -- строка символов изм. tabname_col_dec DECIMAL(18,2) NOT NULL, -- десятичные дроби tabname_col_txt TEXT, -- текст tabname_col_numb INT, -- целые числа tabgroup_col_fk_id SERIAL REFERENCES tabgroup (tabgroup_col_pk_id) -- внешний ключ (ссылка на первичный ключ другой таблицы) -- в данном случае будет отношение многие к одному, если сделать поле UNIQUE, то отношение один к одному -- для отношения многие ко многим следует дополнительно создать связующую таблицу );
VIEW - представление/снимок;
CREATE VIEW <viewname> AS SELECT column#1, column#2 -- создать снимок данных из таблицы, данные не извлекаются, отсутствует необходимость в дополнительном месте FROM tablename WHERE id<120;
INDEX - индекс/указатель;
CREATE UNIQUE INDEX <index_name> ON tablename(column); -- создать указатель/индекс для ускорения поиска ALTER INDEX <index_name> TO CLUSTER; -- упорядочить по индексу
TRIGGER - триггер;
STORED PROCEDURE - хранимую процедуру;
ALTER - изменить определенную сущность;
- ADD
- ALTER/MODIFY
- DROP
ALTER TABLE tabname
ADD description VARCHAR(255), -- в MySQL есть операторы AFTER/BEFORE и ADD CONSTRAINT
ALTER tabname_col_dec TYPE DECIMAL(20,4), -- в MYSQL исп. MODIFY
DROP IF EXISTS tabname_col_txt;
ALTER VIEW <viewname> RENAME TO <newviewname>;
- DROP - удаляет объекты БД.
DROP DATABASE dbname;
DROP USER username;
DROP TABLE IF EXISTS tabname;
DROP VIEW IF EXISTS lastview;