Oracle DB: Пример создания приложения

Материал из sysadm
Перейти к навигации Перейти к поиску

Создание схемы

-- создание владельца схемы
CREATE USER APP_MY IDENTIFIED BY "***pass***"
  DEFAULT TABLESPACE MY_DATA;

-- добавление минимальных прав владельца схемы
GRANT 
  CONNECT,
  CREATE TABLE
TO APP_MY;

-- добавление лимитов на ТП
-- (без определения лимита на ТП пользователь не может добавлять в него данные)
ALTER USER APP_MY
  QUOTA UNLIMITED ON MY_DATA
  QUOTA UNLIMITED ON MY_INDX;

Добавление в схему объектов (выполняется под владельцем схемы)

-- создание таблицы
CREATE TABLE Employees (
  ID        NUMERIC(10) NOT NULL PRIMARY KEY,
  NAME      VARCHAR(20)
);

-- заполнение таблицы
INSERT INTO Employees (id,name) values (1,'Дмитрий');
INSERT INTO Employees (id,name) values (2,'Александр');
INSERT INTO Employees (id,name) values (3,'Павел');
INSERT INTO Employees (id,name) values (4,'Михаил');
INSERT INTO Employees (id,name) values (5,'Сергей');
INSERT INTO Employees (id,name) values (6,'Денис');

-- создание таблицы
CREATE TABLE Positions (
  ID        NUMERIC(10) NOT NULL PRIMARY KEY,
  POS_NAME  VARCHAR2(50)
);

-- заполнение таблицы
INSERT INTO Positions (id,pos_name) values (1,'Начальник отдела');
INSERT INTO Positions (id,pos_name) values (2,'Зам. начальника отдела');
INSERT INTO Positions (id,pos_name) values (3,'Ведущий инженер');
INSERT INTO Positions (id,pos_name) values (4,'Инженер');

-- добавление поля в таблицу
ALTER TABLE Employees
  ADD POS_ID NUMERIC(10);

-- обновление таблицы
UPDATE Employees SET pos_id = 3 where id=1;
UPDATE Employees SET pos_id = 3 where id=2;
UPDATE Employees SET pos_id = 2 where id=3;
UPDATE Employees SET pos_id = 1 where id=4;
UPDATE Employees SET pos_id = 3 where id=5;
UPDATE Employees SET pos_id = 4 where id=6;

-- добавление ограничения NOT NULL
ALTER TABLE Employees MODIFY (POS_ID NUMERIC(10) NOT NULL);

-- добавление ограничения FOREIGN KEY
ALTER TABLE Employees MODIFY (POS_ID CONSTRAINT emp_posid_fk REFERENCES Positions(id));

-- комбинированный запрос
select a.id,a.name,b.pos_name from Employees a, Positions b where a.pos_id = b.id;

-- проверка объектов и размещения сегментов
select * from user_segments;
select * from user_objects;

-- перенос индексов в другое ТП
alter index SYS_C005945 rebuild tablespace MY_INDX; 
alter index SYS_C005951 rebuild tablespace MY_INDX;