Примеры SQL/PSQL запросов в Firebird 2.5

-- ---Добавление таблицы:-----------
CREATE TABLE EMP ( -- Employees
EMPNO integer NOT NULL, --TABEL NUMBER
ENAME varchar(10), -- Surname
JOB varchar (9), -- Position
MGR integer, -- Managers TABEL NUMBER
HIREDATE  DATE, -- Date of hire
SAL double precision, -- Employes salary
DEPTNO integer NOT NULL, -- Department number
CONSTRAINT EMP_PRIMARY_KEY
PRIMARY KEY (EMPNO));
-- ---Добавление столбцов:----------
ALTER TABLE OBJECTS ADD QUANTITY INT NOT NULL;
-- ---Изменение столбцов:-----------
-- ---Удаление столбцов:------------
-- ---Вставка записей:--------------
INSERT INTO t values( NULL, 1, 1 );
INSERT INTO cars (ma_car, model, byyear) VALUES ('Ford', 'T', 1908);
INSERT INTO APPOINTMENTS
(EMPLOYEE_ID, CLIENT_ID, APP_DATE, APP_TIME)
VALUES (973, 8804, DATE 'today' + 2, TIME '16:00');
-- ---Запрос выборки дат:-----------
/* получить по дате номер квартала */
SELECT (EXTRACT(MONTH FROM CURRENT_TIMESTAMP)-1)/3+1
FROM RDB$DATABASE
SELECT * FROM EMP WHERE HIREDATE BETWEEN date '01.01.1992' AND CURRENT_DATE;
-- ---Обновление записей:-----------
UPDATE PEOPLE SET AGECAT = 'Old' WHERE BIRTHDATE < DATE '1-Jan-1943';
UPDATE DEPT SET DNAME='JAP',LOC='Tokio' WHERE DEPT.DEPTNO = 6;
UPDATE employees SET salary = 2.5 * salary WHERE title = 'CEO';
-- ---Удаление записей:-------------
DELETE FROM TOWNS T WHERE T.TNAME='Kiyv';
-- ---Удаление таблиц: -------------
DROP TABLE COUNTRY;
-- ---Создание индекса:-------------
ALTER TABLE COUNTRY ADD CONSTRAINT PK_COUNTRY PRIMARY KEY (ID);
ALTER TABLE EMP ADD CONSTRAINT EMP_FOREIGN_KEY
FOREIGN KEY (DEPTNO)
REFERENCES DEPT (DEPTNO);
-- ---Включение и отключение индекса:---
ALTER INDEX IDX_UPDATER INACTIVE;
ALTER INDEX IDX_UPDATER ACTIVE;   
-- ---Удаление индексов:------------
DROP INDEX indexname;
-- ---Создание представлений:-------
CREATE VIEW PRICE_WITH_MARKUP AS
SELECT
  CODE_PRICE,
  COST,
  COST * 1.1 AS COST_WITH_MARKUP
FROM PRICE;
-- ---Удаление представлений:-------
DROP VIEW PRICE_WITH_MARKUP;
-- ---Создание триггера:-------------
CREATE TRIGGER TR_CUST_LOG
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 10
ON CUSTOMER
AS
BEGIN
  INSERT INTO CHANGE_LOG (LOG_ID,
                          ID_TABLE,
                          TABLE_NAME,
                          MUTATION)
  VALUES (NEXT VALUE FOR SEQ_CHANGE_LOG,
          OLD.CUST_NO,
          'CUSTOMER',
          CASE
            WHEN INSERTING THEN 'INSERT'
            WHEN UPDATING  THEN 'UPDATE'
            WHEN DELETING  THEN 'DELETE'
          END);
END
-- ---Триггер для логирования доступа:---
CREATE TRIGGER tr_log_connect
INACTIVE ON CONNECT POSITION 0
AS
BEGIN
  INSERT INTO LOG_CONNECT (ID,
                           USERNAME,
                           ATIME)
  VALUES (NEXT VALUE FOR SEQ_LOG_CONNECT,
          CURRENT_USER,
          CURRENT_TIMESTAMP);
END
-- ---Изменение триггера:----------------
ALTER TRIGGER tr_log_connect
ACTIVE POSITION 1
AS
BEGIN
  INSERT INTO LOG_CONNECT (ID,
                           USERNAME,
                           ROLENAME,
                           ATIME)
  VALUES (NEXT VALUE FOR SEQ_LOG_CONNECT,
          CURRENT_USER,
          CURRENT_ROLE,
          CURRENT_TIMESTAMP);
END
-- ---отключение триггера:---------------
ALTER TRIGGER set_cust_no INACTIVE;
-- ---Удаление триггера:-----------------
DROP TRIGGER set_cust_no;
-- ---

Комментариев нет :

Отправить комментарий

Благодарю за ваше участие!