Операторы определения данных (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;

results matching ""

    No results matching ""