Читать книгу Разработка и проектирование СУБД - Валерий Федорович Альмухаметов - Страница 2
СУБД «ПРЕДПРИЯТИЕ»
ОглавлениеСоздать на рабочем диске, например, D: папку, например, с именем Otdel, которая будет содержать файлы базы данных. Используя окно команд СУБД печатать программный код, представленный ниже. Если оператор переносится частично в следующую строку, то необходимо добавлять точку с запятой.
1.Создание базы данных и таблиц
Создание CREATE и удаление DROP.
Например:
CREATE DATABASE ‘d:\otdel\otdel’
CREATE TABLE d:\otdel\tem (id_tem INT PRIMARY KEY,;
nazv CHAR(10) NOT NULL)
CREATE TABLE d:\otdel\sot (id_sot INT PRIMARY KEY,;
dol CHAR(15) NOT NULL, okl CURRENCY, id_tem INT)
CREATE TABLE d:\otdel\dog (suma CURRENCY NOT NULL,;
Dat_b DATE, Dat_e DATE, id_tem INT,;
FOREIGN KEY id_tem TAG id_tem REFERENCES tem)
Первичный ключ таблицы TEM Id_tem, является вторичным таблицы DOG. В таблице SOT первичным является Id_sot.
Так как мы не соединили таблицу SOT по полю Id_tem с таблицей TEM, то, для примера удалим ее и создадим вновь, полю Id_sot присвоим вместо первичного ключ уникальный.
DROP TABLE sot 'd:\otdel' RECYCLE
CREATE TABLE d:\otdel\sot (id_sot INT UNIQUE NOT NULL,;
dol CHAR(15) NOT NULL, okl CURRENCY, id_tem INT,;
FOREIGN KEY id_tem TAG id_tem REFERENCES tem)
Элементы столбца NOT NULL должны иметь не пустое значение. UNIQUE – значение каждого элемента должно быть уникальным. PRIMARY KEY – является первичным ключом. REFERNECES столбец является внешним ключом и указывает на ключ какой таблицы он ссылается.
2.Заполнение таблиц базы данных
Для того чтобы добавить столбец в таблицу, используется оператор ALTER с добавкой ADD:
ALTER TABLE d:\otdel\tem ADD COLUMN kod INT NOT NULL
Чтобы удалить столбец из таблицы, используется оператор ALTER с добавкой DROP:
ALTER TABLE d:\otdel\tem DROP COLUMN kod
Добавим в созданные таблицы записи.
Заполнить данными таблицу Sot:
INSERT INTO d:\otdel\tem (id_tem, nazv) VALUES (1, "Proekt1")
INSERT INTO d:\otdel\tem (id_tem, nazv) VALUES (2, "Proekt2")
INSERT INTO d:\otdel\sot (id_sot,dol,okl,id_tem);
VALUES(1,'sotr',5000,1)
и повторить для других строк таблицы Sot:
(2,'sotr',5000,2)
(3,'sotr',6000,1)
(4,'sotr',4000,2)
(5,'sotr',3000,1)
(6,'sotr',2500,2)
Заполнить данными таблицу Dog:
INSERT INTO d:\otdel\dog (suma,dat_b,dat_e,id_tem);
VALUES(500000,{01/01/07},{01/01/09},1)
INSERT INTO d:\otdel\dog (suma,dat_b,dat_e,id_tem);
VALUES(400000,{01/01/08},{01/01/09},2)
INSERT INTO d:\otdel\dog (suma,dat_b,dat_e,id_tem);
VALUES(0,{01/01/08},{01/01/09},2)
При добавлении данных в таблицы можно использовать вычисления, например, добавим в таблицу столбец и вычислим период действия договора в количестве месяцев:
ALTER TABLE d:\otdel\dog ADD COLUMN period float
INSERT INTO d:\otdel\dog (suma, dat_b, dat_e, id_tem, period);
VALUES(0,{01/01/08},{03/03/09},2,(dog.dat_e-dog.dat_b)/30.5)
3.Модификация данных
Изменим в таблице Sot записи:
UPDATE d:\otdel\sot SET okl = okl*2 WHERE (id_sot = 6);
OR (okl BETWEEN 2500.0000 AND 3500.0000)
Удалим из таблицы Dog лишнюю запись:
DELETE FROM d:\otdel\dog WHERE suma = 0.0000
CLEAR
PACK
DELETE помечает выбранные записи на удаление. CLEAR удаляет выбранные записи. PACK обновляет таблицу.
4.Выборка данных
Для извлечения записей из таблиц в SQL определен оператор SELECT.
В SQL также определены функции. Среди них:
AVG(<имя поля>) – среднее по значениям данного поля;
COUNT(<имя поля>) или COUNT (*) – число записей;
MAX(<имя поля>) – максимальное из значений поля;
MIN(<имя поля>) – минимальное из значений поля;
SUM(<имя поля>) – сумма значений поля.
Группировка данных в операторе SELECT осуществляется с помощью ключевого слова GROUP BY и ключевого слова HAVING, с помощью которого задаются условия разбиения записей на группы. Для сортировки данных, получаемых при помощи оператора SELECT, служит ключевое слово ORDER BY.
Выполним запрос с вычислениями:
SELECT id_tem AS код_темы, suma AS сумма,;
(dat_e-dat_b)/30.5 AS период FROM dog
5. Создание представлений
Представления таблиц создается с помощью оператора SELECT. После создания представления с полученным набором данных можно обращаться как с таблицей.
Создадим представление для подсчета рабочего периода в количестве месяцев по договорам:
CREATE VIEW Period AS SELECT id_tem AS Tema,;
suma AS Cymma, (dat_e-dat_b)/30.5 AS Period FROM dog
Создадим представление для подсчета суммы выделяемой на заработную плату за весь период и суммы налога на заработную плату по темам:
CREATE VIEW Zarplata AS SELECT id_tem AS Tema,;
cymma as cymma,sum(okl)*period AS Zarp,;
sum(okl)*period*0.36 AS Nalog FROM sot,period;
WHERE sot.id_tem=period.Tema GROUP BY id_tem
Создадим представление для подсчета остатка суммы по темам:
CREATE VIEW Ostatok AS SELECT tema AS Tema, ;
suma AS symma,suma-zarp-nalog AS ostatok;
FROM zarplata,dog;
WHERE dog.id_tem=zarplata1.Tema GROUP BY Tema