V. SQL-код и запросы для работы с базой данных
SQL — «язык структурированных запросов») —универсальныйкомпьютерный язык, применяемый для создания, модификации и управления данными вреляционных базах данных. SQL основывается наисчислении кортежей.
Изначально, SQL был основным способом работы пользователя с базой данныхи позволял выполнять следующий набор операций:
· создание в базе данных новой таблицы;
· добавление в таблицу новых записей;
· изменение записей;
· удаление записей;
· выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);
· изменение структур таблиц.
Со временем, SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.
При всех своих изменениях, SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время, современные СУБД, а, также, информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов.
Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов:
· запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);
· запросы на получение данных;
· запросы на добавление новых данных (записей)
· запросы на удаление данных;
· обращения к СУБД.
Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы— это операции над таблицами. В соответствии с этим, запросы делятся на
· запросы, оперирующие самими таблицами (создание и изменение таблиц);
· запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.
Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием
· типа хранимых в каждом поле значений;
· связей между таблицами (задание первичных и вторичных ключей);
· информации, необходимой для построения индексов.
Запросы первого типа, в свою очередь, делятся на запросы, предназначенные для создания в базе данных новых таблиц, и на запросы, предназначенные для изменения уже существующих таблиц. Запросы второго типа оперируют со строками, и их можно разделить на запросы следующего вида:
· вставка новой строки;
· изменение значений полей строки или набора строк;
· удаление строки или набора строк.
Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:
· просмотреть полученный набор;
· изменить все записи набора;
· удалить все записи набора.
Таким образом, использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.
Постоим запросы для нашей базы данных.
При работе с базой данных «Антикварный магазин» может понадобиться выборочная информация. Предположим, что нам необходимо вывесит информацию о договоре, номер которого равен 234.Тогда запрос на SQL – коде будет выглядеть следующим образом:
Select "ДОГОВОР".* From "ДОГОВОР" where ID_CONTRACT=234;
Результат запроса:
Рисунок 3 . Визуализациязапроса.
В случае форс-мажорных обстоятельствах – банкротства или грабежа, необходимо было знать сумму всех товаров в магазине, поэтому организуем следующий запрос: « Вывести сумму цен всех товаров в магазине».SQL – коде будет выглядеть следующим образом:
SELECT SUM("ТОВАР".PRICE ) SUM_OF_PRICE FROM "ТОВАР";
Результат запроса:
Рисунок 4. Визуализациязапроса.
Дляучета товара необходимо знать всю информацию о нем, наименование при этом должны сортироваться в алфавитном порядке:
select * from "ТОВАР" order by NAME_PRODUCTA ASC ;
Результат запроса:
Рисунок 5. Визуализациязапроса.
При заключении договора, сотрудник может посмотреть в базе данных информацию о покупателе, чтобы уменьшить время заключения договора на продажу товара. Предположим, что фамилия клиента начинается на букву «С»:
select "ПОКУПАТЕЛЬ".surnamefrom "ПОКУПАТЕЛЬ" whereSURNAMElike 'С%';
Результат запроса:
Рисунок 6. Визуализациязапроса.
В магазин иногда обращаются покупатели, которых не устраивает качество товара. Покупатель Светлана обратилась в магазин с претензией о ненадлежащем качестве товара и попросила вернуть ей стоимость товара - 20500. После принятие данной претензии мы составили акт возврата товара, в котором необходимо указать номер поставщика. Тогда запрос на SQL – коде будет выглядеть следующим образом:
select "ТОВАР".ID_SUPPLIER from "ТОВАР", "ПОКУПАТЕЛЬ" where "ТОВАР".price=20500 AND "ПОКУПАТЕЛЬ".NAME='СВЕТЛАНА';
Результат запроса:
Рисунок 7. Визуализациязапроса.
Часто в магазин обращаются покупатели, которые хотят приобрести товар в пределах определенной стоимости. Предположим, что диапазон цены находится от 100 до 10000 тысяч рублей. SQL – коде будет выглядеть следующим образом:
selectdistinct "ТОВАР".* FROM "ТОВАР" where "ТОВАР".PRICE between 100 and 10000;
Результат запроса:
Рисунок 8.Визуализациязапроса.
В любом магазине существует система премирования персонала. Премию получают сотрудники, которые оформляли заказы. Бухгалтерии необходимы списки сотрудников, которые в данном квартале не получат премию, то есть продавцов, которые не оформили ни одного заказа. Тогда запрос будет выглядеть таким образом:
select "СОТРУДНИКИ".* from "ДОГОВОР", "СОТРУДНИКИ" where "СОТРУДНИКИ".ID_EMPLOYEE notin (select "ДОГОВОР".ID_EMPLOYEE FROM "ДОГОВОР");
Результат запроса:
Рисунок 9.Визуализациязапроса.
Контактна информация в таблице «ПОКУПАТЕЛЬ» стала неактуальной, следовательно ее нужно удалить. Напишем следующий запрос:
ALTER TABLE "ПОКУПАТЕЛЬ" DROP CONTACT_INFORMATION;
Результат запроса:
Рисунок 10.Визуализациязапроса.
Для составления докладной нам необходим перечень поставщиков, которые доставляют больше одного товара. Тогда запрос на SQL – коде будет выглядеть следующим образом:
selectTITLEfrom "ПОСТАВЩИК" where 1<(selectcount(*) from "ТОВАР"
where "ПОСТАВЩИК".ID_SUPPLIER="ТОВАР".ID_SUPPLIER);
Результат запроса:
Рисунок 11.Визуализациязапроса.
Магазин существует 5000 дней. Премию получают сотрудники,заключившие договора на сумму 5000. Бухгалтерии необходимы списки сотрудников, которые в данном квартале заключили договора на эту сумму. Тогда запрос будет выглядеть таким образом:
selectdistinctSURNAMEfrom "СОТРУДНИКИ", "ДОГОВОР" where
500000<( select sum(PRICE) from "ТОВАР" where "СОТРУДНИКИ".ID_EMPLOYEE="ДОГОВОР".ID_EMPLOYEE
and "ДОГОВОР".ID_PRODUCT="ТОВАР".ID_PRODUCT group by ID_PRODUCT) ;
Результат запроса:
Рисунок 12.Визуализациязапроса.
Составить ведомость о продаже товара на данный момент, а именно вывести информацию о том какой товар заказал каждый покупатель:
selectdistinct "ПОКУПАТЕЛЬ".surname, "ТОВАР".name_productafrom "ТОВАР", "ПОКУПАТЕЛЬ", "ДОГОВОР"
where "ДОГОВОР".id_buyer="ПОКУПАТЕЛЬ".id_buyer AND "ТОВАР".id_product="ДОГОВОР".id_product;
Результат запроса:
Рисунок 13.Визуализациязапроса.
Заключение
В результате выполнения курсовой работы были выполнены все поставленные цели, была разработана база данных для антикварного магазина и изучены основные разделы реляционных баз данных, освоены методы проектирования баз данных и работы с базами данных в среде конкретной СУБД (ibExpert).
Список использованной литературы:
1. Дейт К. Дж. Введение в системы баз данных;
2. ПoлУилтoн, ДжoнКoлби, «Ввeдeниe в SQL», 2006г.
3. Хомоненко А.Д. Работа с базами данных в DELPHI, 3-е издание // А.Д. Хомоненко, В.Э. Гофман – СПб.: БХВ-Петербург 2005, – 623 с.
4. Хомоненко А.Д. Базы данных // А.Д. Хомоненко– СПб.: Корона-Принт 2004.
5. Microsoft Access 2002 Шаг за Шагом// - Москва – Эком 2002.
ПриложениеА
(справочное)
1. Создание таблицы «Товар»:
CREATE TABLE "ТОВАР" (
"ID_PRODUCT" INTEGER NOT NULL,
"NAME_PRODUCTA" CHAR(40),
"PRESENCE" CHAR(10),
"PHOTO" BLOB SUB_TYPE 0 SEGMENT SIZE 10000,
"TYPE_PRODUCT" CHAR(10),
"PRICE" INTEGER,
"ID_SUPPLIER" INTEGER);
2. Создание первичного ключа для таблицы «Товар»:
alter table "ТОВАР"
add constraint "PK_ТОВАР"
primarykey ("ID_PRODUCT");
3. Создание таблицы «Покупатель»:
CREATE TABLE "ПОКУПАТЕЛЬ" (
"ID_BUYER" INTEGER NOT NULL,
"SURNAME" CHAR(60),
"NAME" CHAR(60),
"PATRONOMIC" CHAR(60),
"CONTACT_INFORMATION" CHAR (30));
4. Создание первичного ключа для таблицы «Покупатель»:
alter table "ПОКУПАТЕЛЬ"
add constraint "PK_ПОКУПАТЕЛЬ"
primarykey ("ID_BUYER");
5. Создание таблицы «Договор»:
CREATE TABLE "ДОГОВОР" (
"ID_CONTRACT" INTEGER NOT NULL,
"DATA_OF_WRITING" DATE,
"DATA_OF_PERFORMANCE" DATE,
"ID_BUYER" INTEGER,
"ID_PRODUCT" INTEGER,
"ID_EMPLOYEE" INTEGER);
6. Создание первичного ключа для таблицы «Договор»:
alter table "ДОГОВОР"
add constraint "PK_ДОГОВОР"
primarykey ("ID_CONTRACT");
7. Создание таблицы «Сотрудники»:
CREATE TABLE "СОТРУДНИКИ" (
"ID_EMPLOYEE" INTEGER NOT NULL,
"SURNAME" CHAR(40),
"NAME" CHAR(40),
"PATRONOMIC" CHAR(40),
"POST" CHAR(40),
"CONTACT_INFORMATION" CHAR(30));
8. Создание первичного ключа для таблицы «Сотрудники»:
alter table "СОТРУДНИКИ"
add constraint "PK_СОТРУДНИКИ"
primarykey ("ID_EMPLOYEE");
9. Создание таблицы «Группа товара»:
CREATE TABLE "ГРУППАТОВАРА" (
"TYPE_PRODUCT" CHAR(20) NOT NULL,
"CHARACTERISTICS" CHAR(10000));
10. Создание первичного ключа для таблицы «Группа товара»:
alter table "ГРУППАТОВАРА"
add constraint "PK_ГРУППАТОВАРА"
primary key ("TYPE_PRODUCT");
11. Создание таблицы «Поставщик»:
CREATE TABLE "ПОСТАВЩИК" (
"ID_SUPPLIER" INTEGER NOT NULL,
"TITLE" CHAR(40),
"ADDRESS" CHAR(40),
"CONTACT_INFORMATION" CHAR(40));
12. Создание первичного ключа для таблицы «Поставщик»:
alter table "ПОСТАВЩИК"
add constraint "PK_ПОСТАВЩИК"
primarykey ("ID_SUPPLIER");
13. Заполнение данными таблицы «Товар»:
insertinto "ТОВАР" values (10, 'ЛАМПА_ОСОБАЯ', 'ДА', 'C:\Users\Светлана\Desktop\10.jpg', 'ЛАМПЫ', 20500, 244);
insertinto "ТОВАР" values (11, 'КОРОНА_ЦАРСКАЯ', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\11.jpg', 'ШЛЯПЫ', 505000, 245);
insertinto "ТОВАР" values (12, 'ШАПКА_НЕОБЫКНОВЕННАЯ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\12.jpg', 'ШЛЯПЫ', 10002, 245);
insertinto "ТОВАР" values (13, 'ЗУБ_ДРАКОНА', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\13.jpg', 'СУВЕНИРЫ', 8709, 246);
insertinto "ТОВАР" values (14, 'КОВЕР_С_УЗОРАМИ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\14.jpg', 'ЭКСКЛЮЗИВ', 5000, 247);
insertinto "ТОВАР" values (15, 'СТАКАН_ИМПЕРАТОРА', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\15.jpg', 'ПОСУДА', 500, 248);
insertinto "ТОВАР" values (15, 'СТАКАН_ИМПЕРАТОРА', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\15.jpg', 'ПОСУДА', 500, 248);
insertinto "ТОВАР" values (17, 'УЛИЧНЫЙ_ФОНАРЬ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\17.jpg', 'ЛАМПЫ', 20000, 244);
insertinto "ТОВАР" values (18, 'КНИГА_РУКОПИСНАЯ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\18.jpg', 'КНИГИ', 50305, 250);
insertinto "ТОВАР" values (19, 'ХАЛАТ_ФАРАОНА', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\19.jpg', 'ЭКСКЛЮЗИВ', 50305, 247);
insertinto "ТОВАР" values (20, 'ТАРЕЛКА_ЦАРСКАЯ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\20.jpg', 'ПОСУДА', 508007, 248);
14. Заполнение данными таблицы «Покупатель»:
insertinto "ПОКУПАТЕЛЬ" values (1, 'СОКУР', 'СВЕТЛАНА', 'ВЯЧЕСЛАВОВНА', '40-55-31');
insertinto "ПОКУПАТЕЛЬ" values (2, 'БЫЧКОВА', 'АНАСТАСИЯ', 'СЕРГЕЕВНА', '78-24-87');
insertinto "ПОКУПАТЕЛЬ" values (3, 'КОНОНОВ', 'НИКИТА', 'СЕРГЕЕВИЧ', '17-78-98');
insertinto "ПОКУПАТЕЛЬ" values (4, 'САРАПКИН', 'АЛЕКСАНДР', 'ВЛАДИМИРОВИЧ', '47-98-71');
insertinto "ПОКУПАТЕЛЬ" values (5, 'ЗУБОРЕВ', 'АЛЕКСАНДР', 'ВЛАДИМИРОВИЧ', '40-55-36');
15. Заполнение данными таблицы «Договор»:
insert into "ДОГОВОР" values (123, '25.11.12', '05.05.13', 1, 15, 21);
insert into "ДОГОВОР" values (234, '26.12.12', '04.05.13', 2, 17, 22);
insert into "ДОГОВОР" values (345, '01.02.13', '14.04.13', 3, 11, 21);
insert into "ДОГОВОР" values (456, '09.03.13', '03.05.13', 4, 13, 22);
insert into "ДОГОВОР" values (567, '10.03.13', '19.05.13', 5, 20, 21);
16. Заполнение данными таблицы «Сотрудники»:
insertinto "СОТРУДНИКИ" values (21, 'СЕМЕНОВ', 'ВАСИЛИЙ', 'АЛЕКСАНДРОВИЧ', 'ПРОДАВЕЦ', '44-87-98');
insertinto "СОТРУДНИКИ" values (22, 'КОЗЛОВСКИЙ', 'НИКОЛАЙ', 'ПЕТРОВИЧ', 'ПРОДАВЕЦ', '44-87-98');
17. Заполнение данными таблицы «Группа товара»:
insertinto "ГРУППА ТОВАРА" values ('ЛАМПЫ', 'осветительные приборы');
insertinto "ГРУППА ТОВАРА" values ('ШЛЯПЫ', 'Головные уборы');
insertinto "ГРУППА ТОВАРА" values ('СУВЕНИРЫ', 'Подарки на память');
insertinto "ГРУППА ТОВАРА" values ('ЭКСКЛЮЗИВ', 'Оригинальные изделия');
insertinto "ГРУППА ТОВАРА" values ('ПОСУДА', 'Набор предметов для еды');
insertinto "ГРУППА ТОВАРА" values ('ЧАСЫ', 'Швейцарские часы');
insertinto "ГРУППА ТОВАРА" values ('КНИГИ', 'Литература и рукописи');
18. Заполнение данными таблицы «Поставщик»:
insertinto "ПОСТАВЩИК" values (244, 'ООО "ТЕРЕЛКИНО"', 'КОМСОМОЛЬСКАЯ 47', '78-74-98');
insertinto "ПОСТАВЩИК" values (245, 'ИП "МИР ШЛЯПОК"', 'САДОВАЯ 8', '18-04-08');
insertinto "ПОСТАВЩИК" values (246, 'ОАО "СУВЕЛАВКА"', 'ФОМИНА 37', '08-64-18');
insertinto "ПОСТАВЩИК" values (247, 'ИП "ЭКСКЛЮЗИ"', 'КОМСОМОЛЬСКАЯ 241', '13-74-38');
insertinto "ПОСТАВЩИК" values (248, 'ООО "МИР ПОСУДЫ"', 'МОПРА 14', '13-15-18');
insertinto "ПОСТАВЩИК" values (249, 'ООО "ПРАЙД"', 'КОМСОМОЛЬСКАЯ 147', '13-74-14');
insertinto "ПОСТАВЩИК" values (250, 'ОАО "РАЗВАЛ"', 'ЛЕНИНО 05', '02-36-56');
19. Запросы в соответствии пункта V:
select "ДОГОВОР".* From "ДОГОВОР" where ID_CONTRACT=234;SELECT SUM( "ТОВАР".PRICE ) SUM_OF_PRICE FROM "ТОВАР";
select * from "ТОВАР" order by NAME_PRODUCTA ASC ;
select "ПОКУПАТЕЛЬ".surname from "ПОКУПАТЕЛЬ" where SURNAME like 'С%';
select "ТОВАР".ID_SUPPLIER from "ТОВАР", "ПОКУПАТЕЛЬ" where "ТОВАР".price=20500 AND "ПОКУПАТЕЛЬ".NAME='СВЕТЛАНА';
select distinct "ТОВАР".* FROM "ТОВАР" where "ТОВАР".PRICE between 100 and 10000;
select "СОТРУДНИКИ".* from "ДОГОВОР", "СОТРУДНИКИ" where "СОТРУДНИКИ".ID_EMPLOYEEnotin (select "ДОГОВОР".ID_EMPLOYEEFROM "ДОГОВОР");
ALTER TABLE "ПОКУПАТЕЛЬ" DROP CONTACT_INFORMATION;
select TITLE from "ПОСТАВЩИК" where 1<(select count(*) from "ТОВАР" where "ПОСТАВЩИК".ID_SUPPLIER="ТОВАР".ID_SUPPLIER);
select distinct SURNAME from "СОТРУДНИКИ", "ДОГОВОР" where
5000=( select sum(PRICE) from "ТОВАР" where "СОТРУДНИКИ".ID_EMPLOYEE="ДОГОВОР".ID_EMPLOYEE and "ДОГОВОР".ID_PRODUCT="ТОВАР".ID_PRODUCT group by ID_PRODUCT) ;
select distinct "ПОКУПАТЕЛЬ".surname, "ТОВАР".name_producta from "ТОВАР", "ПОКУПАТЕЛЬ", "ДОГОВОР" where "ДОГОВОР".id_buyer="ПОКУПАТЕЛЬ".id_buyer AND "ТОВАР".id_product="ДОГОВОР".id_product;
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|